TimeZone.hpp (2863B)
1 #ifndef icu4x_TimeZone_HPP 2 #define icu4x_TimeZone_HPP 3 4 #include "TimeZone.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 "TimeZoneInfo.hpp" 16 #include "UtcOffset.hpp" 17 18 19 namespace icu4x { 20 namespace capi { 21 extern "C" { 22 23 icu4x::capi::TimeZone* icu4x_TimeZone_unknown_mv1(void); 24 25 bool icu4x_TimeZone_is_unknown_mv1(const icu4x::capi::TimeZone* self); 26 27 icu4x::capi::TimeZone* icu4x_TimeZone_create_from_bcp47_mv1(diplomat::capi::DiplomatStringView id); 28 29 icu4x::capi::TimeZoneInfo* icu4x_TimeZone_with_offset_mv1(const icu4x::capi::TimeZone* self, const icu4x::capi::UtcOffset* offset); 30 31 icu4x::capi::TimeZoneInfo* icu4x_TimeZone_without_offset_mv1(const icu4x::capi::TimeZone* self); 32 33 void icu4x_TimeZone_destroy_mv1(TimeZone* self); 34 35 } // extern "C" 36 } // namespace capi 37 } // namespace 38 39 inline std::unique_ptr<icu4x::TimeZone> icu4x::TimeZone::unknown() { 40 auto result = icu4x::capi::icu4x_TimeZone_unknown_mv1(); 41 return std::unique_ptr<icu4x::TimeZone>(icu4x::TimeZone::FromFFI(result)); 42 } 43 44 inline bool icu4x::TimeZone::is_unknown() const { 45 auto result = icu4x::capi::icu4x_TimeZone_is_unknown_mv1(this->AsFFI()); 46 return result; 47 } 48 49 inline std::unique_ptr<icu4x::TimeZone> icu4x::TimeZone::create_from_bcp47(std::string_view id) { 50 auto result = icu4x::capi::icu4x_TimeZone_create_from_bcp47_mv1({id.data(), id.size()}); 51 return std::unique_ptr<icu4x::TimeZone>(icu4x::TimeZone::FromFFI(result)); 52 } 53 54 inline std::unique_ptr<icu4x::TimeZoneInfo> icu4x::TimeZone::with_offset(const icu4x::UtcOffset& offset) const { 55 auto result = icu4x::capi::icu4x_TimeZone_with_offset_mv1(this->AsFFI(), 56 offset.AsFFI()); 57 return std::unique_ptr<icu4x::TimeZoneInfo>(icu4x::TimeZoneInfo::FromFFI(result)); 58 } 59 60 inline std::unique_ptr<icu4x::TimeZoneInfo> icu4x::TimeZone::without_offset() const { 61 auto result = icu4x::capi::icu4x_TimeZone_without_offset_mv1(this->AsFFI()); 62 return std::unique_ptr<icu4x::TimeZoneInfo>(icu4x::TimeZoneInfo::FromFFI(result)); 63 } 64 65 inline const icu4x::capi::TimeZone* icu4x::TimeZone::AsFFI() const { 66 return reinterpret_cast<const icu4x::capi::TimeZone*>(this); 67 } 68 69 inline icu4x::capi::TimeZone* icu4x::TimeZone::AsFFI() { 70 return reinterpret_cast<icu4x::capi::TimeZone*>(this); 71 } 72 73 inline const icu4x::TimeZone* icu4x::TimeZone::FromFFI(const icu4x::capi::TimeZone* ptr) { 74 return reinterpret_cast<const icu4x::TimeZone*>(ptr); 75 } 76 77 inline icu4x::TimeZone* icu4x::TimeZone::FromFFI(icu4x::capi::TimeZone* ptr) { 78 return reinterpret_cast<icu4x::TimeZone*>(ptr); 79 } 80 81 inline void icu4x::TimeZone::operator delete(void* ptr) { 82 icu4x::capi::icu4x_TimeZone_destroy_mv1(reinterpret_cast<icu4x::capi::TimeZone*>(ptr)); 83 } 84 85 86 #endif // icu4x_TimeZone_HPP