ICU4X
International Components for Unicode
Loading...
Searching...
No Matches
ICU4XIsoDate.hpp
Go to the documentation of this file.
1#ifndef ICU4XIsoDate_HPP
2#define ICU4XIsoDate_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 "ICU4XIsoDate.h"
13
14class ICU4XIsoDate;
15#include "ICU4XError.hpp"
16class ICU4XCalendar;
17class ICU4XDate;
18#include "ICU4XIsoWeekday.hpp"
20struct ICU4XWeekOf;
21
25struct ICU4XIsoDateDeleter {
26 void operator()(capi::ICU4XIsoDate* l) const noexcept {
27 capi::ICU4XIsoDate_destroy(l);
28 }
29};
30
37 public:
38
44 static diplomat::result<ICU4XIsoDate, ICU4XError> create(int32_t year, uint8_t month, uint8_t day);
45
52
58 ICU4XDate to_calendar(const ICU4XCalendar& calendar) const;
59
63 ICU4XDate to_any() const;
64
70 uint16_t day_of_year() const;
71
77 uint32_t day_of_month() const;
78
85
94 uint32_t week_of_month(ICU4XIsoWeekday first_weekday) const;
95
102
108 uint32_t month() const;
109
115 int32_t year() const;
116
122 bool is_in_leap_year() const;
123
129 uint8_t months_in_year() const;
130
136 uint8_t days_in_month() const;
137
143 uint16_t days_in_year() const;
144 inline const capi::ICU4XIsoDate* AsFFI() const { return this->inner.get(); }
145 inline capi::ICU4XIsoDate* AsFFIMut() { return this->inner.get(); }
146 inline explicit ICU4XIsoDate(capi::ICU4XIsoDate* i) : inner(i) {}
147 ICU4XIsoDate() = default;
148 ICU4XIsoDate(ICU4XIsoDate&&) noexcept = default;
149 ICU4XIsoDate& operator=(ICU4XIsoDate&& other) noexcept = default;
150 private:
151 std::unique_ptr<capi::ICU4XIsoDate, ICU4XIsoDateDeleter> inner;
152};
153
154#include "ICU4XCalendar.hpp"
155#include "ICU4XDate.hpp"
157#include "ICU4XWeekOf.hpp"
158
160 auto diplomat_result_raw_out_value = capi::ICU4XIsoDate_create(year, month, day);
161 diplomat::result<ICU4XIsoDate, ICU4XError> diplomat_result_out_value;
162 if (diplomat_result_raw_out_value.is_ok) {
163 diplomat_result_out_value = diplomat::Ok<ICU4XIsoDate>(ICU4XIsoDate(diplomat_result_raw_out_value.ok));
164 } else {
165 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
166 }
167 return diplomat_result_out_value;
168}
170 return ICU4XIsoDate(capi::ICU4XIsoDate_create_for_unix_epoch());
171}
172inline ICU4XDate ICU4XIsoDate::to_calendar(const ICU4XCalendar& calendar) const {
173 return ICU4XDate(capi::ICU4XIsoDate_to_calendar(this->inner.get(), calendar.AsFFI()));
174}
176 return ICU4XDate(capi::ICU4XIsoDate_to_any(this->inner.get()));
177}
178inline uint16_t ICU4XIsoDate::day_of_year() const {
179 return capi::ICU4XIsoDate_day_of_year(this->inner.get());
180}
181inline uint32_t ICU4XIsoDate::day_of_month() const {
182 return capi::ICU4XIsoDate_day_of_month(this->inner.get());
183}
185 return static_cast<ICU4XIsoWeekday>(capi::ICU4XIsoDate_day_of_week(this->inner.get()));
186}
187inline uint32_t ICU4XIsoDate::week_of_month(ICU4XIsoWeekday first_weekday) const {
188 return capi::ICU4XIsoDate_week_of_month(this->inner.get(), static_cast<capi::ICU4XIsoWeekday>(first_weekday));
189}
191 auto diplomat_result_raw_out_value = capi::ICU4XIsoDate_week_of_year(this->inner.get(), calculator.AsFFI());
192 diplomat::result<ICU4XWeekOf, ICU4XError> diplomat_result_out_value;
193 if (diplomat_result_raw_out_value.is_ok) {
194 capi::ICU4XWeekOf diplomat_raw_struct_out_value = diplomat_result_raw_out_value.ok;
195 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)) });
196 } else {
197 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
198 }
199 return diplomat_result_out_value;
200}
201inline uint32_t ICU4XIsoDate::month() const {
202 return capi::ICU4XIsoDate_month(this->inner.get());
203}
204inline int32_t ICU4XIsoDate::year() const {
205 return capi::ICU4XIsoDate_year(this->inner.get());
206}
207inline bool ICU4XIsoDate::is_in_leap_year() const {
208 return capi::ICU4XIsoDate_is_in_leap_year(this->inner.get());
209}
210inline uint8_t ICU4XIsoDate::months_in_year() const {
211 return capi::ICU4XIsoDate_months_in_year(this->inner.get());
212}
213inline uint8_t ICU4XIsoDate::days_in_month() const {
214 return capi::ICU4XIsoDate_days_in_month(this->inner.get());
215}
216inline uint16_t ICU4XIsoDate::days_in_year() const {
217 return capi::ICU4XIsoDate_days_in_year(this->inner.get());
218}
219#endif
ICU4XError
Definition ICU4XError.hpp:23
ICU4XIsoWeekday
Definition ICU4XIsoWeekday.hpp:15
ICU4XWeekRelativeUnit
Definition ICU4XWeekRelativeUnit.hpp:19
Definition ICU4XCalendar.hpp:32
Definition ICU4XDate.hpp:36
Definition ICU4XIsoDate.hpp:36
uint32_t day_of_month() const
Definition ICU4XIsoDate.hpp:181
ICU4XIsoWeekday day_of_week() const
Definition ICU4XIsoDate.hpp:184
ICU4XIsoDate()=default
uint32_t month() const
Definition ICU4XIsoDate.hpp:201
diplomat::result< ICU4XWeekOf, ICU4XError > week_of_year(const ICU4XWeekCalculator &calculator) const
Definition ICU4XIsoDate.hpp:190
uint8_t days_in_month() const
Definition ICU4XIsoDate.hpp:213
ICU4XDate to_any() const
Definition ICU4XIsoDate.hpp:175
ICU4XDate to_calendar(const ICU4XCalendar &calendar) const
Definition ICU4XIsoDate.hpp:172
uint8_t months_in_year() const
Definition ICU4XIsoDate.hpp:210
ICU4XIsoDate(ICU4XIsoDate &&) noexcept=default
static diplomat::result< ICU4XIsoDate, ICU4XError > create(int32_t year, uint8_t month, uint8_t day)
Definition ICU4XIsoDate.hpp:159
bool is_in_leap_year() const
Definition ICU4XIsoDate.hpp:207
ICU4XIsoDate(capi::ICU4XIsoDate *i)
Definition ICU4XIsoDate.hpp:146
uint16_t day_of_year() const
Definition ICU4XIsoDate.hpp:178
static ICU4XIsoDate create_for_unix_epoch()
Definition ICU4XIsoDate.hpp:169
int32_t year() const
Definition ICU4XIsoDate.hpp:204
uint16_t days_in_year() const
Definition ICU4XIsoDate.hpp:216
uint32_t week_of_month(ICU4XIsoWeekday first_weekday) const
Definition ICU4XIsoDate.hpp:187
Definition ICU4XWeekCalculator.hpp:35
Definition diplomat_runtime.hpp:84
Definition ICU4XWeekOf.hpp:20
Definition diplomat_runtime.hpp:69
Definition diplomat_runtime.hpp:55