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