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