ICU4X
International Components for Unicode
Loading...
Searching...
No Matches
ICU4XDateFormatter.hpp
Go to the documentation of this file.
1#ifndef ICU4XDateFormatter_HPP
2#define ICU4XDateFormatter_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 "ICU4XDateFormatter.h"
13
15class ICU4XLocale;
16#include "ICU4XDateLength.hpp"
18#include "ICU4XError.hpp"
19class ICU4XDate;
20class ICU4XIsoDate;
21class ICU4XDateTime;
23
27struct ICU4XDateFormatterDeleter {
28 void operator()(capi::ICU4XDateFormatter* l) const noexcept {
29 capi::ICU4XDateFormatter_destroy(l);
30 }
31};
32
40 public:
41
48
54 template<typename W> diplomat::result<std::monostate, ICU4XError> format_date_to_writeable(const ICU4XDate& value, W& write) const;
55
62
70 template<typename W> diplomat::result<std::monostate, ICU4XError> format_iso_date_to_writeable(const ICU4XIsoDate& value, W& write) const;
71
80
86 template<typename W> diplomat::result<std::monostate, ICU4XError> format_datetime_to_writeable(const ICU4XDateTime& value, W& write) const;
87
94
103
112 inline const capi::ICU4XDateFormatter* AsFFI() const { return this->inner.get(); }
113 inline capi::ICU4XDateFormatter* AsFFIMut() { return this->inner.get(); }
114 inline explicit ICU4XDateFormatter(capi::ICU4XDateFormatter* i) : inner(i) {}
117 ICU4XDateFormatter& operator=(ICU4XDateFormatter&& other) noexcept = default;
118 private:
119 std::unique_ptr<capi::ICU4XDateFormatter, ICU4XDateFormatterDeleter> inner;
120};
121
122#include "ICU4XDataProvider.hpp"
123#include "ICU4XLocale.hpp"
124#include "ICU4XDate.hpp"
125#include "ICU4XIsoDate.hpp"
126#include "ICU4XDateTime.hpp"
127#include "ICU4XIsoDateTime.hpp"
128
130 auto diplomat_result_raw_out_value = capi::ICU4XDateFormatter_create_with_length(provider.AsFFI(), locale.AsFFI(), static_cast<capi::ICU4XDateLength>(date_length));
131 diplomat::result<ICU4XDateFormatter, ICU4XError> diplomat_result_out_value;
132 if (diplomat_result_raw_out_value.is_ok) {
133 diplomat_result_out_value = diplomat::Ok<ICU4XDateFormatter>(ICU4XDateFormatter(diplomat_result_raw_out_value.ok));
134 } else {
135 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
136 }
137 return diplomat_result_out_value;
138}
140 capi::DiplomatWriteable write_writer = diplomat::WriteableTrait<W>::Construct(write);
141 auto diplomat_result_raw_out_value = capi::ICU4XDateFormatter_format_date(this->inner.get(), value.AsFFI(), &write_writer);
142 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
143 if (diplomat_result_raw_out_value.is_ok) {
144 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
145 } else {
146 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
147 }
148 return diplomat_result_out_value;
149}
151 std::string diplomat_writeable_string;
152 capi::DiplomatWriteable diplomat_writeable_out = diplomat::WriteableFromString(diplomat_writeable_string);
153 auto diplomat_result_raw_out_value = capi::ICU4XDateFormatter_format_date(this->inner.get(), value.AsFFI(), &diplomat_writeable_out);
154 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
155 if (diplomat_result_raw_out_value.is_ok) {
156 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
157 } else {
158 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
159 }
160 return diplomat_result_out_value.replace_ok(std::move(diplomat_writeable_string));
161}
163 capi::DiplomatWriteable write_writer = diplomat::WriteableTrait<W>::Construct(write);
164 auto diplomat_result_raw_out_value = capi::ICU4XDateFormatter_format_iso_date(this->inner.get(), value.AsFFI(), &write_writer);
165 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
166 if (diplomat_result_raw_out_value.is_ok) {
167 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
168 } else {
169 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
170 }
171 return diplomat_result_out_value;
172}
174 std::string diplomat_writeable_string;
175 capi::DiplomatWriteable diplomat_writeable_out = diplomat::WriteableFromString(diplomat_writeable_string);
176 auto diplomat_result_raw_out_value = capi::ICU4XDateFormatter_format_iso_date(this->inner.get(), value.AsFFI(), &diplomat_writeable_out);
177 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
178 if (diplomat_result_raw_out_value.is_ok) {
179 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
180 } else {
181 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
182 }
183 return diplomat_result_out_value.replace_ok(std::move(diplomat_writeable_string));
184}
186 capi::DiplomatWriteable write_writer = diplomat::WriteableTrait<W>::Construct(write);
187 auto diplomat_result_raw_out_value = capi::ICU4XDateFormatter_format_datetime(this->inner.get(), value.AsFFI(), &write_writer);
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}
197 std::string diplomat_writeable_string;
198 capi::DiplomatWriteable diplomat_writeable_out = diplomat::WriteableFromString(diplomat_writeable_string);
199 auto diplomat_result_raw_out_value = capi::ICU4XDateFormatter_format_datetime(this->inner.get(), value.AsFFI(), &diplomat_writeable_out);
200 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
201 if (diplomat_result_raw_out_value.is_ok) {
202 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
203 } else {
204 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
205 }
206 return diplomat_result_out_value.replace_ok(std::move(diplomat_writeable_string));
207}
209 capi::DiplomatWriteable write_writer = diplomat::WriteableTrait<W>::Construct(write);
210 auto diplomat_result_raw_out_value = capi::ICU4XDateFormatter_format_iso_datetime(this->inner.get(), value.AsFFI(), &write_writer);
211 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
212 if (diplomat_result_raw_out_value.is_ok) {
213 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
214 } else {
215 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
216 }
217 return diplomat_result_out_value;
218}
220 std::string diplomat_writeable_string;
221 capi::DiplomatWriteable diplomat_writeable_out = diplomat::WriteableFromString(diplomat_writeable_string);
222 auto diplomat_result_raw_out_value = capi::ICU4XDateFormatter_format_iso_datetime(this->inner.get(), value.AsFFI(), &diplomat_writeable_out);
223 diplomat::result<std::monostate, ICU4XError> diplomat_result_out_value;
224 if (diplomat_result_raw_out_value.is_ok) {
225 diplomat_result_out_value = diplomat::Ok<std::monostate>(std::monostate());
226 } else {
227 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
228 }
229 return diplomat_result_out_value.replace_ok(std::move(diplomat_writeable_string));
230}
231#endif
ICU4XDateLength
Definition ICU4XDateLength.hpp:19
ICU4XError
Definition ICU4XError.hpp:23
Definition ICU4XDataProvider.hpp:32
Definition ICU4XDateFormatter.hpp:39
diplomat::result< std::monostate, ICU4XError > format_iso_date_to_writeable(const ICU4XIsoDate &value, W &write) const
Definition ICU4XDateFormatter.hpp:162
static diplomat::result< ICU4XDateFormatter, ICU4XError > create_with_length(const ICU4XDataProvider &provider, const ICU4XLocale &locale, ICU4XDateLength date_length)
Definition ICU4XDateFormatter.hpp:129
diplomat::result< std::monostate, ICU4XError > format_datetime_to_writeable(const ICU4XDateTime &value, W &write) const
Definition ICU4XDateFormatter.hpp:185
ICU4XDateFormatter()=default
ICU4XDateFormatter(capi::ICU4XDateFormatter *i)
Definition ICU4XDateFormatter.hpp:114
diplomat::result< std::monostate, ICU4XError > format_date_to_writeable(const ICU4XDate &value, W &write) const
Definition ICU4XDateFormatter.hpp:139
diplomat::result< std::string, ICU4XError > format_datetime(const ICU4XDateTime &value) const
Definition ICU4XDateFormatter.hpp:196
diplomat::result< std::monostate, ICU4XError > format_iso_datetime_to_writeable(const ICU4XIsoDateTime &value, W &write) const
Definition ICU4XDateFormatter.hpp:208
diplomat::result< std::string, ICU4XError > format_date(const ICU4XDate &value) const
Definition ICU4XDateFormatter.hpp:150
diplomat::result< std::string, ICU4XError > format_iso_date(const ICU4XIsoDate &value) const
Definition ICU4XDateFormatter.hpp:173
diplomat::result< std::string, ICU4XError > format_iso_datetime(const ICU4XIsoDateTime &value) const
Definition ICU4XDateFormatter.hpp:219
ICU4XDateFormatter(ICU4XDateFormatter &&) noexcept=default
Definition ICU4XDateTime.hpp:38
Definition ICU4XDate.hpp:36
Definition ICU4XIsoDateTime.hpp:38
Definition ICU4XIsoDate.hpp:36
Definition ICU4XLocale.hpp:32
Definition diplomat_runtime.hpp:84
result< T2, E > replace_ok(T2 &&t)
Definition diplomat_runtime.hpp:125
capi::DiplomatWriteable WriteableFromString(std::string &string)
Definition diplomat_runtime.hpp:31
Definition diplomat_runtime.hpp:69
Definition diplomat_runtime.hpp:55