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