TimePrecision.hpp (2011B)
1 #ifndef icu4x_TimePrecision_HPP 2 #define icu4x_TimePrecision_HPP 3 4 #include "TimePrecision.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 <cstdlib> 14 #include "../diplomat_runtime.hpp" 15 16 17 namespace icu4x { 18 namespace capi { 19 extern "C" { 20 21 typedef struct icu4x_TimePrecision_from_subsecond_digits_mv1_result {union {icu4x::capi::TimePrecision ok; }; bool is_ok;} icu4x_TimePrecision_from_subsecond_digits_mv1_result; 22 icu4x_TimePrecision_from_subsecond_digits_mv1_result icu4x_TimePrecision_from_subsecond_digits_mv1(uint8_t digits); 23 24 } // extern "C" 25 } // namespace capi 26 } // namespace 27 28 inline icu4x::capi::TimePrecision icu4x::TimePrecision::AsFFI() const { 29 return static_cast<icu4x::capi::TimePrecision>(value); 30 } 31 32 inline icu4x::TimePrecision icu4x::TimePrecision::FromFFI(icu4x::capi::TimePrecision c_enum) { 33 switch (c_enum) { 34 case icu4x::capi::TimePrecision_Hour: 35 case icu4x::capi::TimePrecision_Minute: 36 case icu4x::capi::TimePrecision_MinuteOptional: 37 case icu4x::capi::TimePrecision_Second: 38 case icu4x::capi::TimePrecision_Subsecond1: 39 case icu4x::capi::TimePrecision_Subsecond2: 40 case icu4x::capi::TimePrecision_Subsecond3: 41 case icu4x::capi::TimePrecision_Subsecond4: 42 case icu4x::capi::TimePrecision_Subsecond5: 43 case icu4x::capi::TimePrecision_Subsecond6: 44 case icu4x::capi::TimePrecision_Subsecond7: 45 case icu4x::capi::TimePrecision_Subsecond8: 46 case icu4x::capi::TimePrecision_Subsecond9: 47 return static_cast<icu4x::TimePrecision::Value>(c_enum); 48 default: 49 std::abort(); 50 } 51 } 52 53 inline std::optional<icu4x::TimePrecision> icu4x::TimePrecision::from_subsecond_digits(uint8_t digits) { 54 auto result = icu4x::capi::icu4x_TimePrecision_from_subsecond_digits_mv1(digits); 55 return result.is_ok ? std::optional<icu4x::TimePrecision>(icu4x::TimePrecision::FromFFI(result.ok)) : std::nullopt; 56 } 57 #endif // icu4x_TimePrecision_HPP