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