ZonedIsoDateTime.d.hpp (2687B)
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 <cstdlib> 12 #include "../diplomat_runtime.hpp" 13 14 namespace icu4x { 15 namespace capi { struct IanaParser; } 16 class IanaParser; 17 namespace capi { struct IsoDate; } 18 class IsoDate; 19 namespace capi { struct Time; } 20 class Time; 21 namespace capi { struct TimeZoneInfo; } 22 class TimeZoneInfo; 23 namespace capi { struct UtcOffset; } 24 class UtcOffset; 25 namespace capi { struct VariantOffsetsCalculator; } 26 class VariantOffsetsCalculator; 27 struct ZonedIsoDateTime; 28 class Rfc9557ParseError; 29 } 30 31 32 namespace icu4x { 33 namespace capi { 34 struct ZonedIsoDateTime { 35 icu4x::capi::IsoDate* date; 36 icu4x::capi::Time* time; 37 icu4x::capi::TimeZoneInfo* zone; 38 }; 39 40 typedef struct ZonedIsoDateTime_option {union { ZonedIsoDateTime ok; }; bool is_ok; } ZonedIsoDateTime_option; 41 } // namespace capi 42 } // namespace 43 44 45 namespace icu4x { 46 /** 47 * An ICU4X ZonedDateTime object capable of containing a ISO-8601 date, time, and zone. 48 * 49 * See the [Rust documentation for `ZonedDateTime`](https://docs.rs/icu/latest/icu/time/struct.ZonedDateTime.html) for more information. 50 */ 51 struct ZonedIsoDateTime { 52 std::unique_ptr<icu4x::IsoDate> date; 53 std::unique_ptr<icu4x::Time> time; 54 std::unique_ptr<icu4x::TimeZoneInfo> zone; 55 56 /** 57 * Creates a new [`ZonedIsoDateTime`] from an IXDTF string. 58 * 59 * See the [Rust documentation for `try_full_from_str`](https://docs.rs/icu/latest/icu/time/struct.ZonedDateTime.html#method.try_full_from_str) for more information. 60 */ 61 inline static diplomat::result<icu4x::ZonedIsoDateTime, icu4x::Rfc9557ParseError> full_from_string(std::string_view v, const icu4x::IanaParser& iana_parser, const icu4x::VariantOffsetsCalculator& offset_calculator); 62 63 /** 64 * Creates a new [`ZonedIsoDateTime`] from milliseconds since epoch (timestamp) and a UTC offset. 65 * 66 * Note: [`ZonedIsoDateTime`]s created with this constructor can only be formatted using localized offset zone styles. 67 * 68 * See the [Rust documentation for `from_epoch_milliseconds_and_utc_offset`](https://docs.rs/icu/latest/icu/time/struct.ZonedDateTime.html#method.from_epoch_milliseconds_and_utc_offset) for more information. 69 */ 70 inline static icu4x::ZonedIsoDateTime from_epoch_milliseconds_and_utc_offset(int64_t epoch_milliseconds, const icu4x::UtcOffset& utc_offset); 71 72 inline icu4x::capi::ZonedIsoDateTime AsFFI() const; 73 inline static icu4x::ZonedIsoDateTime FromFFI(icu4x::capi::ZonedIsoDateTime c_struct); 74 }; 75 76 } // namespace 77 #endif // icu4x_ZonedIsoDateTime_D_HPP