ICU4X
International Components for Unicode
Loading...
Searching...
No Matches
ICU4XDataProvider.hpp
Go to the documentation of this file.
1#ifndef ICU4XDataProvider_HPP
2#define ICU4XDataProvider_HPP
3#include <stdint.h>
4#include <stddef.h>
5#include <stdbool.h>
6#include <algorithm>
7#include <memory>
8#include <variant>
9#include <optional>
10#include "diplomat_runtime.hpp"
11
12#include "ICU4XDataProvider.h"
13
15#include "ICU4XError.hpp"
17
21struct ICU4XDataProviderDeleter {
22 void operator()(capi::ICU4XDataProvider* l) const noexcept {
23 capi::ICU4XDataProvider_destroy(l);
24 }
25};
26
33 public:
34
44
52 static diplomat::result<ICU4XDataProvider, ICU4XError> create_fs(const std::string_view path);
53
60
69
76
90
97
108
115 inline const capi::ICU4XDataProvider* AsFFI() const { return this->inner.get(); }
116 inline capi::ICU4XDataProvider* AsFFIMut() { return this->inner.get(); }
117 inline explicit ICU4XDataProvider(capi::ICU4XDataProvider* i) : inner(i) {}
118 ICU4XDataProvider() = default;
120 ICU4XDataProvider& operator=(ICU4XDataProvider&& other) noexcept = default;
121 private:
122 std::unique_ptr<capi::ICU4XDataProvider, ICU4XDataProviderDeleter> inner;
123};
124
125#include "ICU4XLocaleFallbacker.hpp"
126
128 return ICU4XDataProvider(capi::ICU4XDataProvider_create_compiled());
129}
131 auto diplomat_result_raw_out_value = capi::ICU4XDataProvider_create_fs(path.data(), path.size());
132 diplomat::result<ICU4XDataProvider, ICU4XError> diplomat_result_out_value;
133 if (diplomat_result_raw_out_value.is_ok) {
134 diplomat_result_out_value = diplomat::Ok<ICU4XDataProvider>(ICU4XDataProvider(diplomat_result_raw_out_value.ok));
135 } else {
136 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
137 }
138 return diplomat_result_out_value;
139}
141 return ICU4XDataProvider(capi::ICU4XDataProvider_create_test());
142}
144 auto diplomat_result_raw_out_value = capi::ICU4XDataProvider_create_from_byte_slice(blob.data(), blob.size());
145 diplomat::result<ICU4XDataProvider, ICU4XError> diplomat_result_out_value;
146 if (diplomat_result_raw_out_value.is_ok) {
147 diplomat_result_out_value = diplomat::Ok<ICU4XDataProvider>(ICU4XDataProvider(diplomat_result_raw_out_value.ok));
148 } else {
149 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
150 }
151 return diplomat_result_out_value;
152}
154 return ICU4XDataProvider(capi::ICU4XDataProvider_create_empty());
155}
157 auto diplomat_result_raw_out_value = capi::ICU4XDataProvider_fork_by_key(this->inner.get(), other.AsFFIMut());
158 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
159 if (diplomat_result_raw_out_value.is_ok) {
160 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
161 } else {
162 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
163 }
164 return diplomat_result_out_value;
165}
167 auto diplomat_result_raw_out_value = capi::ICU4XDataProvider_fork_by_locale(this->inner.get(), other.AsFFIMut());
168 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
169 if (diplomat_result_raw_out_value.is_ok) {
170 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
171 } else {
172 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
173 }
174 return diplomat_result_out_value;
175}
177 auto diplomat_result_raw_out_value = capi::ICU4XDataProvider_enable_locale_fallback(this->inner.get());
178 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
179 if (diplomat_result_raw_out_value.is_ok) {
180 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
181 } else {
182 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
183 }
184 return diplomat_result_out_value;
185}
187 auto diplomat_result_raw_out_value = capi::ICU4XDataProvider_enable_locale_fallback_with(this->inner.get(), fallbacker.AsFFI());
188 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
189 if (diplomat_result_raw_out_value.is_ok) {
190 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
191 } else {
192 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
193 }
194 return diplomat_result_out_value;
195}
196#endif
ICU4XError
Definition ICU4XError.hpp:23
Definition ICU4XDataProvider.hpp:32
ICU4XDataProvider(ICU4XDataProvider &&) noexcept=default
static ICU4XDataProvider create_empty()
Definition ICU4XDataProvider.hpp:153
diplomat::result< std::monostate, ICU4XError > enable_locale_fallback_with(const ICU4XLocaleFallbacker &fallbacker)
Definition ICU4XDataProvider.hpp:186
static ICU4XDataProvider create_test()
Definition ICU4XDataProvider.hpp:140
static diplomat::result< ICU4XDataProvider, ICU4XError > create_from_byte_slice(const diplomat::span< const uint8_t > blob)
Definition ICU4XDataProvider.hpp:143
static diplomat::result< ICU4XDataProvider, ICU4XError > create_fs(const std::string_view path)
Definition ICU4XDataProvider.hpp:130
diplomat::result< std::monostate, ICU4XError > fork_by_key(ICU4XDataProvider &other)
Definition ICU4XDataProvider.hpp:156
static ICU4XDataProvider create_compiled()
Definition ICU4XDataProvider.hpp:127
ICU4XDataProvider()=default
diplomat::result< std::monostate, ICU4XError > fork_by_locale(ICU4XDataProvider &other)
Definition ICU4XDataProvider.hpp:166
diplomat::result< std::monostate, ICU4XError > enable_locale_fallback()
Definition ICU4XDataProvider.hpp:176
ICU4XDataProvider(capi::ICU4XDataProvider *i)
Definition ICU4XDataProvider.hpp:117
Definition ICU4XLocaleFallbacker.hpp:34
Definition diplomat_runtime.hpp:84
Definition diplomat_runtime.hpp:144
constexpr T * data() const noexcept
Definition diplomat_runtime.hpp:152
constexpr size_t size() const noexcept
Definition diplomat_runtime.hpp:155
Definition diplomat_runtime.hpp:69
Definition diplomat_runtime.hpp:55