TimePrecision.d.hpp (2358B)
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 <cstdlib> 12 #include "../diplomat_runtime.hpp" 13 14 namespace icu4x { 15 class TimePrecision; 16 } 17 18 19 namespace icu4x { 20 namespace capi { 21 enum TimePrecision { 22 TimePrecision_Hour = 0, 23 TimePrecision_Minute = 1, 24 TimePrecision_MinuteOptional = 2, 25 TimePrecision_Second = 3, 26 TimePrecision_Subsecond1 = 4, 27 TimePrecision_Subsecond2 = 5, 28 TimePrecision_Subsecond3 = 6, 29 TimePrecision_Subsecond4 = 7, 30 TimePrecision_Subsecond5 = 8, 31 TimePrecision_Subsecond6 = 9, 32 TimePrecision_Subsecond7 = 10, 33 TimePrecision_Subsecond8 = 11, 34 TimePrecision_Subsecond9 = 12, 35 }; 36 37 typedef struct TimePrecision_option {union { TimePrecision ok; }; bool is_ok; } TimePrecision_option; 38 } // namespace capi 39 } // namespace 40 41 namespace icu4x { 42 /** 43 * See the [Rust documentation for `TimePrecision`](https://docs.rs/icu/latest/icu/datetime/options/enum.TimePrecision.html) for more information. 44 * 45 * See the [Rust documentation for `SubsecondDigits`](https://docs.rs/icu/latest/icu/datetime/options/enum.SubsecondDigits.html) for more information. 46 */ 47 class TimePrecision { 48 public: 49 enum Value { 50 Hour = 0, 51 Minute = 1, 52 MinuteOptional = 2, 53 Second = 3, 54 Subsecond1 = 4, 55 Subsecond2 = 5, 56 Subsecond3 = 6, 57 Subsecond4 = 7, 58 Subsecond5 = 8, 59 Subsecond6 = 9, 60 Subsecond7 = 10, 61 Subsecond8 = 11, 62 Subsecond9 = 12, 63 }; 64 65 TimePrecision() = default; 66 // Implicit conversions between enum and ::Value 67 constexpr TimePrecision(Value v) : value(v) {} 68 constexpr operator Value() const { return value; } 69 // Prevent usage as boolean value 70 explicit operator bool() const = delete; 71 72 /** 73 * See the [Rust documentation for `try_from_int`](https://docs.rs/icu/latest/icu/datetime/options/enum.SubsecondDigits.html#method.try_from_int) for more information. 74 */ 75 inline static std::optional<icu4x::TimePrecision> from_subsecond_digits(uint8_t digits); 76 77 inline icu4x::capi::TimePrecision AsFFI() const; 78 inline static icu4x::TimePrecision FromFFI(icu4x::capi::TimePrecision c_enum); 79 private: 80 Value value; 81 }; 82 83 } // namespace 84 #endif // icu4x_TimePrecision_D_HPP