1 #ifndef icu4x_ZonedIsoDateTime_D_HPP 2 #define icu4x_ZonedIsoDateTime_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 IanaParser; } 15 class IanaParser; 16 namespace capi { struct IsoDate; } 17 class IsoDate; 18 namespace capi { struct Time; } 19 class Time; 20 namespace capi { struct TimeZoneInfo; } 21 class TimeZoneInfo; 22 namespace capi { struct UtcOffsetCalculator; } 23 class UtcOffsetCalculator; 24 struct ZonedIsoDateTime; 25 class CalendarParseError; 26 } 27 28 29 namespace icu4x { 30 namespace capi { 31 struct ZonedIsoDateTime { 32 icu4x::capi::IsoDate* date; 33 icu4x::capi::Time* time; 34 icu4x::capi::TimeZoneInfo* zone; 35 }; 36 37 typedef struct ZonedIsoDateTime_option {union { ZonedIsoDateTime ok; }; bool is_ok; } ZonedIsoDateTime_option; 38 } // namespace capi 39 } // namespace 40 41 42 namespace icu4x { 43 struct ZonedIsoDateTime { 44 std::unique_ptr<icu4x::IsoDate> date; 45 std::unique_ptr<icu4x::Time> time; 46 std::unique_ptr<icu4x::TimeZoneInfo> zone; 47 48 inline static diplomat::result<icu4x::ZonedIsoDateTime, icu4x::CalendarParseError> from_string(std::string_view v, const icu4x::IanaParser& iana_parser, const icu4x::UtcOffsetCalculator& offset_calculator); 49 50 inline icu4x::capi::ZonedIsoDateTime AsFFI() const; 51 inline static icu4x::ZonedIsoDateTime FromFFI(icu4x::capi::ZonedIsoDateTime c_struct); 52 }; 53 54 } // namespace 55 #endif // icu4x_ZonedIsoDateTime_D_HPP 56