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"
16#include "CalendarError.hpp"
17#include "DateFields.hpp"
19#include "IsoDate.hpp"
20#include "Rfc9557ParseError.hpp"
21#include "Weekday.hpp"
22#include "diplomat_runtime.hpp"
23
24
25namespace icu4x {
26namespace capi {
27 extern "C" {
28
29 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;
30 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);
31
32 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;
33 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);
34
35 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;
36 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);
37
38 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;
39 icu4x_Date_from_rata_die_mv1_result icu4x_Date_from_rata_die_mv1(int64_t rd, const icu4x::capi::Calendar* calendar);
40
41 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;
42 icu4x_Date_from_string_mv1_result icu4x_Date_from_string_mv1(icu4x::diplomat::capi::DiplomatStringView v, const icu4x::capi::Calendar* calendar);
43
44 icu4x::capi::Date* icu4x_Date_to_calendar_mv1(const icu4x::capi::Date* self, const icu4x::capi::Calendar* calendar);
45
46 icu4x::capi::IsoDate* icu4x_Date_to_iso_mv1(const icu4x::capi::Date* self);
47
48 int64_t icu4x_Date_to_rata_die_mv1(const icu4x::capi::Date* self);
49
50 uint16_t icu4x_Date_day_of_year_mv1(const icu4x::capi::Date* self);
51
52 uint8_t icu4x_Date_day_of_month_mv1(const icu4x::capi::Date* self);
53
54 icu4x::capi::Weekday icu4x_Date_day_of_week_mv1(const icu4x::capi::Date* self);
55
56 uint8_t icu4x_Date_ordinal_month_mv1(const icu4x::capi::Date* self);
57
58 void icu4x_Date_month_code_mv1(const icu4x::capi::Date* self, icu4x::diplomat::capi::DiplomatWrite* write);
59
60 uint8_t icu4x_Date_month_number_mv1(const icu4x::capi::Date* self);
61
62 bool icu4x_Date_month_is_leap_mv1(const icu4x::capi::Date* self);
63
64 int32_t icu4x_Date_era_year_or_related_iso_mv1(const icu4x::capi::Date* self);
65
66 int32_t icu4x_Date_extended_year_mv1(const icu4x::capi::Date* self);
67
68 void icu4x_Date_era_mv1(const icu4x::capi::Date* self, icu4x::diplomat::capi::DiplomatWrite* write);
69
70 uint8_t icu4x_Date_months_in_year_mv1(const icu4x::capi::Date* self);
71
72 uint8_t icu4x_Date_days_in_month_mv1(const icu4x::capi::Date* self);
73
74 uint16_t icu4x_Date_days_in_year_mv1(const icu4x::capi::Date* self);
75
76 icu4x::capi::Calendar* icu4x_Date_calendar_mv1(const icu4x::capi::Date* self);
77
78 void icu4x_Date_destroy_mv1(Date* self);
79
80 } // extern "C"
81} // namespace capi
82} // namespace
83
85 auto result = icu4x::capi::icu4x_Date_from_iso_in_calendar_mv1(iso_year,
86 iso_month,
87 iso_day,
88 calendar.AsFFI());
90}
91
93 auto result = icu4x::capi::icu4x_Date_from_fields_in_calendar_mv1(fields.AsFFI(),
94 options.AsFFI(),
95 calendar.AsFFI());
97}
98
99inline 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) {
100 auto result = icu4x::capi::icu4x_Date_from_codes_in_calendar_mv1({era_code.data(), era_code.size()},
101 year,
102 {month_code.data(), month_code.size()},
103 day,
104 calendar.AsFFI());
106}
107
109 auto result = icu4x::capi::icu4x_Date_from_rata_die_mv1(rd,
110 calendar.AsFFI());
112}
113
115 auto result = icu4x::capi::icu4x_Date_from_string_mv1({v.data(), v.size()},
116 calendar.AsFFI());
118}
119
120inline std::unique_ptr<icu4x::Date> icu4x::Date::to_calendar(const icu4x::Calendar& calendar) const {
121 auto result = icu4x::capi::icu4x_Date_to_calendar_mv1(this->AsFFI(),
122 calendar.AsFFI());
123 return std::unique_ptr<icu4x::Date>(icu4x::Date::FromFFI(result));
124}
125
126inline std::unique_ptr<icu4x::IsoDate> icu4x::Date::to_iso() const {
127 auto result = icu4x::capi::icu4x_Date_to_iso_mv1(this->AsFFI());
128 return std::unique_ptr<icu4x::IsoDate>(icu4x::IsoDate::FromFFI(result));
129}
130
131inline int64_t icu4x::Date::to_rata_die() const {
132 auto result = icu4x::capi::icu4x_Date_to_rata_die_mv1(this->AsFFI());
133 return result;
134}
135
136inline uint16_t icu4x::Date::day_of_year() const {
137 auto result = icu4x::capi::icu4x_Date_day_of_year_mv1(this->AsFFI());
138 return result;
139}
140
141inline uint8_t icu4x::Date::day_of_month() const {
142 auto result = icu4x::capi::icu4x_Date_day_of_month_mv1(this->AsFFI());
143 return result;
144}
145
147 auto result = icu4x::capi::icu4x_Date_day_of_week_mv1(this->AsFFI());
148 return icu4x::Weekday::FromFFI(result);
149}
150
151inline uint8_t icu4x::Date::ordinal_month() const {
152 auto result = icu4x::capi::icu4x_Date_ordinal_month_mv1(this->AsFFI());
153 return result;
154}
155
156inline std::string icu4x::Date::month_code() const {
157 std::string output;
158 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteFromString(output);
159 icu4x::capi::icu4x_Date_month_code_mv1(this->AsFFI(),
160 &write);
161 return output;
162}
163template<typename W>
164inline void icu4x::Date::month_code_write(W& writeable) const {
165 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteTrait<W>::Construct(writeable);
166 icu4x::capi::icu4x_Date_month_code_mv1(this->AsFFI(),
167 &write);
168}
169
170inline uint8_t icu4x::Date::month_number() const {
171 auto result = icu4x::capi::icu4x_Date_month_number_mv1(this->AsFFI());
172 return result;
173}
174
175inline bool icu4x::Date::month_is_leap() const {
176 auto result = icu4x::capi::icu4x_Date_month_is_leap_mv1(this->AsFFI());
177 return result;
178}
179
181 auto result = icu4x::capi::icu4x_Date_era_year_or_related_iso_mv1(this->AsFFI());
182 return result;
183}
184
185inline int32_t icu4x::Date::extended_year() const {
186 auto result = icu4x::capi::icu4x_Date_extended_year_mv1(this->AsFFI());
187 return result;
188}
189
190inline std::string icu4x::Date::era() const {
191 std::string output;
192 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteFromString(output);
193 icu4x::capi::icu4x_Date_era_mv1(this->AsFFI(),
194 &write);
195 return output;
196}
197template<typename W>
198inline void icu4x::Date::era_write(W& writeable) const {
199 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteTrait<W>::Construct(writeable);
200 icu4x::capi::icu4x_Date_era_mv1(this->AsFFI(),
201 &write);
202}
203
204inline uint8_t icu4x::Date::months_in_year() const {
205 auto result = icu4x::capi::icu4x_Date_months_in_year_mv1(this->AsFFI());
206 return result;
207}
208
209inline uint8_t icu4x::Date::days_in_month() const {
210 auto result = icu4x::capi::icu4x_Date_days_in_month_mv1(this->AsFFI());
211 return result;
212}
213
214inline uint16_t icu4x::Date::days_in_year() const {
215 auto result = icu4x::capi::icu4x_Date_days_in_year_mv1(this->AsFFI());
216 return result;
217}
218
219inline std::unique_ptr<icu4x::Calendar> icu4x::Date::calendar() const {
220 auto result = icu4x::capi::icu4x_Date_calendar_mv1(this->AsFFI());
221 return std::unique_ptr<icu4x::Calendar>(icu4x::Calendar::FromFFI(result));
222}
223
224inline const icu4x::capi::Date* icu4x::Date::AsFFI() const {
225 return reinterpret_cast<const icu4x::capi::Date*>(this);
226}
227
228inline icu4x::capi::Date* icu4x::Date::AsFFI() {
229 return reinterpret_cast<icu4x::capi::Date*>(this);
230}
231
232inline const icu4x::Date* icu4x::Date::FromFFI(const icu4x::capi::Date* ptr) {
233 return reinterpret_cast<const icu4x::Date*>(ptr);
234}
235
236inline icu4x::Date* icu4x::Date::FromFFI(icu4x::capi::Date* ptr) {
237 return reinterpret_cast<icu4x::Date*>(ptr);
238}
239
240inline void icu4x::Date::operator delete(void* ptr) {
241 icu4x::capi::icu4x_Date_destroy_mv1(reinterpret_cast<icu4x::capi::Date*>(ptr));
242}
243
244
245#endif // ICU4X_Date_HPP
Definition CalendarDateFromFieldsError.d.hpp:37
Definition CalendarError.d.hpp:32
Definition Calendar.d.hpp:34
icu4x::Weekday day_of_week() const
Definition Date.hpp:146
std::unique_ptr< icu4x::IsoDate > to_iso() const
Definition Date.hpp:126
void era_write(W &writeable_output) const
Definition Date.hpp:198
uint8_t days_in_month() const
Definition Date.hpp:209
int64_t to_rata_die() const
Definition Date.hpp:131
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:99
std::string era() const
Definition Date.hpp:190
uint8_t month_number() const
Definition Date.hpp:170
uint8_t day_of_month() const
Definition Date.hpp:141
uint8_t months_in_year() const
Definition Date.hpp:204
static icu4x::diplomat::result< std::unique_ptr< icu4x::Date >, icu4x::CalendarError > from_rata_die(int64_t rd, const icu4x::Calendar &calendar)
Definition Date.hpp:108
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:84
bool month_is_leap() const
Definition Date.hpp:175
uint8_t ordinal_month() const
Definition Date.hpp:151
void month_code_write(W &writeable_output) const
Definition Date.hpp:164
std::unique_ptr< icu4x::Date > to_calendar(const icu4x::Calendar &calendar) const
Definition Date.hpp:120
uint16_t days_in_year() const
Definition Date.hpp:214
int32_t era_year_or_related_iso() const
Definition Date.hpp:180
int32_t extended_year() const
Definition Date.hpp:185
uint16_t day_of_year() const
Definition Date.hpp:136
static icu4x::diplomat::result< std::unique_ptr< icu4x::Date >, icu4x::Rfc9557ParseError > from_string(std::string_view v, const icu4x::Calendar &calendar)
Definition Date.hpp:114
std::unique_ptr< icu4x::Calendar > calendar() const
Definition Date.hpp:219
std::string month_code() const
Definition Date.hpp:156
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:92
Definition Rfc9557ParseError.d.hpp:33
Definition Weekday.d.hpp:35
Definition diplomat_runtime.hpp:166
Definition Bidi.d.hpp:13
Definition DateFields.d.hpp:37
Definition DateFromFieldsOptions.d.hpp:40
Definition diplomat_runtime.hpp:146
Definition diplomat_runtime.hpp:128
Definition diplomat_runtime.hpp:117