IsoDate.hpp (6634B)
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 <cstdlib> 14 #include "../diplomat_runtime.hpp" 15 #include "Calendar.hpp" 16 #include "CalendarError.hpp" 17 #include "Date.hpp" 18 #include "IsoWeekOfYear.hpp" 19 #include "Rfc9557ParseError.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 icu4x::capi::IsoDate* icu4x_IsoDate_from_rata_die_mv1(int64_t rd); 31 32 typedef struct icu4x_IsoDate_from_string_mv1_result {union {icu4x::capi::IsoDate* ok; icu4x::capi::Rfc9557ParseError err;}; bool is_ok;} icu4x_IsoDate_from_string_mv1_result; 33 icu4x_IsoDate_from_string_mv1_result icu4x_IsoDate_from_string_mv1(diplomat::capi::DiplomatStringView v); 34 35 icu4x::capi::Date* icu4x_IsoDate_to_calendar_mv1(const icu4x::capi::IsoDate* self, const icu4x::capi::Calendar* calendar); 36 37 icu4x::capi::Date* icu4x_IsoDate_to_any_mv1(const icu4x::capi::IsoDate* self); 38 39 int64_t icu4x_IsoDate_to_rata_die_mv1(const icu4x::capi::IsoDate* self); 40 41 uint16_t icu4x_IsoDate_day_of_year_mv1(const icu4x::capi::IsoDate* self); 42 43 uint8_t icu4x_IsoDate_day_of_month_mv1(const icu4x::capi::IsoDate* self); 44 45 icu4x::capi::Weekday icu4x_IsoDate_day_of_week_mv1(const icu4x::capi::IsoDate* self); 46 47 icu4x::capi::IsoWeekOfYear icu4x_IsoDate_week_of_year_mv1(const icu4x::capi::IsoDate* self); 48 49 uint8_t icu4x_IsoDate_month_mv1(const icu4x::capi::IsoDate* self); 50 51 int32_t icu4x_IsoDate_year_mv1(const icu4x::capi::IsoDate* self); 52 53 bool icu4x_IsoDate_is_in_leap_year_mv1(const icu4x::capi::IsoDate* self); 54 55 uint8_t icu4x_IsoDate_months_in_year_mv1(const icu4x::capi::IsoDate* self); 56 57 uint8_t icu4x_IsoDate_days_in_month_mv1(const icu4x::capi::IsoDate* self); 58 59 uint16_t icu4x_IsoDate_days_in_year_mv1(const icu4x::capi::IsoDate* self); 60 61 void icu4x_IsoDate_destroy_mv1(IsoDate* self); 62 63 } // extern "C" 64 } // namespace capi 65 } // namespace 66 67 inline diplomat::result<std::unique_ptr<icu4x::IsoDate>, icu4x::CalendarError> icu4x::IsoDate::create(int32_t year, uint8_t month, uint8_t day) { 68 auto result = icu4x::capi::icu4x_IsoDate_create_mv1(year, 69 month, 70 day); 71 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))); 72 } 73 74 inline std::unique_ptr<icu4x::IsoDate> icu4x::IsoDate::from_rata_die(int64_t rd) { 75 auto result = icu4x::capi::icu4x_IsoDate_from_rata_die_mv1(rd); 76 return std::unique_ptr<icu4x::IsoDate>(icu4x::IsoDate::FromFFI(result)); 77 } 78 79 inline diplomat::result<std::unique_ptr<icu4x::IsoDate>, icu4x::Rfc9557ParseError> icu4x::IsoDate::from_string(std::string_view v) { 80 auto result = icu4x::capi::icu4x_IsoDate_from_string_mv1({v.data(), v.size()}); 81 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::IsoDate>, icu4x::Rfc9557ParseError>(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::Rfc9557ParseError>(diplomat::Err<icu4x::Rfc9557ParseError>(icu4x::Rfc9557ParseError::FromFFI(result.err))); 82 } 83 84 inline std::unique_ptr<icu4x::Date> icu4x::IsoDate::to_calendar(const icu4x::Calendar& calendar) const { 85 auto result = icu4x::capi::icu4x_IsoDate_to_calendar_mv1(this->AsFFI(), 86 calendar.AsFFI()); 87 return std::unique_ptr<icu4x::Date>(icu4x::Date::FromFFI(result)); 88 } 89 90 inline std::unique_ptr<icu4x::Date> icu4x::IsoDate::to_any() const { 91 auto result = icu4x::capi::icu4x_IsoDate_to_any_mv1(this->AsFFI()); 92 return std::unique_ptr<icu4x::Date>(icu4x::Date::FromFFI(result)); 93 } 94 95 inline int64_t icu4x::IsoDate::to_rata_die() const { 96 auto result = icu4x::capi::icu4x_IsoDate_to_rata_die_mv1(this->AsFFI()); 97 return result; 98 } 99 100 inline uint16_t icu4x::IsoDate::day_of_year() const { 101 auto result = icu4x::capi::icu4x_IsoDate_day_of_year_mv1(this->AsFFI()); 102 return result; 103 } 104 105 inline uint8_t icu4x::IsoDate::day_of_month() const { 106 auto result = icu4x::capi::icu4x_IsoDate_day_of_month_mv1(this->AsFFI()); 107 return result; 108 } 109 110 inline icu4x::Weekday icu4x::IsoDate::day_of_week() const { 111 auto result = icu4x::capi::icu4x_IsoDate_day_of_week_mv1(this->AsFFI()); 112 return icu4x::Weekday::FromFFI(result); 113 } 114 115 inline icu4x::IsoWeekOfYear icu4x::IsoDate::week_of_year() const { 116 auto result = icu4x::capi::icu4x_IsoDate_week_of_year_mv1(this->AsFFI()); 117 return icu4x::IsoWeekOfYear::FromFFI(result); 118 } 119 120 inline uint8_t icu4x::IsoDate::month() const { 121 auto result = icu4x::capi::icu4x_IsoDate_month_mv1(this->AsFFI()); 122 return result; 123 } 124 125 inline int32_t icu4x::IsoDate::year() const { 126 auto result = icu4x::capi::icu4x_IsoDate_year_mv1(this->AsFFI()); 127 return result; 128 } 129 130 inline bool icu4x::IsoDate::is_in_leap_year() const { 131 auto result = icu4x::capi::icu4x_IsoDate_is_in_leap_year_mv1(this->AsFFI()); 132 return result; 133 } 134 135 inline uint8_t icu4x::IsoDate::months_in_year() const { 136 auto result = icu4x::capi::icu4x_IsoDate_months_in_year_mv1(this->AsFFI()); 137 return result; 138 } 139 140 inline uint8_t icu4x::IsoDate::days_in_month() const { 141 auto result = icu4x::capi::icu4x_IsoDate_days_in_month_mv1(this->AsFFI()); 142 return result; 143 } 144 145 inline uint16_t icu4x::IsoDate::days_in_year() const { 146 auto result = icu4x::capi::icu4x_IsoDate_days_in_year_mv1(this->AsFFI()); 147 return result; 148 } 149 150 inline const icu4x::capi::IsoDate* icu4x::IsoDate::AsFFI() const { 151 return reinterpret_cast<const icu4x::capi::IsoDate*>(this); 152 } 153 154 inline icu4x::capi::IsoDate* icu4x::IsoDate::AsFFI() { 155 return reinterpret_cast<icu4x::capi::IsoDate*>(this); 156 } 157 158 inline const icu4x::IsoDate* icu4x::IsoDate::FromFFI(const icu4x::capi::IsoDate* ptr) { 159 return reinterpret_cast<const icu4x::IsoDate*>(ptr); 160 } 161 162 inline icu4x::IsoDate* icu4x::IsoDate::FromFFI(icu4x::capi::IsoDate* ptr) { 163 return reinterpret_cast<icu4x::IsoDate*>(ptr); 164 } 165 166 inline void icu4x::IsoDate::operator delete(void* ptr) { 167 icu4x::capi::icu4x_IsoDate_destroy_mv1(reinterpret_cast<icu4x::capi::IsoDate*>(ptr)); 168 } 169 170 171 #endif // icu4x_IsoDate_HPP