1 #ifndef icu4x_Locale_D_HPP 2 #define icu4x_Locale_D_HPP 3 4 #include <stdio.h> 5 #include <stdint.h> 6 #include <stddef.h> 7 #include <stdbool.h> 8 #include <memory> 9 #include <functional> 10 #include <optional> 11 #include "../diplomat_runtime.hpp" 12 13 namespace icu4x { 14 namespace capi { struct Locale; } 15 class Locale; 16 class LocaleParseError; 17 } 18 19 20 namespace icu4x { 21 namespace capi { 22 struct Locale; 23 } // namespace capi 24 } // namespace 25 26 namespace icu4x { 27 class Locale { 28 public: 29 30 inline static diplomat::result<std::unique_ptr<icu4x::Locale>, icu4x::LocaleParseError> from_string(std::string_view name); 31 32 inline static std::unique_ptr<icu4x::Locale> und(); 33 34 inline std::unique_ptr<icu4x::Locale> clone() const; 35 36 inline std::string basename() const; 37 38 inline std::optional<std::string> get_unicode_extension(std::string_view s) const; 39 40 inline std::string language() const; 41 42 inline diplomat::result<std::monostate, icu4x::LocaleParseError> set_language(std::string_view s); 43 44 inline std::optional<std::string> region() const; 45 46 inline diplomat::result<std::monostate, icu4x::LocaleParseError> set_region(std::string_view s); 47 48 inline std::optional<std::string> script() const; 49 50 inline diplomat::result<std::monostate, icu4x::LocaleParseError> set_script(std::string_view s); 51 52 inline static diplomat::result<std::string, icu4x::LocaleParseError> normalize(std::string_view s); 53 54 inline std::string to_string() const; 55 56 inline bool normalizing_eq(std::string_view other) const; 57 58 inline int8_t compare_to_string(std::string_view other) const; 59 60 inline int8_t compare_to(const icu4x::Locale& other) const; 61 62 inline const icu4x::capi::Locale* AsFFI() const; 63 inline icu4x::capi::Locale* AsFFI(); 64 inline static const icu4x::Locale* FromFFI(const icu4x::capi::Locale* ptr); 65 inline static icu4x::Locale* FromFFI(icu4x::capi::Locale* ptr); 66 inline static void operator delete(void* ptr); 67 private: 68 Locale() = delete; 69 Locale(const icu4x::Locale&) = delete; 70 Locale(icu4x::Locale&&) noexcept = delete; 71 Locale operator=(const icu4x::Locale&) = delete; 72 Locale operator=(icu4x::Locale&&) noexcept = delete; 73 static void operator delete[](void*, size_t) = delete; 74 }; 75 76 } // namespace 77 #endif // icu4x_Locale_D_HPP 78