1 #ifndef icu4x_IsoDate_HPP
2 #define icu4x_IsoDate_HPP
3
4 #include "IsoDate.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 "../diplomat_runtime.hpp"
14 #include "Calendar.hpp"
15 #include "CalendarError.hpp"
16 #include "CalendarParseError.hpp"
17 #include "Date.hpp"
18 #include "WeekCalculator.hpp"
19 #include "WeekOf.hpp"
20 #include "Weekday.hpp"
21
22
23 namespace icu4x {
24 namespace capi {
25 extern "C" {
26
27 typedef struct icu4x_IsoDate_create_mv1_result {union {icu4x::capi::IsoDate* ok; icu4x::capi::CalendarError err;}; bool is_ok;} icu4x_IsoDate_create_mv1_result;
28 icu4x_IsoDate_create_mv1_result icu4x_IsoDate_create_mv1(int32_t year, uint8_t month, uint8_t day);
29
30 typedef struct icu4x_IsoDate_from_string_mv1_result {union {icu4x::capi::IsoDate* ok; icu4x::capi::CalendarParseError err;}; bool is_ok;} icu4x_IsoDate_from_string_mv1_result;
31 icu4x_IsoDate_from_string_mv1_result icu4x_IsoDate_from_string_mv1(diplomat::capi::DiplomatStringView v);
32
33 icu4x::capi::Date* icu4x_IsoDate_to_calendar_mv1(const icu4x::capi::IsoDate* self, const icu4x::capi::Calendar* calendar);
34
35 icu4x::capi::Date* icu4x_IsoDate_to_any_mv1(const icu4x::capi::IsoDate* self);
36
37 uint16_t icu4x_IsoDate_day_of_year_mv1(const icu4x::capi::IsoDate* self);
38
39 uint8_t icu4x_IsoDate_day_of_month_mv1(const icu4x::capi::IsoDate* self);
40
41 icu4x::capi::Weekday icu4x_IsoDate_day_of_week_mv1(const icu4x::capi::IsoDate* self);
42
43 uint8_t icu4x_IsoDate_week_of_month_mv1(const icu4x::capi::IsoDate* self, icu4x::capi::Weekday first_weekday);
44
45 icu4x::capi::WeekOf icu4x_IsoDate_week_of_year_mv1(const icu4x::capi::IsoDate* self, const icu4x::capi::WeekCalculator* calculator);
46
47 uint8_t icu4x_IsoDate_month_mv1(const icu4x::capi::IsoDate* self);
48
49 int32_t icu4x_IsoDate_year_mv1(const icu4x::capi::IsoDate* self);
50
51 bool icu4x_IsoDate_is_in_leap_year_mv1(const icu4x::capi::IsoDate* self);
52
53 uint8_t icu4x_IsoDate_months_in_year_mv1(const icu4x::capi::IsoDate* self);
54
55 uint8_t icu4x_IsoDate_days_in_month_mv1(const icu4x::capi::IsoDate* self);
56
57 uint16_t icu4x_IsoDate_days_in_year_mv1(const icu4x::capi::IsoDate* self);
58
59
60 void icu4x_IsoDate_destroy_mv1(IsoDate* self);
61
62 } // extern "C"
63 } // namespace capi
64 } // namespace
65
create(int32_t year,uint8_t month,uint8_t day)66 inline diplomat::result<std::unique_ptr<icu4x::IsoDate>, icu4x::CalendarError> icu4x::IsoDate::create(int32_t year, uint8_t month, uint8_t day) {
67 auto result = icu4x::capi::icu4x_IsoDate_create_mv1(year,
68 month,
69 day);
70 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::IsoDate>, icu4x::CalendarError>(diplomat::Ok<std::unique_ptr<icu4x::IsoDate>>(std::unique_ptr<icu4x::IsoDate>(icu4x::IsoDate::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::IsoDate>, icu4x::CalendarError>(diplomat::Err<icu4x::CalendarError>(icu4x::CalendarError::FromFFI(result.err)));
71 }
72
from_string(std::string_view v)73 inline diplomat::result<std::unique_ptr<icu4x::IsoDate>, icu4x::CalendarParseError> icu4x::IsoDate::from_string(std::string_view v) {
74 auto result = icu4x::capi::icu4x_IsoDate_from_string_mv1({v.data(), v.size()});
75 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::IsoDate>, icu4x::CalendarParseError>(diplomat::Ok<std::unique_ptr<icu4x::IsoDate>>(std::unique_ptr<icu4x::IsoDate>(icu4x::IsoDate::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::IsoDate>, icu4x::CalendarParseError>(diplomat::Err<icu4x::CalendarParseError>(icu4x::CalendarParseError::FromFFI(result.err)));
76 }
77
to_calendar(const icu4x::Calendar & calendar) const78 inline std::unique_ptr<icu4x::Date> icu4x::IsoDate::to_calendar(const icu4x::Calendar& calendar) const {
79 auto result = icu4x::capi::icu4x_IsoDate_to_calendar_mv1(this->AsFFI(),
80 calendar.AsFFI());
81 return std::unique_ptr<icu4x::Date>(icu4x::Date::FromFFI(result));
82 }
83
to_any() const84 inline std::unique_ptr<icu4x::Date> icu4x::IsoDate::to_any() const {
85 auto result = icu4x::capi::icu4x_IsoDate_to_any_mv1(this->AsFFI());
86 return std::unique_ptr<icu4x::Date>(icu4x::Date::FromFFI(result));
87 }
88
day_of_year() const89 inline uint16_t icu4x::IsoDate::day_of_year() const {
90 auto result = icu4x::capi::icu4x_IsoDate_day_of_year_mv1(this->AsFFI());
91 return result;
92 }
93
day_of_month() const94 inline uint8_t icu4x::IsoDate::day_of_month() const {
95 auto result = icu4x::capi::icu4x_IsoDate_day_of_month_mv1(this->AsFFI());
96 return result;
97 }
98
day_of_week() const99 inline icu4x::Weekday icu4x::IsoDate::day_of_week() const {
100 auto result = icu4x::capi::icu4x_IsoDate_day_of_week_mv1(this->AsFFI());
101 return icu4x::Weekday::FromFFI(result);
102 }
103
week_of_month(icu4x::Weekday first_weekday) const104 inline uint8_t icu4x::IsoDate::week_of_month(icu4x::Weekday first_weekday) const {
105 auto result = icu4x::capi::icu4x_IsoDate_week_of_month_mv1(this->AsFFI(),
106 first_weekday.AsFFI());
107 return result;
108 }
109
week_of_year(const icu4x::WeekCalculator & calculator) const110 inline icu4x::WeekOf icu4x::IsoDate::week_of_year(const icu4x::WeekCalculator& calculator) const {
111 auto result = icu4x::capi::icu4x_IsoDate_week_of_year_mv1(this->AsFFI(),
112 calculator.AsFFI());
113 return icu4x::WeekOf::FromFFI(result);
114 }
115
month() const116 inline uint8_t icu4x::IsoDate::month() const {
117 auto result = icu4x::capi::icu4x_IsoDate_month_mv1(this->AsFFI());
118 return result;
119 }
120
year() const121 inline int32_t icu4x::IsoDate::year() const {
122 auto result = icu4x::capi::icu4x_IsoDate_year_mv1(this->AsFFI());
123 return result;
124 }
125
is_in_leap_year() const126 inline bool icu4x::IsoDate::is_in_leap_year() const {
127 auto result = icu4x::capi::icu4x_IsoDate_is_in_leap_year_mv1(this->AsFFI());
128 return result;
129 }
130
months_in_year() const131 inline uint8_t icu4x::IsoDate::months_in_year() const {
132 auto result = icu4x::capi::icu4x_IsoDate_months_in_year_mv1(this->AsFFI());
133 return result;
134 }
135
days_in_month() const136 inline uint8_t icu4x::IsoDate::days_in_month() const {
137 auto result = icu4x::capi::icu4x_IsoDate_days_in_month_mv1(this->AsFFI());
138 return result;
139 }
140
days_in_year() const141 inline uint16_t icu4x::IsoDate::days_in_year() const {
142 auto result = icu4x::capi::icu4x_IsoDate_days_in_year_mv1(this->AsFFI());
143 return result;
144 }
145
AsFFI() const146 inline const icu4x::capi::IsoDate* icu4x::IsoDate::AsFFI() const {
147 return reinterpret_cast<const icu4x::capi::IsoDate*>(this);
148 }
149
AsFFI()150 inline icu4x::capi::IsoDate* icu4x::IsoDate::AsFFI() {
151 return reinterpret_cast<icu4x::capi::IsoDate*>(this);
152 }
153
FromFFI(const icu4x::capi::IsoDate * ptr)154 inline const icu4x::IsoDate* icu4x::IsoDate::FromFFI(const icu4x::capi::IsoDate* ptr) {
155 return reinterpret_cast<const icu4x::IsoDate*>(ptr);
156 }
157
FromFFI(icu4x::capi::IsoDate * ptr)158 inline icu4x::IsoDate* icu4x::IsoDate::FromFFI(icu4x::capi::IsoDate* ptr) {
159 return reinterpret_cast<icu4x::IsoDate*>(ptr);
160 }
161
operator delete(void * ptr)162 inline void icu4x::IsoDate::operator delete(void* ptr) {
163 icu4x::capi::icu4x_IsoDate_destroy_mv1(reinterpret_cast<icu4x::capi::IsoDate*>(ptr));
164 }
165
166
167 #endif // icu4x_IsoDate_HPP
168