1 #ifndef icu4x_AnyCalendarKind_HPP 2 #define icu4x_AnyCalendarKind_HPP 3 4 #include "AnyCalendarKind.d.hpp" 5 6 #include <stdio.h> 7 #include <stdint.h> 8 #include <stddef.h> 9 #include <stdbool.h> 10 #include <memory> 11 #include <functional> 12 #include <optional> 13 #include "../diplomat_runtime.hpp" 14 #include "Locale.hpp" 15 16 17 namespace icu4x { 18 namespace capi { 19 extern "C" { 20 21 typedef struct icu4x_AnyCalendarKind_get_for_locale_mv1_result {union {icu4x::capi::AnyCalendarKind ok; }; bool is_ok;} icu4x_AnyCalendarKind_get_for_locale_mv1_result; 22 icu4x_AnyCalendarKind_get_for_locale_mv1_result icu4x_AnyCalendarKind_get_for_locale_mv1(const icu4x::capi::Locale* locale); 23 24 typedef struct icu4x_AnyCalendarKind_get_for_bcp47_mv1_result {union {icu4x::capi::AnyCalendarKind ok; }; bool is_ok;} icu4x_AnyCalendarKind_get_for_bcp47_mv1_result; 25 icu4x_AnyCalendarKind_get_for_bcp47_mv1_result icu4x_AnyCalendarKind_get_for_bcp47_mv1(diplomat::capi::DiplomatStringView s); 26 27 void icu4x_AnyCalendarKind_bcp47_mv1(icu4x::capi::AnyCalendarKind self, diplomat::capi::DiplomatWrite* write); 28 29 30 } // extern "C" 31 } // namespace capi 32 } // namespace 33 AsFFI() const34inline icu4x::capi::AnyCalendarKind icu4x::AnyCalendarKind::AsFFI() const { 35 return static_cast<icu4x::capi::AnyCalendarKind>(value); 36 } 37 FromFFI(icu4x::capi::AnyCalendarKind c_enum)38inline icu4x::AnyCalendarKind icu4x::AnyCalendarKind::FromFFI(icu4x::capi::AnyCalendarKind c_enum) { 39 switch (c_enum) { 40 case icu4x::capi::AnyCalendarKind_Iso: 41 case icu4x::capi::AnyCalendarKind_Gregorian: 42 case icu4x::capi::AnyCalendarKind_Buddhist: 43 case icu4x::capi::AnyCalendarKind_Japanese: 44 case icu4x::capi::AnyCalendarKind_JapaneseExtended: 45 case icu4x::capi::AnyCalendarKind_Ethiopian: 46 case icu4x::capi::AnyCalendarKind_EthiopianAmeteAlem: 47 case icu4x::capi::AnyCalendarKind_Indian: 48 case icu4x::capi::AnyCalendarKind_Coptic: 49 case icu4x::capi::AnyCalendarKind_Dangi: 50 case icu4x::capi::AnyCalendarKind_Chinese: 51 case icu4x::capi::AnyCalendarKind_Hebrew: 52 case icu4x::capi::AnyCalendarKind_IslamicCivil: 53 case icu4x::capi::AnyCalendarKind_IslamicObservational: 54 case icu4x::capi::AnyCalendarKind_IslamicTabular: 55 case icu4x::capi::AnyCalendarKind_IslamicUmmAlQura: 56 case icu4x::capi::AnyCalendarKind_Persian: 57 case icu4x::capi::AnyCalendarKind_Roc: 58 return static_cast<icu4x::AnyCalendarKind::Value>(c_enum); 59 default: 60 abort(); 61 } 62 } 63 get_for_locale(const icu4x::Locale & locale)64inline std::optional<icu4x::AnyCalendarKind> icu4x::AnyCalendarKind::get_for_locale(const icu4x::Locale& locale) { 65 auto result = icu4x::capi::icu4x_AnyCalendarKind_get_for_locale_mv1(locale.AsFFI()); 66 return result.is_ok ? std::optional<icu4x::AnyCalendarKind>(icu4x::AnyCalendarKind::FromFFI(result.ok)) : std::nullopt; 67 } 68 get_for_bcp47(std::string_view s)69inline std::optional<icu4x::AnyCalendarKind> icu4x::AnyCalendarKind::get_for_bcp47(std::string_view s) { 70 auto result = icu4x::capi::icu4x_AnyCalendarKind_get_for_bcp47_mv1({s.data(), s.size()}); 71 return result.is_ok ? std::optional<icu4x::AnyCalendarKind>(icu4x::AnyCalendarKind::FromFFI(result.ok)) : std::nullopt; 72 } 73 bcp47()74inline std::string icu4x::AnyCalendarKind::bcp47() { 75 std::string output; 76 diplomat::capi::DiplomatWrite write = diplomat::WriteFromString(output); 77 icu4x::capi::icu4x_AnyCalendarKind_bcp47_mv1(this->AsFFI(), 78 &write); 79 return output; 80 } 81 #endif // icu4x_AnyCalendarKind_HPP 82