Locale.hpp (10274B)
1 #ifndef icu4x_Locale_HPP 2 #define icu4x_Locale_HPP 3 4 #include "Locale.d.hpp" 5 6 #include <stdio.h> 7 #include <stdint.h> 8 #include <stddef.h> 9 #include <stdbool.h> 10 #include <memory> 11 #include <functional> 12 #include <optional> 13 #include <cstdlib> 14 #include "../diplomat_runtime.hpp" 15 #include "LocaleParseError.hpp" 16 17 18 namespace icu4x { 19 namespace capi { 20 extern "C" { 21 22 typedef struct icu4x_Locale_from_string_mv1_result {union {icu4x::capi::Locale* ok; icu4x::capi::LocaleParseError err;}; bool is_ok;} icu4x_Locale_from_string_mv1_result; 23 icu4x_Locale_from_string_mv1_result icu4x_Locale_from_string_mv1(diplomat::capi::DiplomatStringView name); 24 25 icu4x::capi::Locale* icu4x_Locale_unknown_mv1(void); 26 27 icu4x::capi::Locale* icu4x_Locale_clone_mv1(const icu4x::capi::Locale* self); 28 29 void icu4x_Locale_basename_mv1(const icu4x::capi::Locale* self, diplomat::capi::DiplomatWrite* write); 30 31 typedef struct icu4x_Locale_get_unicode_extension_mv1_result { bool is_ok;} icu4x_Locale_get_unicode_extension_mv1_result; 32 icu4x_Locale_get_unicode_extension_mv1_result icu4x_Locale_get_unicode_extension_mv1(const icu4x::capi::Locale* self, diplomat::capi::DiplomatStringView s, diplomat::capi::DiplomatWrite* write); 33 34 void icu4x_Locale_language_mv1(const icu4x::capi::Locale* self, diplomat::capi::DiplomatWrite* write); 35 36 typedef struct icu4x_Locale_set_language_mv1_result {union { icu4x::capi::LocaleParseError err;}; bool is_ok;} icu4x_Locale_set_language_mv1_result; 37 icu4x_Locale_set_language_mv1_result icu4x_Locale_set_language_mv1(icu4x::capi::Locale* self, diplomat::capi::DiplomatStringView s); 38 39 typedef struct icu4x_Locale_region_mv1_result { bool is_ok;} icu4x_Locale_region_mv1_result; 40 icu4x_Locale_region_mv1_result icu4x_Locale_region_mv1(const icu4x::capi::Locale* self, diplomat::capi::DiplomatWrite* write); 41 42 typedef struct icu4x_Locale_set_region_mv1_result {union { icu4x::capi::LocaleParseError err;}; bool is_ok;} icu4x_Locale_set_region_mv1_result; 43 icu4x_Locale_set_region_mv1_result icu4x_Locale_set_region_mv1(icu4x::capi::Locale* self, diplomat::capi::DiplomatStringView s); 44 45 typedef struct icu4x_Locale_script_mv1_result { bool is_ok;} icu4x_Locale_script_mv1_result; 46 icu4x_Locale_script_mv1_result icu4x_Locale_script_mv1(const icu4x::capi::Locale* self, diplomat::capi::DiplomatWrite* write); 47 48 typedef struct icu4x_Locale_set_script_mv1_result {union { icu4x::capi::LocaleParseError err;}; bool is_ok;} icu4x_Locale_set_script_mv1_result; 49 icu4x_Locale_set_script_mv1_result icu4x_Locale_set_script_mv1(icu4x::capi::Locale* self, diplomat::capi::DiplomatStringView s); 50 51 typedef struct icu4x_Locale_normalize_mv1_result {union { icu4x::capi::LocaleParseError err;}; bool is_ok;} icu4x_Locale_normalize_mv1_result; 52 icu4x_Locale_normalize_mv1_result icu4x_Locale_normalize_mv1(diplomat::capi::DiplomatStringView s, diplomat::capi::DiplomatWrite* write); 53 54 void icu4x_Locale_to_string_mv1(const icu4x::capi::Locale* self, diplomat::capi::DiplomatWrite* write); 55 56 bool icu4x_Locale_normalizing_eq_mv1(const icu4x::capi::Locale* self, diplomat::capi::DiplomatStringView other); 57 58 int8_t icu4x_Locale_compare_to_string_mv1(const icu4x::capi::Locale* self, diplomat::capi::DiplomatStringView other); 59 60 int8_t icu4x_Locale_compare_to_mv1(const icu4x::capi::Locale* self, const icu4x::capi::Locale* other); 61 62 void icu4x_Locale_destroy_mv1(Locale* self); 63 64 } // extern "C" 65 } // namespace capi 66 } // namespace 67 68 inline diplomat::result<std::unique_ptr<icu4x::Locale>, icu4x::LocaleParseError> icu4x::Locale::from_string(std::string_view name) { 69 auto result = icu4x::capi::icu4x_Locale_from_string_mv1({name.data(), name.size()}); 70 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::Locale>, icu4x::LocaleParseError>(diplomat::Ok<std::unique_ptr<icu4x::Locale>>(std::unique_ptr<icu4x::Locale>(icu4x::Locale::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::Locale>, icu4x::LocaleParseError>(diplomat::Err<icu4x::LocaleParseError>(icu4x::LocaleParseError::FromFFI(result.err))); 71 } 72 73 inline std::unique_ptr<icu4x::Locale> icu4x::Locale::unknown() { 74 auto result = icu4x::capi::icu4x_Locale_unknown_mv1(); 75 return std::unique_ptr<icu4x::Locale>(icu4x::Locale::FromFFI(result)); 76 } 77 78 inline std::unique_ptr<icu4x::Locale> icu4x::Locale::clone() const { 79 auto result = icu4x::capi::icu4x_Locale_clone_mv1(this->AsFFI()); 80 return std::unique_ptr<icu4x::Locale>(icu4x::Locale::FromFFI(result)); 81 } 82 83 inline std::string icu4x::Locale::basename() const { 84 std::string output; 85 diplomat::capi::DiplomatWrite write = diplomat::WriteFromString(output); 86 icu4x::capi::icu4x_Locale_basename_mv1(this->AsFFI(), 87 &write); 88 return output; 89 } 90 91 inline std::optional<std::string> icu4x::Locale::get_unicode_extension(std::string_view s) const { 92 std::string output; 93 diplomat::capi::DiplomatWrite write = diplomat::WriteFromString(output); 94 auto result = icu4x::capi::icu4x_Locale_get_unicode_extension_mv1(this->AsFFI(), 95 {s.data(), s.size()}, 96 &write); 97 return result.is_ok ? std::optional<std::string>(std::move(output)) : std::nullopt; 98 } 99 100 inline std::string icu4x::Locale::language() const { 101 std::string output; 102 diplomat::capi::DiplomatWrite write = diplomat::WriteFromString(output); 103 icu4x::capi::icu4x_Locale_language_mv1(this->AsFFI(), 104 &write); 105 return output; 106 } 107 108 inline diplomat::result<std::monostate, icu4x::LocaleParseError> icu4x::Locale::set_language(std::string_view s) { 109 auto result = icu4x::capi::icu4x_Locale_set_language_mv1(this->AsFFI(), 110 {s.data(), s.size()}); 111 return result.is_ok ? diplomat::result<std::monostate, icu4x::LocaleParseError>(diplomat::Ok<std::monostate>()) : diplomat::result<std::monostate, icu4x::LocaleParseError>(diplomat::Err<icu4x::LocaleParseError>(icu4x::LocaleParseError::FromFFI(result.err))); 112 } 113 114 inline std::optional<std::string> icu4x::Locale::region() const { 115 std::string output; 116 diplomat::capi::DiplomatWrite write = diplomat::WriteFromString(output); 117 auto result = icu4x::capi::icu4x_Locale_region_mv1(this->AsFFI(), 118 &write); 119 return result.is_ok ? std::optional<std::string>(std::move(output)) : std::nullopt; 120 } 121 122 inline diplomat::result<std::monostate, icu4x::LocaleParseError> icu4x::Locale::set_region(std::string_view s) { 123 auto result = icu4x::capi::icu4x_Locale_set_region_mv1(this->AsFFI(), 124 {s.data(), s.size()}); 125 return result.is_ok ? diplomat::result<std::monostate, icu4x::LocaleParseError>(diplomat::Ok<std::monostate>()) : diplomat::result<std::monostate, icu4x::LocaleParseError>(diplomat::Err<icu4x::LocaleParseError>(icu4x::LocaleParseError::FromFFI(result.err))); 126 } 127 128 inline std::optional<std::string> icu4x::Locale::script() const { 129 std::string output; 130 diplomat::capi::DiplomatWrite write = diplomat::WriteFromString(output); 131 auto result = icu4x::capi::icu4x_Locale_script_mv1(this->AsFFI(), 132 &write); 133 return result.is_ok ? std::optional<std::string>(std::move(output)) : std::nullopt; 134 } 135 136 inline diplomat::result<std::monostate, icu4x::LocaleParseError> icu4x::Locale::set_script(std::string_view s) { 137 auto result = icu4x::capi::icu4x_Locale_set_script_mv1(this->AsFFI(), 138 {s.data(), s.size()}); 139 return result.is_ok ? diplomat::result<std::monostate, icu4x::LocaleParseError>(diplomat::Ok<std::monostate>()) : diplomat::result<std::monostate, icu4x::LocaleParseError>(diplomat::Err<icu4x::LocaleParseError>(icu4x::LocaleParseError::FromFFI(result.err))); 140 } 141 142 inline diplomat::result<std::string, icu4x::LocaleParseError> icu4x::Locale::normalize(std::string_view s) { 143 std::string output; 144 diplomat::capi::DiplomatWrite write = diplomat::WriteFromString(output); 145 auto result = icu4x::capi::icu4x_Locale_normalize_mv1({s.data(), s.size()}, 146 &write); 147 return result.is_ok ? diplomat::result<std::string, icu4x::LocaleParseError>(diplomat::Ok<std::string>(std::move(output))) : diplomat::result<std::string, icu4x::LocaleParseError>(diplomat::Err<icu4x::LocaleParseError>(icu4x::LocaleParseError::FromFFI(result.err))); 148 } 149 150 inline std::string icu4x::Locale::to_string() const { 151 std::string output; 152 diplomat::capi::DiplomatWrite write = diplomat::WriteFromString(output); 153 icu4x::capi::icu4x_Locale_to_string_mv1(this->AsFFI(), 154 &write); 155 return output; 156 } 157 158 inline bool icu4x::Locale::normalizing_eq(std::string_view other) const { 159 auto result = icu4x::capi::icu4x_Locale_normalizing_eq_mv1(this->AsFFI(), 160 {other.data(), other.size()}); 161 return result; 162 } 163 164 inline int8_t icu4x::Locale::compare_to_string(std::string_view other) const { 165 auto result = icu4x::capi::icu4x_Locale_compare_to_string_mv1(this->AsFFI(), 166 {other.data(), other.size()}); 167 return result; 168 } 169 170 inline int8_t icu4x::Locale::compare_to(const icu4x::Locale& other) const { 171 auto result = icu4x::capi::icu4x_Locale_compare_to_mv1(this->AsFFI(), 172 other.AsFFI()); 173 return result; 174 } 175 inline bool icu4x::Locale::operator==(const icu4x::Locale& other) const { 176 return this->compare_to(other) == 0; 177 } 178 179 inline bool icu4x::Locale::operator!=(const icu4x::Locale& other) const { 180 return this->compare_to(other) != 0; 181 } 182 183 inline bool icu4x::Locale::operator<=(const icu4x::Locale& other) const { 184 return this->compare_to(other) <= 0; 185 } 186 187 inline bool icu4x::Locale::operator>=(const icu4x::Locale& other) const { 188 return this->compare_to(other) >= 0; 189 } 190 191 inline bool icu4x::Locale::operator<(const icu4x::Locale& other) const { 192 return this->compare_to(other) < 0; 193 } 194 195 inline bool icu4x::Locale::operator>(const icu4x::Locale& other) const { 196 return this->compare_to(other) > 0; 197 } 198 199 inline const icu4x::capi::Locale* icu4x::Locale::AsFFI() const { 200 return reinterpret_cast<const icu4x::capi::Locale*>(this); 201 } 202 203 inline icu4x::capi::Locale* icu4x::Locale::AsFFI() { 204 return reinterpret_cast<icu4x::capi::Locale*>(this); 205 } 206 207 inline const icu4x::Locale* icu4x::Locale::FromFFI(const icu4x::capi::Locale* ptr) { 208 return reinterpret_cast<const icu4x::Locale*>(ptr); 209 } 210 211 inline icu4x::Locale* icu4x::Locale::FromFFI(icu4x::capi::Locale* ptr) { 212 return reinterpret_cast<icu4x::Locale*>(ptr); 213 } 214 215 inline void icu4x::Locale::operator delete(void* ptr) { 216 icu4x::capi::icu4x_Locale_destroy_mv1(reinterpret_cast<icu4x::capi::Locale*>(ptr)); 217 } 218 219 220 #endif // icu4x_Locale_HPP