• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef icu4x_CanonicalCombiningClass_D_HPP
2 #define icu4x_CanonicalCombiningClass_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 namespace icu4x {
14 class CanonicalCombiningClass;
15 }
16 
17 
18 namespace icu4x {
19 namespace capi {
20     enum CanonicalCombiningClass {
21       CanonicalCombiningClass_NotReordered = 0,
22       CanonicalCombiningClass_Overlay = 1,
23       CanonicalCombiningClass_HanReading = 6,
24       CanonicalCombiningClass_Nukta = 7,
25       CanonicalCombiningClass_KanaVoicing = 8,
26       CanonicalCombiningClass_Virama = 9,
27       CanonicalCombiningClass_CCC10 = 10,
28       CanonicalCombiningClass_CCC11 = 11,
29       CanonicalCombiningClass_CCC12 = 12,
30       CanonicalCombiningClass_CCC13 = 13,
31       CanonicalCombiningClass_CCC14 = 14,
32       CanonicalCombiningClass_CCC15 = 15,
33       CanonicalCombiningClass_CCC16 = 16,
34       CanonicalCombiningClass_CCC17 = 17,
35       CanonicalCombiningClass_CCC18 = 18,
36       CanonicalCombiningClass_CCC19 = 19,
37       CanonicalCombiningClass_CCC20 = 20,
38       CanonicalCombiningClass_CCC21 = 21,
39       CanonicalCombiningClass_CCC22 = 22,
40       CanonicalCombiningClass_CCC23 = 23,
41       CanonicalCombiningClass_CCC24 = 24,
42       CanonicalCombiningClass_CCC25 = 25,
43       CanonicalCombiningClass_CCC26 = 26,
44       CanonicalCombiningClass_CCC27 = 27,
45       CanonicalCombiningClass_CCC28 = 28,
46       CanonicalCombiningClass_CCC29 = 29,
47       CanonicalCombiningClass_CCC30 = 30,
48       CanonicalCombiningClass_CCC31 = 31,
49       CanonicalCombiningClass_CCC32 = 32,
50       CanonicalCombiningClass_CCC33 = 33,
51       CanonicalCombiningClass_CCC34 = 34,
52       CanonicalCombiningClass_CCC35 = 35,
53       CanonicalCombiningClass_CCC36 = 36,
54       CanonicalCombiningClass_CCC84 = 84,
55       CanonicalCombiningClass_CCC91 = 91,
56       CanonicalCombiningClass_CCC103 = 103,
57       CanonicalCombiningClass_CCC107 = 107,
58       CanonicalCombiningClass_CCC118 = 118,
59       CanonicalCombiningClass_CCC122 = 122,
60       CanonicalCombiningClass_CCC129 = 129,
61       CanonicalCombiningClass_CCC130 = 130,
62       CanonicalCombiningClass_CCC132 = 132,
63       CanonicalCombiningClass_CCC133 = 133,
64       CanonicalCombiningClass_AttachedBelowLeft = 200,
65       CanonicalCombiningClass_AttachedBelow = 202,
66       CanonicalCombiningClass_AttachedAbove = 214,
67       CanonicalCombiningClass_AttachedAboveRight = 216,
68       CanonicalCombiningClass_BelowLeft = 218,
69       CanonicalCombiningClass_Below = 220,
70       CanonicalCombiningClass_BelowRight = 222,
71       CanonicalCombiningClass_Left = 224,
72       CanonicalCombiningClass_Right = 226,
73       CanonicalCombiningClass_AboveLeft = 228,
74       CanonicalCombiningClass_Above = 230,
75       CanonicalCombiningClass_AboveRight = 232,
76       CanonicalCombiningClass_DoubleBelow = 233,
77       CanonicalCombiningClass_DoubleAbove = 234,
78       CanonicalCombiningClass_IotaSubscript = 240,
79     };
80 
81     typedef struct CanonicalCombiningClass_option {union { CanonicalCombiningClass ok; }; bool is_ok; } CanonicalCombiningClass_option;
82 } // namespace capi
83 } // namespace
84 
85 namespace icu4x {
86 class CanonicalCombiningClass {
87 public:
88   enum Value {
89     NotReordered = 0,
90     Overlay = 1,
91     HanReading = 6,
92     Nukta = 7,
93     KanaVoicing = 8,
94     Virama = 9,
95     CCC10 = 10,
96     CCC11 = 11,
97     CCC12 = 12,
98     CCC13 = 13,
99     CCC14 = 14,
100     CCC15 = 15,
101     CCC16 = 16,
102     CCC17 = 17,
103     CCC18 = 18,
104     CCC19 = 19,
105     CCC20 = 20,
106     CCC21 = 21,
107     CCC22 = 22,
108     CCC23 = 23,
109     CCC24 = 24,
110     CCC25 = 25,
111     CCC26 = 26,
112     CCC27 = 27,
113     CCC28 = 28,
114     CCC29 = 29,
115     CCC30 = 30,
116     CCC31 = 31,
117     CCC32 = 32,
118     CCC33 = 33,
119     CCC34 = 34,
120     CCC35 = 35,
121     CCC36 = 36,
122     CCC84 = 84,
123     CCC91 = 91,
124     CCC103 = 103,
125     CCC107 = 107,
126     CCC118 = 118,
127     CCC122 = 122,
128     CCC129 = 129,
129     CCC130 = 130,
130     CCC132 = 132,
131     CCC133 = 133,
132     AttachedBelowLeft = 200,
133     AttachedBelow = 202,
134     AttachedAbove = 214,
135     AttachedAboveRight = 216,
136     BelowLeft = 218,
137     Below = 220,
138     BelowRight = 222,
139     Left = 224,
140     Right = 226,
141     AboveLeft = 228,
142     Above = 230,
143     AboveRight = 232,
144     DoubleBelow = 233,
145     DoubleAbove = 234,
146     IotaSubscript = 240,
147   };
148 
149   CanonicalCombiningClass() = default;
150   // Implicit conversions between enum and ::Value
CanonicalCombiningClass(Value v)151   constexpr CanonicalCombiningClass(Value v) : value(v) {}
operator Value() const152   constexpr operator Value() const { return value; }
153   // Prevent usage as boolean value
154   explicit operator bool() const = delete;
155 
156   inline static icu4x::CanonicalCombiningClass for_char(char32_t ch);
157 
158   inline uint8_t to_integer_value();
159 
160   inline static std::optional<icu4x::CanonicalCombiningClass> from_integer_value(uint8_t other);
161 
162   inline icu4x::capi::CanonicalCombiningClass AsFFI() const;
163   inline static icu4x::CanonicalCombiningClass FromFFI(icu4x::capi::CanonicalCombiningClass c_enum);
164 private:
165     Value value;
166 };
167 
168 } // namespace
169 #endif // icu4x_CanonicalCombiningClass_D_HPP
170