ICU4X
International Components for Unicode
Loading...
Searching...
No Matches
Date.hpp
Go to the documentation of this file.
1#ifndef ICU4X_Date_HPP
2#define ICU4X_Date_HPP
3
4#include "Date.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>
14#include "Calendar.hpp"
17#include "CalendarError.hpp"
19#include "DateAddOptions.hpp"
21#include "DateDuration.hpp"
22#include "DateFields.hpp"
24#include "IsoDate.hpp"
25#include "Rfc9557ParseError.hpp"
26#include "Weekday.hpp"
27#include "diplomat_runtime.hpp"
28
29
30namespace icu4x {
31namespace capi {
32 extern "C" {
33
34 typedef struct icu4x_Date_from_iso_in_calendar_mv1_result {union {icu4x::capi::Date* ok; icu4x::capi::CalendarError err;}; bool is_ok;} icu4x_Date_from_iso_in_calendar_mv1_result;
35 icu4x_Date_from_iso_in_calendar_mv1_result icu4x_Date_from_iso_in_calendar_mv1(int32_t iso_year, uint8_t iso_month, uint8_t iso_day, const icu4x::capi::Calendar* calendar);
36
37 typedef struct icu4x_Date_from_fields_in_calendar_mv1_result {union {icu4x::capi::Date* ok; icu4x::capi::CalendarDateFromFieldsError err;}; bool is_ok;} icu4x_Date_from_fields_in_calendar_mv1_result;
38 icu4x_Date_from_fields_in_calendar_mv1_result icu4x_Date_from_fields_in_calendar_mv1(icu4x::capi::DateFields fields, icu4x::capi::DateFromFieldsOptions options, const icu4x::capi::Calendar* calendar);
39
40 typedef struct icu4x_Date_from_codes_in_calendar_mv1_result {union {icu4x::capi::Date* ok; icu4x::capi::CalendarError err;}; bool is_ok;} icu4x_Date_from_codes_in_calendar_mv1_result;
41 icu4x_Date_from_codes_in_calendar_mv1_result icu4x_Date_from_codes_in_calendar_mv1(icu4x::diplomat::capi::DiplomatStringView era_code, int32_t year, icu4x::diplomat::capi::DiplomatStringView month_code, uint8_t day, const icu4x::capi::Calendar* calendar);
42
43 typedef struct icu4x_Date_from_rata_die_mv1_result {union {icu4x::capi::Date* ok; icu4x::capi::CalendarError err;}; bool is_ok;} icu4x_Date_from_rata_die_mv1_result;
44 icu4x_Date_from_rata_die_mv1_result icu4x_Date_from_rata_die_mv1(int64_t rd, const icu4x::capi::Calendar* calendar);
45
46 typedef struct icu4x_Date_from_string_mv1_result {union {icu4x::capi::Date* ok; icu4x::capi::Rfc9557ParseError err;}; bool is_ok;} icu4x_Date_from_string_mv1_result;
47 icu4x_Date_from_string_mv1_result icu4x_Date_from_string_mv1(icu4x::diplomat::capi::DiplomatStringView v, const icu4x::capi::Calendar* calendar);
48
49 icu4x::capi::Date* icu4x_Date_to_calendar_mv1(const icu4x::capi::Date* self, const icu4x::capi::Calendar* calendar);
50
51 icu4x::capi::IsoDate* icu4x_Date_to_iso_mv1(const icu4x::capi::Date* self);
52
53 int64_t icu4x_Date_to_rata_die_mv1(const icu4x::capi::Date* self);
54
55 uint16_t icu4x_Date_day_of_year_mv1(const icu4x::capi::Date* self);
56
57 uint8_t icu4x_Date_day_of_month_mv1(const icu4x::capi::Date* self);
58
59 icu4x::capi::Weekday icu4x_Date_day_of_week_mv1(const icu4x::capi::Date* self);
60
61 icu4x::capi::Weekday icu4x_Date_weekday_mv1(const icu4x::capi::Date* self);
62
63 uint8_t icu4x_Date_ordinal_month_mv1(const icu4x::capi::Date* self);
64
65 void icu4x_Date_month_code_mv1(const icu4x::capi::Date* self, icu4x::diplomat::capi::DiplomatWrite* write);
66
67 uint8_t icu4x_Date_month_number_mv1(const icu4x::capi::Date* self);
68
69 bool icu4x_Date_month_is_leap_mv1(const icu4x::capi::Date* self);
70
71 int32_t icu4x_Date_era_year_or_related_iso_mv1(const icu4x::capi::Date* self);
72
73 int32_t icu4x_Date_extended_year_mv1(const icu4x::capi::Date* self);
74
75 void icu4x_Date_era_mv1(const icu4x::capi::Date* self, icu4x::diplomat::capi::DiplomatWrite* write);
76
77 uint8_t icu4x_Date_months_in_year_mv1(const icu4x::capi::Date* self);
78
79 uint8_t icu4x_Date_days_in_month_mv1(const icu4x::capi::Date* self);
80
81 uint16_t icu4x_Date_days_in_year_mv1(const icu4x::capi::Date* self);
82
83 bool icu4x_Date_is_in_leap_year_mv1(const icu4x::capi::Date* self);
84
85 icu4x::capi::Calendar* icu4x_Date_calendar_mv1(const icu4x::capi::Date* self);
86
87 typedef struct icu4x_Date_try_add_with_options_mv1_result {union {icu4x::capi::Date* ok; icu4x::capi::CalendarDateAddError err;}; bool is_ok;} icu4x_Date_try_add_with_options_mv1_result;
88 icu4x_Date_try_add_with_options_mv1_result icu4x_Date_try_add_with_options_mv1(const icu4x::capi::Date* self, icu4x::capi::DateDuration duration, icu4x::capi::DateAddOptions options);
89
90 typedef struct icu4x_Date_try_until_with_options_mv1_result {union {icu4x::capi::DateDuration ok; }; bool is_ok;} icu4x_Date_try_until_with_options_mv1_result;
91 icu4x_Date_try_until_with_options_mv1_result icu4x_Date_try_until_with_options_mv1(const icu4x::capi::Date* self, const icu4x::capi::Date* other, icu4x::capi::DateDifferenceOptions options);
92
93 void icu4x_Date_destroy_mv1(Date* self);
94
95 } // extern "C"
96} // namespace capi
97} // namespace
98
100 auto result = icu4x::capi::icu4x_Date_from_iso_in_calendar_mv1(iso_year,
101 iso_month,
102 iso_day,
103 calendar.AsFFI());
105}
106
108 auto result = icu4x::capi::icu4x_Date_from_fields_in_calendar_mv1(fields.AsFFI(),
109 options.AsFFI(),
110 calendar.AsFFI());
112}
113
114inline icu4x::diplomat::result<std::unique_ptr<icu4x::Date>, icu4x::CalendarError> icu4x::Date::from_codes_in_calendar(std::string_view era_code, int32_t year, std::string_view month_code, uint8_t day, const icu4x::Calendar& calendar) {
115 auto result = icu4x::capi::icu4x_Date_from_codes_in_calendar_mv1({era_code.data(), era_code.size()},
116 year,
117 {month_code.data(), month_code.size()},
118 day,
119 calendar.AsFFI());
121}
122
124 auto result = icu4x::capi::icu4x_Date_from_rata_die_mv1(rd,
125 calendar.AsFFI());
127}
128
130 auto result = icu4x::capi::icu4x_Date_from_string_mv1({v.data(), v.size()},
131 calendar.AsFFI());
133}
134
135inline std::unique_ptr<icu4x::Date> icu4x::Date::to_calendar(const icu4x::Calendar& calendar) const {
136 auto result = icu4x::capi::icu4x_Date_to_calendar_mv1(this->AsFFI(),
137 calendar.AsFFI());
138 return std::unique_ptr<icu4x::Date>(icu4x::Date::FromFFI(result));
139}
140
141inline std::unique_ptr<icu4x::IsoDate> icu4x::Date::to_iso() const {
142 auto result = icu4x::capi::icu4x_Date_to_iso_mv1(this->AsFFI());
143 return std::unique_ptr<icu4x::IsoDate>(icu4x::IsoDate::FromFFI(result));
144}
145
146inline int64_t icu4x::Date::to_rata_die() const {
147 auto result = icu4x::capi::icu4x_Date_to_rata_die_mv1(this->AsFFI());
148 return result;
149}
150
151inline uint16_t icu4x::Date::day_of_year() const {
152 auto result = icu4x::capi::icu4x_Date_day_of_year_mv1(this->AsFFI());
153 return result;
154}
155
156inline uint8_t icu4x::Date::day_of_month() const {
157 auto result = icu4x::capi::icu4x_Date_day_of_month_mv1(this->AsFFI());
158 return result;
159}
160
162 auto result = icu4x::capi::icu4x_Date_day_of_week_mv1(this->AsFFI());
163 return icu4x::Weekday::FromFFI(result);
164}
165
167 auto result = icu4x::capi::icu4x_Date_weekday_mv1(this->AsFFI());
168 return icu4x::Weekday::FromFFI(result);
169}
170
171inline uint8_t icu4x::Date::ordinal_month() const {
172 auto result = icu4x::capi::icu4x_Date_ordinal_month_mv1(this->AsFFI());
173 return result;
174}
175
176inline std::string icu4x::Date::month_code() const {
177 std::string output;
178 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteFromString(output);
179 icu4x::capi::icu4x_Date_month_code_mv1(this->AsFFI(),
180 &write);
181 return output;
182}
183template<typename W>
184inline void icu4x::Date::month_code_write(W& writeable) const {
185 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteTrait<W>::Construct(writeable);
186 icu4x::capi::icu4x_Date_month_code_mv1(this->AsFFI(),
187 &write);
188}
189
190inline uint8_t icu4x::Date::month_number() const {
191 auto result = icu4x::capi::icu4x_Date_month_number_mv1(this->AsFFI());
192 return result;
193}
194
195inline bool icu4x::Date::month_is_leap() const {
196 auto result = icu4x::capi::icu4x_Date_month_is_leap_mv1(this->AsFFI());
197 return result;
198}
199
201 auto result = icu4x::capi::icu4x_Date_era_year_or_related_iso_mv1(this->AsFFI());
202 return result;
203}
204
205inline int32_t icu4x::Date::extended_year() const {
206 auto result = icu4x::capi::icu4x_Date_extended_year_mv1(this->AsFFI());
207 return result;
208}
209
210inline std::string icu4x::Date::era() const {
211 std::string output;
212 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteFromString(output);
213 icu4x::capi::icu4x_Date_era_mv1(this->AsFFI(),
214 &write);
215 return output;
216}
217template<typename W>
218inline void icu4x::Date::era_write(W& writeable) const {
219 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteTrait<W>::Construct(writeable);
220 icu4x::capi::icu4x_Date_era_mv1(this->AsFFI(),
221 &write);
222}
223
224inline uint8_t icu4x::Date::months_in_year() const {
225 auto result = icu4x::capi::icu4x_Date_months_in_year_mv1(this->AsFFI());
226 return result;
227}
228
229inline uint8_t icu4x::Date::days_in_month() const {
230 auto result = icu4x::capi::icu4x_Date_days_in_month_mv1(this->AsFFI());
231 return result;
232}
233
234inline uint16_t icu4x::Date::days_in_year() const {
235 auto result = icu4x::capi::icu4x_Date_days_in_year_mv1(this->AsFFI());
236 return result;
237}
238
239inline bool icu4x::Date::is_in_leap_year() const {
240 auto result = icu4x::capi::icu4x_Date_is_in_leap_year_mv1(this->AsFFI());
241 return result;
242}
243
244inline std::unique_ptr<icu4x::Calendar> icu4x::Date::calendar() const {
245 auto result = icu4x::capi::icu4x_Date_calendar_mv1(this->AsFFI());
246 return std::unique_ptr<icu4x::Calendar>(icu4x::Calendar::FromFFI(result));
247}
248
250 auto result = icu4x::capi::icu4x_Date_try_add_with_options_mv1(this->AsFFI(),
251 duration.AsFFI(),
252 options.AsFFI());
254}
255
262
263inline const icu4x::capi::Date* icu4x::Date::AsFFI() const {
264 return reinterpret_cast<const icu4x::capi::Date*>(this);
265}
266
267inline icu4x::capi::Date* icu4x::Date::AsFFI() {
268 return reinterpret_cast<icu4x::capi::Date*>(this);
269}
270
271inline const icu4x::Date* icu4x::Date::FromFFI(const icu4x::capi::Date* ptr) {
272 return reinterpret_cast<const icu4x::Date*>(ptr);
273}
274
275inline icu4x::Date* icu4x::Date::FromFFI(icu4x::capi::Date* ptr) {
276 return reinterpret_cast<icu4x::Date*>(ptr);
277}
278
279inline void icu4x::Date::operator delete(void* ptr) {
280 icu4x::capi::icu4x_Date_destroy_mv1(reinterpret_cast<icu4x::capi::Date*>(ptr));
281}
282
283
284#endif // ICU4X_Date_HPP
Definition CalendarDateAddError.d.hpp:32
Definition CalendarDateFromFieldsError.d.hpp:40
Definition CalendarError.d.hpp:32
Definition Calendar.d.hpp:34
Definition Date.d.hpp:47
icu4x::Weekday day_of_week() const
Definition Date.hpp:161
std::unique_ptr< icu4x::IsoDate > to_iso() const
Definition Date.hpp:141
void era_write(W &writeable_output) const
Definition Date.hpp:218
uint8_t days_in_month() const
Definition Date.hpp:229
int64_t to_rata_die() const
Definition Date.hpp:146
icu4x::diplomat::result< std::unique_ptr< icu4x::Date >, icu4x::CalendarDateAddError > try_add_with_options(icu4x::DateDuration duration, icu4x::DateAddOptions options) const
Definition Date.hpp:249
icu4x::Weekday weekday() const
Definition Date.hpp:166
static icu4x::diplomat::result< std::unique_ptr< icu4x::Date >, icu4x::CalendarError > from_codes_in_calendar(std::string_view era_code, int32_t year, std::string_view month_code, uint8_t day, const icu4x::Calendar &calendar)
Definition Date.hpp:114
std::string era() const
Definition Date.hpp:210
uint8_t month_number() const
Definition Date.hpp:190
uint8_t day_of_month() const
Definition Date.hpp:156
uint8_t months_in_year() const
Definition Date.hpp:224
static icu4x::diplomat::result< std::unique_ptr< icu4x::Date >, icu4x::CalendarError > from_rata_die(int64_t rd, const icu4x::Calendar &calendar)
Definition Date.hpp:123
static icu4x::diplomat::result< std::unique_ptr< icu4x::Date >, icu4x::CalendarError > from_iso_in_calendar(int32_t iso_year, uint8_t iso_month, uint8_t iso_day, const icu4x::Calendar &calendar)
Definition Date.hpp:99
bool month_is_leap() const
Definition Date.hpp:195
uint8_t ordinal_month() const
Definition Date.hpp:171
void month_code_write(W &writeable_output) const
Definition Date.hpp:184
std::unique_ptr< icu4x::Date > to_calendar(const icu4x::Calendar &calendar) const
Definition Date.hpp:135
uint16_t days_in_year() const
Definition Date.hpp:234
int32_t era_year_or_related_iso() const
Definition Date.hpp:200
int32_t extended_year() const
Definition Date.hpp:205
uint16_t day_of_year() const
Definition Date.hpp:151
static icu4x::diplomat::result< std::unique_ptr< icu4x::Date >, icu4x::Rfc9557ParseError > from_string(std::string_view v, const icu4x::Calendar &calendar)
Definition Date.hpp:129
std::unique_ptr< icu4x::Calendar > calendar() const
Definition Date.hpp:244
std::string month_code() const
Definition Date.hpp:176
static icu4x::diplomat::result< std::unique_ptr< icu4x::Date >, icu4x::CalendarDateFromFieldsError > from_fields_in_calendar(icu4x::DateFields fields, icu4x::DateFromFieldsOptions options, const icu4x::Calendar &calendar)
Definition Date.hpp:107
icu4x::diplomat::result< icu4x::DateDuration, icu4x::CalendarMismatchedCalendarError > try_until_with_options(const icu4x::Date &other, icu4x::DateDifferenceOptions options) const
Definition Date.hpp:256
bool is_in_leap_year() const
Definition Date.hpp:239
Definition Rfc9557ParseError.d.hpp:33
Definition Weekday.d.hpp:35
Definition diplomat_runtime.hpp:166
Definition Bidi.d.hpp:13
Definition CalendarMismatchedCalendarError.d.hpp:26
Definition DateAddOptions.d.hpp:35
Definition DateDifferenceOptions.d.hpp:35
Definition DateDuration.d.hpp:39
Definition DateFields.d.hpp:35
Definition DateFromFieldsOptions.d.hpp:38
Definition diplomat_runtime.hpp:146
Definition diplomat_runtime.hpp:128
Definition diplomat_runtime.hpp:117