1 #ifndef icu4x_TimePrecision_D_HPP 2 #define icu4x_TimePrecision_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 14 namespace icu4x { 15 namespace capi { 16 enum TimePrecision { 17 TimePrecision_Hour = 0, 18 TimePrecision_Minute = 1, 19 TimePrecision_MinuteOptional = 2, 20 TimePrecision_Second = 3, 21 TimePrecision_Subsecond1 = 4, 22 TimePrecision_Subsecond2 = 5, 23 TimePrecision_Subsecond3 = 6, 24 TimePrecision_Subsecond4 = 7, 25 TimePrecision_Subsecond5 = 8, 26 TimePrecision_Subsecond6 = 9, 27 TimePrecision_Subsecond7 = 10, 28 TimePrecision_Subsecond8 = 11, 29 TimePrecision_Subsecond9 = 12, 30 }; 31 32 typedef struct TimePrecision_option {union { TimePrecision ok; }; bool is_ok; } TimePrecision_option; 33 } // namespace capi 34 } // namespace 35 36 namespace icu4x { 37 class TimePrecision { 38 public: 39 enum Value { 40 Hour = 0, 41 Minute = 1, 42 MinuteOptional = 2, 43 Second = 3, 44 Subsecond1 = 4, 45 Subsecond2 = 5, 46 Subsecond3 = 6, 47 Subsecond4 = 7, 48 Subsecond5 = 8, 49 Subsecond6 = 9, 50 Subsecond7 = 10, 51 Subsecond8 = 11, 52 Subsecond9 = 12, 53 }; 54 55 TimePrecision() = default; 56 // Implicit conversions between enum and ::Value TimePrecision(Value v)57 constexpr TimePrecision(Value v) : value(v) {} operator Value() const58 constexpr operator Value() const { return value; } 59 // Prevent usage as boolean value 60 explicit operator bool() const = delete; 61 62 inline icu4x::capi::TimePrecision AsFFI() const; 63 inline static icu4x::TimePrecision FromFFI(icu4x::capi::TimePrecision c_enum); 64 private: 65 Value value; 66 }; 67 68 } // namespace 69 #endif // icu4x_TimePrecision_D_HPP 70