1 #ifndef icu4x_UtcOffset_HPP 2 #define icu4x_UtcOffset_HPP 3 4 #include "UtcOffset.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 "TimeZoneInvalidOffsetError.hpp" 15 16 17 namespace icu4x { 18 namespace capi { 19 extern "C" { 20 21 typedef struct icu4x_UtcOffset_from_seconds_mv1_result {union {icu4x::capi::UtcOffset* ok; }; bool is_ok;} icu4x_UtcOffset_from_seconds_mv1_result; 22 icu4x_UtcOffset_from_seconds_mv1_result icu4x_UtcOffset_from_seconds_mv1(int32_t seconds); 23 24 icu4x::capi::UtcOffset* icu4x_UtcOffset_from_eighths_of_hour_mv1(int8_t eighths_of_hour); 25 26 typedef struct icu4x_UtcOffset_from_string_mv1_result {union {icu4x::capi::UtcOffset* ok; }; bool is_ok;} icu4x_UtcOffset_from_string_mv1_result; 27 icu4x_UtcOffset_from_string_mv1_result icu4x_UtcOffset_from_string_mv1(diplomat::capi::DiplomatStringView offset); 28 29 int8_t icu4x_UtcOffset_eighths_of_hour_mv1(const icu4x::capi::UtcOffset* self); 30 31 int32_t icu4x_UtcOffset_seconds_mv1(const icu4x::capi::UtcOffset* self); 32 33 bool icu4x_UtcOffset_is_non_negative_mv1(const icu4x::capi::UtcOffset* self); 34 35 bool icu4x_UtcOffset_is_zero_mv1(const icu4x::capi::UtcOffset* self); 36 37 int32_t icu4x_UtcOffset_hours_part_mv1(const icu4x::capi::UtcOffset* self); 38 39 uint32_t icu4x_UtcOffset_minutes_part_mv1(const icu4x::capi::UtcOffset* self); 40 41 uint32_t icu4x_UtcOffset_seconds_part_mv1(const icu4x::capi::UtcOffset* self); 42 43 44 void icu4x_UtcOffset_destroy_mv1(UtcOffset* self); 45 46 } // extern "C" 47 } // namespace capi 48 } // namespace 49 from_seconds(int32_t seconds)50inline diplomat::result<std::unique_ptr<icu4x::UtcOffset>, icu4x::TimeZoneInvalidOffsetError> icu4x::UtcOffset::from_seconds(int32_t seconds) { 51 auto result = icu4x::capi::icu4x_UtcOffset_from_seconds_mv1(seconds); 52 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::UtcOffset>, icu4x::TimeZoneInvalidOffsetError>(diplomat::Ok<std::unique_ptr<icu4x::UtcOffset>>(std::unique_ptr<icu4x::UtcOffset>(icu4x::UtcOffset::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::UtcOffset>, icu4x::TimeZoneInvalidOffsetError>(diplomat::Err<icu4x::TimeZoneInvalidOffsetError>(icu4x::TimeZoneInvalidOffsetError {})); 53 } 54 from_eighths_of_hour(int8_t eighths_of_hour)55inline std::unique_ptr<icu4x::UtcOffset> icu4x::UtcOffset::from_eighths_of_hour(int8_t eighths_of_hour) { 56 auto result = icu4x::capi::icu4x_UtcOffset_from_eighths_of_hour_mv1(eighths_of_hour); 57 return std::unique_ptr<icu4x::UtcOffset>(icu4x::UtcOffset::FromFFI(result)); 58 } 59 from_string(std::string_view offset)60inline diplomat::result<std::unique_ptr<icu4x::UtcOffset>, icu4x::TimeZoneInvalidOffsetError> icu4x::UtcOffset::from_string(std::string_view offset) { 61 auto result = icu4x::capi::icu4x_UtcOffset_from_string_mv1({offset.data(), offset.size()}); 62 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::UtcOffset>, icu4x::TimeZoneInvalidOffsetError>(diplomat::Ok<std::unique_ptr<icu4x::UtcOffset>>(std::unique_ptr<icu4x::UtcOffset>(icu4x::UtcOffset::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::UtcOffset>, icu4x::TimeZoneInvalidOffsetError>(diplomat::Err<icu4x::TimeZoneInvalidOffsetError>(icu4x::TimeZoneInvalidOffsetError {})); 63 } 64 eighths_of_hour() const65inline int8_t icu4x::UtcOffset::eighths_of_hour() const { 66 auto result = icu4x::capi::icu4x_UtcOffset_eighths_of_hour_mv1(this->AsFFI()); 67 return result; 68 } 69 seconds() const70inline int32_t icu4x::UtcOffset::seconds() const { 71 auto result = icu4x::capi::icu4x_UtcOffset_seconds_mv1(this->AsFFI()); 72 return result; 73 } 74 is_non_negative() const75inline bool icu4x::UtcOffset::is_non_negative() const { 76 auto result = icu4x::capi::icu4x_UtcOffset_is_non_negative_mv1(this->AsFFI()); 77 return result; 78 } 79 is_zero() const80inline bool icu4x::UtcOffset::is_zero() const { 81 auto result = icu4x::capi::icu4x_UtcOffset_is_zero_mv1(this->AsFFI()); 82 return result; 83 } 84 hours_part() const85inline int32_t icu4x::UtcOffset::hours_part() const { 86 auto result = icu4x::capi::icu4x_UtcOffset_hours_part_mv1(this->AsFFI()); 87 return result; 88 } 89 minutes_part() const90inline uint32_t icu4x::UtcOffset::minutes_part() const { 91 auto result = icu4x::capi::icu4x_UtcOffset_minutes_part_mv1(this->AsFFI()); 92 return result; 93 } 94 seconds_part() const95inline uint32_t icu4x::UtcOffset::seconds_part() const { 96 auto result = icu4x::capi::icu4x_UtcOffset_seconds_part_mv1(this->AsFFI()); 97 return result; 98 } 99 AsFFI() const100inline const icu4x::capi::UtcOffset* icu4x::UtcOffset::AsFFI() const { 101 return reinterpret_cast<const icu4x::capi::UtcOffset*>(this); 102 } 103 AsFFI()104inline icu4x::capi::UtcOffset* icu4x::UtcOffset::AsFFI() { 105 return reinterpret_cast<icu4x::capi::UtcOffset*>(this); 106 } 107 FromFFI(const icu4x::capi::UtcOffset * ptr)108inline const icu4x::UtcOffset* icu4x::UtcOffset::FromFFI(const icu4x::capi::UtcOffset* ptr) { 109 return reinterpret_cast<const icu4x::UtcOffset*>(ptr); 110 } 111 FromFFI(icu4x::capi::UtcOffset * ptr)112inline icu4x::UtcOffset* icu4x::UtcOffset::FromFFI(icu4x::capi::UtcOffset* ptr) { 113 return reinterpret_cast<icu4x::UtcOffset*>(ptr); 114 } 115 operator delete(void * ptr)116inline void icu4x::UtcOffset::operator delete(void* ptr) { 117 icu4x::capi::icu4x_UtcOffset_destroy_mv1(reinterpret_cast<icu4x::capi::UtcOffset*>(ptr)); 118 } 119 120 121 #endif // icu4x_UtcOffset_HPP 122