ICU4X
International Components for Unicode
Loading...
Searching...
No Matches
Locale.hpp
Go to the documentation of this file.
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 "LocaleParseError.hpp"
15#include "diplomat_runtime.hpp"
16
17
18namespace icu4x {
19namespace 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(icu4x::diplomat::capi::DiplomatStringView name);
24
25 icu4x::capi::Locale* icu4x_Locale_unknown_mv1(void);
26
27 const icu4x::capi::Locale* icu4x_Locale_unknown_ref_mv1(void);
28
29 icu4x::capi::Locale* icu4x_Locale_clone_mv1(const icu4x::capi::Locale* self);
30
31 void icu4x_Locale_basename_mv1(const icu4x::capi::Locale* self, icu4x::diplomat::capi::DiplomatWrite* write);
32
33 typedef struct icu4x_Locale_get_unicode_extension_mv1_result { bool is_ok;} icu4x_Locale_get_unicode_extension_mv1_result;
34 icu4x_Locale_get_unicode_extension_mv1_result icu4x_Locale_get_unicode_extension_mv1(const icu4x::capi::Locale* self, icu4x::diplomat::capi::DiplomatStringView s, icu4x::diplomat::capi::DiplomatWrite* write);
35
36 typedef struct icu4x_Locale_set_unicode_extension_mv1_result { bool is_ok;} icu4x_Locale_set_unicode_extension_mv1_result;
37 icu4x_Locale_set_unicode_extension_mv1_result icu4x_Locale_set_unicode_extension_mv1(icu4x::capi::Locale* self, icu4x::diplomat::capi::DiplomatStringView k, icu4x::diplomat::capi::DiplomatStringView v);
38
39 void icu4x_Locale_language_mv1(const icu4x::capi::Locale* self, icu4x::diplomat::capi::DiplomatWrite* write);
40
41 typedef struct icu4x_Locale_set_language_mv1_result {union { icu4x::capi::LocaleParseError err;}; bool is_ok;} icu4x_Locale_set_language_mv1_result;
42 icu4x_Locale_set_language_mv1_result icu4x_Locale_set_language_mv1(icu4x::capi::Locale* self, icu4x::diplomat::capi::DiplomatStringView s);
43
44 typedef struct icu4x_Locale_region_mv1_result { bool is_ok;} icu4x_Locale_region_mv1_result;
45 icu4x_Locale_region_mv1_result icu4x_Locale_region_mv1(const icu4x::capi::Locale* self, icu4x::diplomat::capi::DiplomatWrite* write);
46
47 typedef struct icu4x_Locale_set_region_mv1_result {union { icu4x::capi::LocaleParseError err;}; bool is_ok;} icu4x_Locale_set_region_mv1_result;
48 icu4x_Locale_set_region_mv1_result icu4x_Locale_set_region_mv1(icu4x::capi::Locale* self, icu4x::diplomat::capi::DiplomatStringView s);
49
50 typedef struct icu4x_Locale_script_mv1_result { bool is_ok;} icu4x_Locale_script_mv1_result;
51 icu4x_Locale_script_mv1_result icu4x_Locale_script_mv1(const icu4x::capi::Locale* self, icu4x::diplomat::capi::DiplomatWrite* write);
52
53 typedef struct icu4x_Locale_set_script_mv1_result {union { icu4x::capi::LocaleParseError err;}; bool is_ok;} icu4x_Locale_set_script_mv1_result;
54 icu4x_Locale_set_script_mv1_result icu4x_Locale_set_script_mv1(icu4x::capi::Locale* self, icu4x::diplomat::capi::DiplomatStringView s);
55
56 void icu4x_Locale_variants_mv1(const icu4x::capi::Locale* self, icu4x::diplomat::capi::DiplomatWrite* write);
57
58 size_t icu4x_Locale_variant_count_mv1(const icu4x::capi::Locale* self);
59
60 typedef struct icu4x_Locale_variant_at_mv1_result { bool is_ok;} icu4x_Locale_variant_at_mv1_result;
61 icu4x_Locale_variant_at_mv1_result icu4x_Locale_variant_at_mv1(const icu4x::capi::Locale* self, size_t index, icu4x::diplomat::capi::DiplomatWrite* write);
62
63 bool icu4x_Locale_has_variant_mv1(const icu4x::capi::Locale* self, icu4x::diplomat::capi::DiplomatStringView s);
64
65 typedef struct icu4x_Locale_add_variant_mv1_result {union {bool ok; icu4x::capi::LocaleParseError err;}; bool is_ok;} icu4x_Locale_add_variant_mv1_result;
66 icu4x_Locale_add_variant_mv1_result icu4x_Locale_add_variant_mv1(icu4x::capi::Locale* self, icu4x::diplomat::capi::DiplomatStringView s);
67
68 bool icu4x_Locale_remove_variant_mv1(icu4x::capi::Locale* self, icu4x::diplomat::capi::DiplomatStringView s);
69
70 void icu4x_Locale_clear_variants_mv1(icu4x::capi::Locale* self);
71
72 typedef struct icu4x_Locale_normalize_mv1_result {union { icu4x::capi::LocaleParseError err;}; bool is_ok;} icu4x_Locale_normalize_mv1_result;
73 icu4x_Locale_normalize_mv1_result icu4x_Locale_normalize_mv1(icu4x::diplomat::capi::DiplomatStringView s, icu4x::diplomat::capi::DiplomatWrite* write);
74
75 void icu4x_Locale_to_string_mv1(const icu4x::capi::Locale* self, icu4x::diplomat::capi::DiplomatWrite* write);
76
77 bool icu4x_Locale_normalizing_eq_mv1(const icu4x::capi::Locale* self, icu4x::diplomat::capi::DiplomatStringView other);
78
79 int8_t icu4x_Locale_compare_to_string_mv1(const icu4x::capi::Locale* self, icu4x::diplomat::capi::DiplomatStringView other);
80
81 int8_t icu4x_Locale_compare_to_mv1(const icu4x::capi::Locale* self, const icu4x::capi::Locale* other);
82
83 void icu4x_Locale_destroy_mv1(Locale* self);
84
85 } // extern "C"
86} // namespace capi
87} // namespace
88
90 auto result = icu4x::capi::icu4x_Locale_from_string_mv1({name.data(), name.size()});
92}
93
94inline std::unique_ptr<icu4x::Locale> icu4x::Locale::unknown() {
95 auto result = icu4x::capi::icu4x_Locale_unknown_mv1();
96 return std::unique_ptr<icu4x::Locale>(icu4x::Locale::FromFFI(result));
97}
98
100 auto result = icu4x::capi::icu4x_Locale_unknown_ref_mv1();
101 return *icu4x::Locale::FromFFI(result);
102}
103
104inline std::unique_ptr<icu4x::Locale> icu4x::Locale::clone() const {
105 auto result = icu4x::capi::icu4x_Locale_clone_mv1(this->AsFFI());
106 return std::unique_ptr<icu4x::Locale>(icu4x::Locale::FromFFI(result));
107}
108
109inline std::string icu4x::Locale::basename() const {
110 std::string output;
111 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteFromString(output);
112 icu4x::capi::icu4x_Locale_basename_mv1(this->AsFFI(),
113 &write);
114 return output;
115}
116template<typename W>
117inline void icu4x::Locale::basename_write(W& writeable) const {
118 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteTrait<W>::Construct(writeable);
119 icu4x::capi::icu4x_Locale_basename_mv1(this->AsFFI(),
120 &write);
121}
122
123inline std::optional<std::string> icu4x::Locale::get_unicode_extension(std::string_view s) const {
124 std::string output;
125 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteFromString(output);
126 auto result = icu4x::capi::icu4x_Locale_get_unicode_extension_mv1(this->AsFFI(),
127 {s.data(), s.size()},
128 &write);
129 return result.is_ok ? std::optional<std::string>(std::move(output)) : std::nullopt;
130}
131template<typename W>
132inline std::optional<std::monostate> icu4x::Locale::get_unicode_extension_write(std::string_view s, W& writeable) const {
133 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteTrait<W>::Construct(writeable);
134 auto result = icu4x::capi::icu4x_Locale_get_unicode_extension_mv1(this->AsFFI(),
135 {s.data(), s.size()},
136 &write);
137 return result.is_ok ? std::optional<std::monostate>() : std::nullopt;
138}
139
140inline std::optional<std::monostate> icu4x::Locale::set_unicode_extension(std::string_view k, std::string_view v) {
141 auto result = icu4x::capi::icu4x_Locale_set_unicode_extension_mv1(this->AsFFI(),
142 {k.data(), k.size()},
143 {v.data(), v.size()});
144 return result.is_ok ? std::optional<std::monostate>() : std::nullopt;
145}
146
147inline std::string icu4x::Locale::language() const {
148 std::string output;
149 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteFromString(output);
150 icu4x::capi::icu4x_Locale_language_mv1(this->AsFFI(),
151 &write);
152 return output;
153}
154template<typename W>
155inline void icu4x::Locale::language_write(W& writeable) const {
156 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteTrait<W>::Construct(writeable);
157 icu4x::capi::icu4x_Locale_language_mv1(this->AsFFI(),
158 &write);
159}
160
162 auto result = icu4x::capi::icu4x_Locale_set_language_mv1(this->AsFFI(),
163 {s.data(), s.size()});
165}
166
167inline std::optional<std::string> icu4x::Locale::region() const {
168 std::string output;
169 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteFromString(output);
170 auto result = icu4x::capi::icu4x_Locale_region_mv1(this->AsFFI(),
171 &write);
172 return result.is_ok ? std::optional<std::string>(std::move(output)) : std::nullopt;
173}
174template<typename W>
175inline std::optional<std::monostate> icu4x::Locale::region_write(W& writeable) const {
176 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteTrait<W>::Construct(writeable);
177 auto result = icu4x::capi::icu4x_Locale_region_mv1(this->AsFFI(),
178 &write);
179 return result.is_ok ? std::optional<std::monostate>() : std::nullopt;
180}
181
183 auto result = icu4x::capi::icu4x_Locale_set_region_mv1(this->AsFFI(),
184 {s.data(), s.size()});
186}
187
188inline std::optional<std::string> icu4x::Locale::script() const {
189 std::string output;
190 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteFromString(output);
191 auto result = icu4x::capi::icu4x_Locale_script_mv1(this->AsFFI(),
192 &write);
193 return result.is_ok ? std::optional<std::string>(std::move(output)) : std::nullopt;
194}
195template<typename W>
196inline std::optional<std::monostate> icu4x::Locale::script_write(W& writeable) const {
197 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteTrait<W>::Construct(writeable);
198 auto result = icu4x::capi::icu4x_Locale_script_mv1(this->AsFFI(),
199 &write);
200 return result.is_ok ? std::optional<std::monostate>() : std::nullopt;
201}
202
204 auto result = icu4x::capi::icu4x_Locale_set_script_mv1(this->AsFFI(),
205 {s.data(), s.size()});
207}
208
209inline std::string icu4x::Locale::variants() const {
210 std::string output;
211 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteFromString(output);
212 icu4x::capi::icu4x_Locale_variants_mv1(this->AsFFI(),
213 &write);
214 return output;
215}
216template<typename W>
217inline void icu4x::Locale::variants_write(W& writeable) const {
218 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteTrait<W>::Construct(writeable);
219 icu4x::capi::icu4x_Locale_variants_mv1(this->AsFFI(),
220 &write);
221}
222
223inline size_t icu4x::Locale::variant_count() const {
224 auto result = icu4x::capi::icu4x_Locale_variant_count_mv1(this->AsFFI());
225 return result;
226}
227
228inline std::optional<std::string> icu4x::Locale::variant_at(size_t index) const {
229 std::string output;
230 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteFromString(output);
231 auto result = icu4x::capi::icu4x_Locale_variant_at_mv1(this->AsFFI(),
232 index,
233 &write);
234 return result.is_ok ? std::optional<std::string>(std::move(output)) : std::nullopt;
235}
236template<typename W>
237inline std::optional<std::monostate> icu4x::Locale::variant_at_write(size_t index, W& writeable) const {
238 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteTrait<W>::Construct(writeable);
239 auto result = icu4x::capi::icu4x_Locale_variant_at_mv1(this->AsFFI(),
240 index,
241 &write);
242 return result.is_ok ? std::optional<std::monostate>() : std::nullopt;
243}
244
245inline bool icu4x::Locale::has_variant(std::string_view s) const {
246 auto result = icu4x::capi::icu4x_Locale_has_variant_mv1(this->AsFFI(),
247 {s.data(), s.size()});
248 return result;
249}
250
252 auto result = icu4x::capi::icu4x_Locale_add_variant_mv1(this->AsFFI(),
253 {s.data(), s.size()});
255}
256
257inline bool icu4x::Locale::remove_variant(std::string_view s) {
258 auto result = icu4x::capi::icu4x_Locale_remove_variant_mv1(this->AsFFI(),
259 {s.data(), s.size()});
260 return result;
261}
262
264 icu4x::capi::icu4x_Locale_clear_variants_mv1(this->AsFFI());
265}
266
268 std::string output;
269 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteFromString(output);
270 auto result = icu4x::capi::icu4x_Locale_normalize_mv1({s.data(), s.size()},
271 &write);
273}
274template<typename W>
276 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteTrait<W>::Construct(writeable);
277 auto result = icu4x::capi::icu4x_Locale_normalize_mv1({s.data(), s.size()},
278 &write);
280}
281
282inline std::string icu4x::Locale::to_string() const {
283 std::string output;
284 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteFromString(output);
285 icu4x::capi::icu4x_Locale_to_string_mv1(this->AsFFI(),
286 &write);
287 return output;
288}
289template<typename W>
290inline void icu4x::Locale::to_string_write(W& writeable) const {
291 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteTrait<W>::Construct(writeable);
292 icu4x::capi::icu4x_Locale_to_string_mv1(this->AsFFI(),
293 &write);
294}
295
296inline bool icu4x::Locale::normalizing_eq(std::string_view other) const {
297 auto result = icu4x::capi::icu4x_Locale_normalizing_eq_mv1(this->AsFFI(),
298 {other.data(), other.size()});
299 return result;
300}
301
302inline int8_t icu4x::Locale::compare_to_string(std::string_view other) const {
303 auto result = icu4x::capi::icu4x_Locale_compare_to_string_mv1(this->AsFFI(),
304 {other.data(), other.size()});
305 return result;
306}
307
308inline int8_t icu4x::Locale::compare_to(const icu4x::Locale& other) const {
309 auto result = icu4x::capi::icu4x_Locale_compare_to_mv1(this->AsFFI(),
310 other.AsFFI());
311 return result;
312}
313inline bool icu4x::Locale::operator==(const icu4x::Locale& other) const {
314 return this->compare_to(other) == 0;
315}
316
317inline bool icu4x::Locale::operator!=(const icu4x::Locale& other) const {
318 return this->compare_to(other) != 0;
319}
320
321inline bool icu4x::Locale::operator<=(const icu4x::Locale& other) const {
322 return this->compare_to(other) <= 0;
323}
324
325inline bool icu4x::Locale::operator>=(const icu4x::Locale& other) const {
326 return this->compare_to(other) >= 0;
327}
328
329inline bool icu4x::Locale::operator<(const icu4x::Locale& other) const {
330 return this->compare_to(other) < 0;
331}
332
333inline bool icu4x::Locale::operator>(const icu4x::Locale& other) const {
334 return this->compare_to(other) > 0;
335}
336
337inline const icu4x::capi::Locale* icu4x::Locale::AsFFI() const {
338 return reinterpret_cast<const icu4x::capi::Locale*>(this);
339}
340
341inline icu4x::capi::Locale* icu4x::Locale::AsFFI() {
342 return reinterpret_cast<icu4x::capi::Locale*>(this);
343}
344
345inline const icu4x::Locale* icu4x::Locale::FromFFI(const icu4x::capi::Locale* ptr) {
346 return reinterpret_cast<const icu4x::Locale*>(ptr);
347}
348
349inline icu4x::Locale* icu4x::Locale::FromFFI(icu4x::capi::Locale* ptr) {
350 return reinterpret_cast<icu4x::Locale*>(ptr);
351}
352
353inline void icu4x::Locale::operator delete(void* ptr) {
354 icu4x::capi::icu4x_Locale_destroy_mv1(reinterpret_cast<icu4x::capi::Locale*>(ptr));
355}
356
357
358#endif // ICU4X_Locale_HPP
Definition LocaleParseError.d.hpp:32
Definition Locale.d.hpp:33
std::optional< std::string > script() const
Definition Locale.hpp:188
int8_t compare_to(const icu4x::Locale &other) const
Definition Locale.hpp:308
std::unique_ptr< icu4x::Locale > clone() const
Definition Locale.hpp:104
std::string variants() const
Definition Locale.hpp:209
std::optional< std::monostate > script_write(W &writeable_output) const
Definition Locale.hpp:196
icu4x::diplomat::result< bool, icu4x::LocaleParseError > add_variant(std::string_view s)
Definition Locale.hpp:251
std::string basename() const
Definition Locale.hpp:109
static icu4x::diplomat::result< std::string, icu4x::LocaleParseError > normalize(std::string_view s)
Definition Locale.hpp:267
bool operator>=(const icu4x::Locale &other) const
Definition Locale.hpp:325
static std::unique_ptr< icu4x::Locale > unknown()
Definition Locale.hpp:94
void basename_write(W &writeable_output) const
Definition Locale.hpp:117
void language_write(W &writeable_output) const
Definition Locale.hpp:155
bool operator>(const icu4x::Locale &other) const
Definition Locale.hpp:333
bool remove_variant(std::string_view s)
Definition Locale.hpp:257
std::string to_string() const
Definition Locale.hpp:282
bool normalizing_eq(std::string_view other) const
Definition Locale.hpp:296
std::optional< std::string > get_unicode_extension(std::string_view s) const
Definition Locale.hpp:123
bool operator<=(const icu4x::Locale &other) const
Definition Locale.hpp:321
icu4x::diplomat::result< std::monostate, icu4x::LocaleParseError > set_script(std::string_view s)
Definition Locale.hpp:203
std::optional< std::monostate > get_unicode_extension_write(std::string_view s, W &writeable_output) const
Definition Locale.hpp:132
bool operator<(const icu4x::Locale &other) const
Definition Locale.hpp:329
static icu4x::diplomat::result< std::monostate, icu4x::LocaleParseError > normalize_write(std::string_view s, W &writeable_output)
Definition Locale.hpp:275
std::optional< std::monostate > region_write(W &writeable_output) const
Definition Locale.hpp:175
void variants_write(W &writeable_output) const
Definition Locale.hpp:217
std::optional< std::monostate > set_unicode_extension(std::string_view k, std::string_view v)
Definition Locale.hpp:140
void to_string_write(W &writeable_output) const
Definition Locale.hpp:290
bool has_variant(std::string_view s) const
Definition Locale.hpp:245
size_t variant_count() const
Definition Locale.hpp:223
bool operator!=(const icu4x::Locale &other) const
Definition Locale.hpp:317
void clear_variants()
Definition Locale.hpp:263
static icu4x::diplomat::result< std::unique_ptr< icu4x::Locale >, icu4x::LocaleParseError > from_string(std::string_view name)
Definition Locale.hpp:89
std::optional< std::string > region() const
Definition Locale.hpp:167
bool operator==(const icu4x::Locale &other) const
Definition Locale.hpp:313
icu4x::diplomat::result< std::monostate, icu4x::LocaleParseError > set_region(std::string_view s)
Definition Locale.hpp:182
icu4x::diplomat::result< std::monostate, icu4x::LocaleParseError > set_language(std::string_view s)
Definition Locale.hpp:161
std::string language() const
Definition Locale.hpp:147
std::optional< std::string > variant_at(size_t index) const
Definition Locale.hpp:228
static const icu4x::Locale & unknown_ref()
Definition Locale.hpp:99
int8_t compare_to_string(std::string_view other) const
Definition Locale.hpp:302
std::optional< std::monostate > variant_at_write(size_t index, W &writeable_output) const
Definition Locale.hpp:237
Definition diplomat_runtime.hpp:166
bool is_ok() const
Definition diplomat_runtime.hpp:181
Definition Bidi.d.hpp:13
Definition diplomat_runtime.hpp:146
Definition diplomat_runtime.hpp:128
Definition diplomat_runtime.hpp:117