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