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