ICU4X
International Components for Unicode
Loading...
Searching...
No Matches
ICU4XIsoDateTime.hpp
Go to the documentation of this file.
1#ifndef ICU4XIsoDateTime_HPP
2#define ICU4XIsoDateTime_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 "ICU4XIsoDateTime.h"
13
15#include "ICU4XError.hpp"
16class ICU4XIsoDate;
17class ICU4XTime;
18class ICU4XDateTime;
19class ICU4XCalendar;
20#include "ICU4XIsoWeekday.hpp"
22struct ICU4XWeekOf;
23
27struct ICU4XIsoDateTimeDeleter {
28 void operator()(capi::ICU4XIsoDateTime* l) const noexcept {
29 capi::ICU4XIsoDateTime_destroy(l);
30 }
31};
32
39 public:
40
46 static diplomat::result<ICU4XIsoDateTime, ICU4XError> create(int32_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second, uint32_t nanosecond);
47
54
61
68
74 ICU4XIsoDate date() const;
75
81 ICU4XTime time() const;
82
89 ICU4XDateTime to_any() const;
90
96 int32_t minutes_since_local_unix_epoch() const;
97
103 ICU4XDateTime to_calendar(const ICU4XCalendar& calendar) const;
104
110 uint8_t hour() const;
111
117 uint8_t minute() const;
118
124 uint8_t second() const;
125
131 uint32_t nanosecond() const;
132
138 uint16_t day_of_year() const;
139
145 uint32_t day_of_month() const;
146
153
162 uint32_t week_of_month(ICU4XIsoWeekday first_weekday) const;
163
170
176 uint32_t month() const;
177
183 int32_t year() const;
184
190 bool is_in_leap_year() const;
191
197 uint8_t months_in_year() const;
198
204 uint8_t days_in_month() const;
205
211 uint16_t days_in_year() const;
212 inline const capi::ICU4XIsoDateTime* AsFFI() const { return this->inner.get(); }
213 inline capi::ICU4XIsoDateTime* AsFFIMut() { return this->inner.get(); }
214 inline explicit ICU4XIsoDateTime(capi::ICU4XIsoDateTime* i) : inner(i) {}
215 ICU4XIsoDateTime() = default;
216 ICU4XIsoDateTime(ICU4XIsoDateTime&&) noexcept = default;
217 ICU4XIsoDateTime& operator=(ICU4XIsoDateTime&& other) noexcept = default;
218 private:
219 std::unique_ptr<capi::ICU4XIsoDateTime, ICU4XIsoDateTimeDeleter> inner;
220};
221
222#include "ICU4XIsoDate.hpp"
223#include "ICU4XTime.hpp"
224#include "ICU4XDateTime.hpp"
225#include "ICU4XCalendar.hpp"
227#include "ICU4XWeekOf.hpp"
228
229inline diplomat::result<ICU4XIsoDateTime, ICU4XError> ICU4XIsoDateTime::create(int32_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second, uint32_t nanosecond) {
230 auto diplomat_result_raw_out_value = capi::ICU4XIsoDateTime_create(year, month, day, hour, minute, second, nanosecond);
231 diplomat::result<ICU4XIsoDateTime, ICU4XError> diplomat_result_out_value;
232 if (diplomat_result_raw_out_value.is_ok) {
233 diplomat_result_out_value = diplomat::Ok<ICU4XIsoDateTime>(ICU4XIsoDateTime(diplomat_result_raw_out_value.ok));
234 } else {
235 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
236 }
237 return diplomat_result_out_value;
238}
240 return ICU4XIsoDateTime(capi::ICU4XIsoDateTime_crate_from_date_and_time(date.AsFFI(), time.AsFFI()));
241}
243 return ICU4XIsoDateTime(capi::ICU4XIsoDateTime_local_unix_epoch());
244}
246 return ICU4XIsoDateTime(capi::ICU4XIsoDateTime_create_from_minutes_since_local_unix_epoch(minutes));
247}
249 return ICU4XIsoDate(capi::ICU4XIsoDateTime_date(this->inner.get()));
250}
252 return ICU4XTime(capi::ICU4XIsoDateTime_time(this->inner.get()));
253}
255 return ICU4XDateTime(capi::ICU4XIsoDateTime_to_any(this->inner.get()));
256}
258 return capi::ICU4XIsoDateTime_minutes_since_local_unix_epoch(this->inner.get());
259}
261 return ICU4XDateTime(capi::ICU4XIsoDateTime_to_calendar(this->inner.get(), calendar.AsFFI()));
262}
263inline uint8_t ICU4XIsoDateTime::hour() const {
264 return capi::ICU4XIsoDateTime_hour(this->inner.get());
265}
266inline uint8_t ICU4XIsoDateTime::minute() const {
267 return capi::ICU4XIsoDateTime_minute(this->inner.get());
268}
269inline uint8_t ICU4XIsoDateTime::second() const {
270 return capi::ICU4XIsoDateTime_second(this->inner.get());
271}
272inline uint32_t ICU4XIsoDateTime::nanosecond() const {
273 return capi::ICU4XIsoDateTime_nanosecond(this->inner.get());
274}
275inline uint16_t ICU4XIsoDateTime::day_of_year() const {
276 return capi::ICU4XIsoDateTime_day_of_year(this->inner.get());
277}
278inline uint32_t ICU4XIsoDateTime::day_of_month() const {
279 return capi::ICU4XIsoDateTime_day_of_month(this->inner.get());
280}
282 return static_cast<ICU4XIsoWeekday>(capi::ICU4XIsoDateTime_day_of_week(this->inner.get()));
283}
284inline uint32_t ICU4XIsoDateTime::week_of_month(ICU4XIsoWeekday first_weekday) const {
285 return capi::ICU4XIsoDateTime_week_of_month(this->inner.get(), static_cast<capi::ICU4XIsoWeekday>(first_weekday));
286}
288 auto diplomat_result_raw_out_value = capi::ICU4XIsoDateTime_week_of_year(this->inner.get(), calculator.AsFFI());
289 diplomat::result<ICU4XWeekOf, ICU4XError> diplomat_result_out_value;
290 if (diplomat_result_raw_out_value.is_ok) {
291 capi::ICU4XWeekOf diplomat_raw_struct_out_value = diplomat_result_raw_out_value.ok;
292 diplomat_result_out_value = diplomat::Ok<ICU4XWeekOf>(ICU4XWeekOf{ .week = std::move(diplomat_raw_struct_out_value.week), .unit = std::move(static_cast<ICU4XWeekRelativeUnit>(diplomat_raw_struct_out_value.unit)) });
293 } else {
294 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
295 }
296 return diplomat_result_out_value;
297}
298inline uint32_t ICU4XIsoDateTime::month() const {
299 return capi::ICU4XIsoDateTime_month(this->inner.get());
300}
301inline int32_t ICU4XIsoDateTime::year() const {
302 return capi::ICU4XIsoDateTime_year(this->inner.get());
303}
305 return capi::ICU4XIsoDateTime_is_in_leap_year(this->inner.get());
306}
307inline uint8_t ICU4XIsoDateTime::months_in_year() const {
308 return capi::ICU4XIsoDateTime_months_in_year(this->inner.get());
309}
310inline uint8_t ICU4XIsoDateTime::days_in_month() const {
311 return capi::ICU4XIsoDateTime_days_in_month(this->inner.get());
312}
313inline uint16_t ICU4XIsoDateTime::days_in_year() const {
314 return capi::ICU4XIsoDateTime_days_in_year(this->inner.get());
315}
316#endif
ICU4XError
Definition ICU4XError.hpp:23
ICU4XIsoWeekday
Definition ICU4XIsoWeekday.hpp:15
ICU4XWeekRelativeUnit
Definition ICU4XWeekRelativeUnit.hpp:19
Definition ICU4XCalendar.hpp:32
Definition ICU4XDateTime.hpp:38
Definition ICU4XIsoDateTime.hpp:38
static ICU4XIsoDateTime crate_from_date_and_time(const ICU4XIsoDate &date, const ICU4XTime &time)
Definition ICU4XIsoDateTime.hpp:239
ICU4XDateTime to_any() const
Definition ICU4XIsoDateTime.hpp:254
static ICU4XIsoDateTime local_unix_epoch()
Definition ICU4XIsoDateTime.hpp:242
static ICU4XIsoDateTime create_from_minutes_since_local_unix_epoch(int32_t minutes)
Definition ICU4XIsoDateTime.hpp:245
ICU4XIsoDateTime(ICU4XIsoDateTime &&) noexcept=default
ICU4XIsoDate date() const
Definition ICU4XIsoDateTime.hpp:248
int32_t minutes_since_local_unix_epoch() const
Definition ICU4XIsoDateTime.hpp:257
uint32_t week_of_month(ICU4XIsoWeekday first_weekday) const
Definition ICU4XIsoDateTime.hpp:284
uint8_t hour() const
Definition ICU4XIsoDateTime.hpp:263
uint32_t nanosecond() const
Definition ICU4XIsoDateTime.hpp:272
int32_t year() const
Definition ICU4XIsoDateTime.hpp:301
ICU4XIsoWeekday day_of_week() const
Definition ICU4XIsoDateTime.hpp:281
ICU4XDateTime to_calendar(const ICU4XCalendar &calendar) const
Definition ICU4XIsoDateTime.hpp:260
uint8_t second() const
Definition ICU4XIsoDateTime.hpp:269
ICU4XTime time() const
Definition ICU4XIsoDateTime.hpp:251
ICU4XIsoDateTime(capi::ICU4XIsoDateTime *i)
Definition ICU4XIsoDateTime.hpp:214
uint16_t days_in_year() const
Definition ICU4XIsoDateTime.hpp:313
diplomat::result< ICU4XWeekOf, ICU4XError > week_of_year(const ICU4XWeekCalculator &calculator) const
Definition ICU4XIsoDateTime.hpp:287
uint32_t day_of_month() const
Definition ICU4XIsoDateTime.hpp:278
uint16_t day_of_year() const
Definition ICU4XIsoDateTime.hpp:275
uint32_t month() const
Definition ICU4XIsoDateTime.hpp:298
uint8_t months_in_year() const
Definition ICU4XIsoDateTime.hpp:307
uint8_t days_in_month() const
Definition ICU4XIsoDateTime.hpp:310
ICU4XIsoDateTime()=default
bool is_in_leap_year() const
Definition ICU4XIsoDateTime.hpp:304
uint8_t minute() const
Definition ICU4XIsoDateTime.hpp:266
static diplomat::result< ICU4XIsoDateTime, ICU4XError > create(int32_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second, uint32_t nanosecond)
Definition ICU4XIsoDateTime.hpp:229
Definition ICU4XIsoDate.hpp:36
Definition ICU4XTime.hpp:31
Definition ICU4XWeekCalculator.hpp:35
Definition diplomat_runtime.hpp:84
Definition ICU4XWeekOf.hpp:20
Definition diplomat_runtime.hpp:69
Definition diplomat_runtime.hpp:55