1 #ifndef icu4x_TimeZoneInfo_D_HPP 2 #define icu4x_TimeZoneInfo_D_HPP 3 4 #include <stdio.h> 5 #include <stdint.h> 6 #include <stddef.h> 7 #include <stdbool.h> 8 #include <memory> 9 #include <functional> 10 #include <optional> 11 #include "../diplomat_runtime.hpp" 12 13 namespace icu4x { 14 namespace capi { struct IsoDate; } 15 class IsoDate; 16 namespace capi { struct Time; } 17 class Time; 18 namespace capi { struct TimeZone; } 19 class TimeZone; 20 namespace capi { struct TimeZoneInfo; } 21 class TimeZoneInfo; 22 namespace capi { struct UtcOffset; } 23 class UtcOffset; 24 namespace capi { struct UtcOffsetCalculator; } 25 class UtcOffsetCalculator; 26 struct IsoDateTime; 27 class TimeZoneVariant; 28 } 29 30 31 namespace icu4x { 32 namespace capi { 33 struct TimeZoneInfo; 34 } // namespace capi 35 } // namespace 36 37 namespace icu4x { 38 class TimeZoneInfo { 39 public: 40 41 inline static std::unique_ptr<icu4x::TimeZoneInfo> utc(); 42 43 inline static std::unique_ptr<icu4x::TimeZoneInfo> from_parts(const icu4x::TimeZone& time_zone_id, const icu4x::UtcOffset* offset, std::optional<icu4x::TimeZoneVariant> zone_variant); 44 45 inline std::unique_ptr<icu4x::TimeZone> time_zone_id() const; 46 47 inline std::unique_ptr<icu4x::TimeZoneInfo> at_time(const icu4x::IsoDate& date, const icu4x::Time& time) const; 48 49 inline std::optional<icu4x::IsoDateTime> local_time() const; 50 51 inline std::unique_ptr<icu4x::TimeZoneInfo> with_zone_variant(icu4x::TimeZoneVariant time_zone_variant) const; 52 53 inline std::optional<std::monostate> infer_zone_variant(const icu4x::UtcOffsetCalculator& offset_calculator); 54 55 inline std::optional<icu4x::TimeZoneVariant> zone_variant() const; 56 57 inline const icu4x::capi::TimeZoneInfo* AsFFI() const; 58 inline icu4x::capi::TimeZoneInfo* AsFFI(); 59 inline static const icu4x::TimeZoneInfo* FromFFI(const icu4x::capi::TimeZoneInfo* ptr); 60 inline static icu4x::TimeZoneInfo* FromFFI(icu4x::capi::TimeZoneInfo* ptr); 61 inline static void operator delete(void* ptr); 62 private: 63 TimeZoneInfo() = delete; 64 TimeZoneInfo(const icu4x::TimeZoneInfo&) = delete; 65 TimeZoneInfo(icu4x::TimeZoneInfo&&) noexcept = delete; 66 TimeZoneInfo operator=(const icu4x::TimeZoneInfo&) = delete; 67 TimeZoneInfo operator=(icu4x::TimeZoneInfo&&) noexcept = delete; 68 static void operator delete[](void*, size_t) = delete; 69 }; 70 71 } // namespace 72 #endif // icu4x_TimeZoneInfo_D_HPP 73