• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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