• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef icu4x_AnyCalendarKind_D_HPP
2 #define icu4x_AnyCalendarKind_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 Locale; }
15 class Locale;
16 class AnyCalendarKind;
17 }
18 
19 
20 namespace icu4x {
21 namespace capi {
22     enum AnyCalendarKind {
23       AnyCalendarKind_Iso = 0,
24       AnyCalendarKind_Gregorian = 1,
25       AnyCalendarKind_Buddhist = 2,
26       AnyCalendarKind_Japanese = 3,
27       AnyCalendarKind_JapaneseExtended = 4,
28       AnyCalendarKind_Ethiopian = 5,
29       AnyCalendarKind_EthiopianAmeteAlem = 6,
30       AnyCalendarKind_Indian = 7,
31       AnyCalendarKind_Coptic = 8,
32       AnyCalendarKind_Dangi = 9,
33       AnyCalendarKind_Chinese = 10,
34       AnyCalendarKind_Hebrew = 11,
35       AnyCalendarKind_IslamicCivil = 12,
36       AnyCalendarKind_IslamicObservational = 13,
37       AnyCalendarKind_IslamicTabular = 14,
38       AnyCalendarKind_IslamicUmmAlQura = 15,
39       AnyCalendarKind_Persian = 16,
40       AnyCalendarKind_Roc = 17,
41     };
42 
43     typedef struct AnyCalendarKind_option {union { AnyCalendarKind ok; }; bool is_ok; } AnyCalendarKind_option;
44 } // namespace capi
45 } // namespace
46 
47 namespace icu4x {
48 class AnyCalendarKind {
49 public:
50   enum Value {
51     Iso = 0,
52     Gregorian = 1,
53     Buddhist = 2,
54     Japanese = 3,
55     JapaneseExtended = 4,
56     Ethiopian = 5,
57     EthiopianAmeteAlem = 6,
58     Indian = 7,
59     Coptic = 8,
60     Dangi = 9,
61     Chinese = 10,
62     Hebrew = 11,
63     IslamicCivil = 12,
64     IslamicObservational = 13,
65     IslamicTabular = 14,
66     IslamicUmmAlQura = 15,
67     Persian = 16,
68     Roc = 17,
69   };
70 
71   AnyCalendarKind() = default;
72   // Implicit conversions between enum and ::Value
AnyCalendarKind(Value v)73   constexpr AnyCalendarKind(Value v) : value(v) {}
operator Value() const74   constexpr operator Value() const { return value; }
75   // Prevent usage as boolean value
76   explicit operator bool() const = delete;
77 
78   inline static std::optional<icu4x::AnyCalendarKind> get_for_locale(const icu4x::Locale& locale);
79 
80   inline static std::optional<icu4x::AnyCalendarKind> get_for_bcp47(std::string_view s);
81 
82   inline std::string bcp47();
83 
84   inline icu4x::capi::AnyCalendarKind AsFFI() const;
85   inline static icu4x::AnyCalendarKind FromFFI(icu4x::capi::AnyCalendarKind c_enum);
86 private:
87     Value value;
88 };
89 
90 } // namespace
91 #endif // icu4x_AnyCalendarKind_D_HPP
92