• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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