Sourcemeta Core 0.0.0
Loading...
Searching...
No Matches
unicode_ucd.h
1#ifndef SOURCEMETA_CORE_UNICODE_UCD_H_
2#define SOURCEMETA_CORE_UNICODE_UCD_H_
3
4#include <cstdint> // std::uint8_t
5
6namespace sourcemeta::core {
7
10#define SOURCEMETA_CORE_JOINING_TYPE_LIST(X) \
11 X(NonJoining, "U") \
12 X(Transparent, "T") \
13 X(LeftJoining, "L") \
14 X(RightJoining, "R") \
15 X(DualJoining, "D") \
16 X(JoinCausing, "C")
17
21enum class JoiningType : std::uint8_t {
22#if !defined(DOXYGEN)
23#define SOURCEMETA_CORE_UCD_ENUM_ENTRY(name, alias) name,
24 SOURCEMETA_CORE_JOINING_TYPE_LIST(SOURCEMETA_CORE_UCD_ENUM_ENTRY)
25#undef SOURCEMETA_CORE_UCD_ENUM_ENTRY
26#endif
27};
28
31#define SOURCEMETA_CORE_BIDI_CLASS_LIST(X) \
32 X(LeftToRight, "L") \
33 X(RightToLeft, "R") \
34 X(ArabicLetter, "AL") \
35 X(EuropeanNumber, "EN") \
36 X(EuropeanSeparator, "ES") \
37 X(EuropeanTerminator, "ET") \
38 X(ArabicNumber, "AN") \
39 X(CommonSeparator, "CS") \
40 X(NonspacingMark, "NSM") \
41 X(BoundaryNeutral, "BN") \
42 X(ParagraphSeparator, "B") \
43 X(SegmentSeparator, "S") \
44 X(WhiteSpace, "WS") \
45 X(OtherNeutral, "ON") \
46 X(LeftToRightEmbedding, "LRE") \
47 X(LeftToRightOverride, "LRO") \
48 X(RightToLeftEmbedding, "RLE") \
49 X(RightToLeftOverride, "RLO") \
50 X(PopDirectionalFormat, "PDF") \
51 X(LeftToRightIsolate, "LRI") \
52 X(RightToLeftIsolate, "RLI") \
53 X(FirstStrongIsolate, "FSI") \
54 X(PopDirectionalIsolate, "PDI")
55
59enum class BidiClass : std::uint8_t {
60#if !defined(DOXYGEN)
61#define SOURCEMETA_CORE_UCD_ENUM_ENTRY(name, alias) name,
62 SOURCEMETA_CORE_BIDI_CLASS_LIST(SOURCEMETA_CORE_UCD_ENUM_ENTRY)
63#undef SOURCEMETA_CORE_UCD_ENUM_ENTRY
64#endif
65};
66
71#define SOURCEMETA_CORE_UNICODE_SCRIPT_LIST(X) \
72 X(Adlam, "Adlam") \
73 X(Ahom, "Ahom") \
74 X(AnatolianHieroglyphs, "Anatolian_Hieroglyphs") \
75 X(Arabic, "Arabic") \
76 X(Armenian, "Armenian") \
77 X(Avestan, "Avestan") \
78 X(Balinese, "Balinese") \
79 X(Bamum, "Bamum") \
80 X(BassaVah, "Bassa_Vah") \
81 X(Batak, "Batak") \
82 X(Bengali, "Bengali") \
83 X(BeriaErfe, "Beria_Erfe") \
84 X(Bhaiksuki, "Bhaiksuki") \
85 X(Bopomofo, "Bopomofo") \
86 X(Brahmi, "Brahmi") \
87 X(Braille, "Braille") \
88 X(Buginese, "Buginese") \
89 X(Buhid, "Buhid") \
90 X(CanadianAboriginal, "Canadian_Aboriginal") \
91 X(Carian, "Carian") \
92 X(CaucasianAlbanian, "Caucasian_Albanian") \
93 X(Chakma, "Chakma") \
94 X(Cham, "Cham") \
95 X(Cherokee, "Cherokee") \
96 X(Chorasmian, "Chorasmian") \
97 X(Common, "Common") \
98 X(Coptic, "Coptic") \
99 X(Cuneiform, "Cuneiform") \
100 X(Cypriot, "Cypriot") \
101 X(CyproMinoan, "Cypro_Minoan") \
102 X(Cyrillic, "Cyrillic") \
103 X(Deseret, "Deseret") \
104 X(Devanagari, "Devanagari") \
105 X(DivesAkuru, "Dives_Akuru") \
106 X(Dogra, "Dogra") \
107 X(Duployan, "Duployan") \
108 X(EgyptianHieroglyphs, "Egyptian_Hieroglyphs") \
109 X(Elbasan, "Elbasan") \
110 X(Elymaic, "Elymaic") \
111 X(Ethiopic, "Ethiopic") \
112 X(Garay, "Garay") \
113 X(Georgian, "Georgian") \
114 X(Glagolitic, "Glagolitic") \
115 X(Gothic, "Gothic") \
116 X(Grantha, "Grantha") \
117 X(Greek, "Greek") \
118 X(Gujarati, "Gujarati") \
119 X(GunjalaGondi, "Gunjala_Gondi") \
120 X(Gurmukhi, "Gurmukhi") \
121 X(GurungKhema, "Gurung_Khema") \
122 X(Han, "Han") \
123 X(Hangul, "Hangul") \
124 X(HanifiRohingya, "Hanifi_Rohingya") \
125 X(Hanunoo, "Hanunoo") \
126 X(Hatran, "Hatran") \
127 X(Hebrew, "Hebrew") \
128 X(Hiragana, "Hiragana") \
129 X(ImperialAramaic, "Imperial_Aramaic") \
130 X(Inherited, "Inherited") \
131 X(InscriptionalPahlavi, "Inscriptional_Pahlavi") \
132 X(InscriptionalParthian, "Inscriptional_Parthian") \
133 X(Javanese, "Javanese") \
134 X(Kaithi, "Kaithi") \
135 X(Kannada, "Kannada") \
136 X(Katakana, "Katakana") \
137 X(Kawi, "Kawi") \
138 X(KayahLi, "Kayah_Li") \
139 X(Kharoshthi, "Kharoshthi") \
140 X(KhitanSmallScript, "Khitan_Small_Script") \
141 X(Khmer, "Khmer") \
142 X(Khojki, "Khojki") \
143 X(Khudawadi, "Khudawadi") \
144 X(KiratRai, "Kirat_Rai") \
145 X(Lao, "Lao") \
146 X(Latin, "Latin") \
147 X(Lepcha, "Lepcha") \
148 X(Limbu, "Limbu") \
149 X(LinearA, "Linear_A") \
150 X(LinearB, "Linear_B") \
151 X(Lisu, "Lisu") \
152 X(Lycian, "Lycian") \
153 X(Lydian, "Lydian") \
154 X(Mahajani, "Mahajani") \
155 X(Makasar, "Makasar") \
156 X(Malayalam, "Malayalam") \
157 X(Mandaic, "Mandaic") \
158 X(Manichaean, "Manichaean") \
159 X(Marchen, "Marchen") \
160 X(MasaramGondi, "Masaram_Gondi") \
161 X(Medefaidrin, "Medefaidrin") \
162 X(MeeteiMayek, "Meetei_Mayek") \
163 X(MendeKikakui, "Mende_Kikakui") \
164 X(MeroiticCursive, "Meroitic_Cursive") \
165 X(MeroiticHieroglyphs, "Meroitic_Hieroglyphs") \
166 X(Miao, "Miao") \
167 X(Modi, "Modi") \
168 X(Mongolian, "Mongolian") \
169 X(Mro, "Mro") \
170 X(Multani, "Multani") \
171 X(Myanmar, "Myanmar") \
172 X(Nabataean, "Nabataean") \
173 X(NagMundari, "Nag_Mundari") \
174 X(Nandinagari, "Nandinagari") \
175 X(NewTaiLue, "New_Tai_Lue") \
176 X(Newa, "Newa") \
177 X(Nko, "Nko") \
178 X(Nushu, "Nushu") \
179 X(NyiakengPuachueHmong, "Nyiakeng_Puachue_Hmong") \
180 X(Ogham, "Ogham") \
181 X(OlChiki, "Ol_Chiki") \
182 X(OlOnal, "Ol_Onal") \
183 X(OldHungarian, "Old_Hungarian") \
184 X(OldItalic, "Old_Italic") \
185 X(OldNorthArabian, "Old_North_Arabian") \
186 X(OldPermic, "Old_Permic") \
187 X(OldPersian, "Old_Persian") \
188 X(OldSogdian, "Old_Sogdian") \
189 X(OldSouthArabian, "Old_South_Arabian") \
190 X(OldTurkic, "Old_Turkic") \
191 X(OldUyghur, "Old_Uyghur") \
192 X(Oriya, "Oriya") \
193 X(Osage, "Osage") \
194 X(Osmanya, "Osmanya") \
195 X(PahawhHmong, "Pahawh_Hmong") \
196 X(Palmyrene, "Palmyrene") \
197 X(PauCinHau, "Pau_Cin_Hau") \
198 X(PhagsPa, "Phags_Pa") \
199 X(Phoenician, "Phoenician") \
200 X(PsalterPahlavi, "Psalter_Pahlavi") \
201 X(Rejang, "Rejang") \
202 X(Runic, "Runic") \
203 X(Samaritan, "Samaritan") \
204 X(Saurashtra, "Saurashtra") \
205 X(Sharada, "Sharada") \
206 X(Shavian, "Shavian") \
207 X(Siddham, "Siddham") \
208 X(Sidetic, "Sidetic") \
209 X(SignWriting, "SignWriting") \
210 X(Sinhala, "Sinhala") \
211 X(Sogdian, "Sogdian") \
212 X(SoraSompeng, "Sora_Sompeng") \
213 X(Soyombo, "Soyombo") \
214 X(Sundanese, "Sundanese") \
215 X(Sunuwar, "Sunuwar") \
216 X(SylotiNagri, "Syloti_Nagri") \
217 X(Syriac, "Syriac") \
218 X(Tagalog, "Tagalog") \
219 X(Tagbanwa, "Tagbanwa") \
220 X(TaiLe, "Tai_Le") \
221 X(TaiTham, "Tai_Tham") \
222 X(TaiViet, "Tai_Viet") \
223 X(TaiYo, "Tai_Yo") \
224 X(Takri, "Takri") \
225 X(Tamil, "Tamil") \
226 X(Tangsa, "Tangsa") \
227 X(Tangut, "Tangut") \
228 X(Telugu, "Telugu") \
229 X(Thaana, "Thaana") \
230 X(Thai, "Thai") \
231 X(Tibetan, "Tibetan") \
232 X(Tifinagh, "Tifinagh") \
233 X(Tirhuta, "Tirhuta") \
234 X(Todhri, "Todhri") \
235 X(TolongSiki, "Tolong_Siki") \
236 X(Toto, "Toto") \
237 X(TuluTigalari, "Tulu_Tigalari") \
238 X(Ugaritic, "Ugaritic") \
239 X(Unknown, "Unknown") \
240 X(Vai, "Vai") \
241 X(Vithkuqi, "Vithkuqi") \
242 X(Wancho, "Wancho") \
243 X(WarangCiti, "Warang_Citi") \
244 X(Yezidi, "Yezidi") \
245 X(Yi, "Yi") \
246 X(ZanabazarSquare, "Zanabazar_Square") \
247 X(KatakanaOrHiragana, "Katakana_Or_Hiragana")
248
252enum class UnicodeScript : std::uint8_t {
253#if !defined(DOXYGEN)
254#define SOURCEMETA_CORE_UCD_ENUM_ENTRY(name, alias) name,
255 SOURCEMETA_CORE_UNICODE_SCRIPT_LIST(SOURCEMETA_CORE_UCD_ENUM_ENTRY)
256#undef SOURCEMETA_CORE_UCD_ENUM_ENTRY
257#endif
258};
259
262#define SOURCEMETA_CORE_NFC_QUICK_CHECK_LIST(X) \
263 X(Yes, "Y") \
264 X(No, "N") \
265 X(Maybe, "M")
266
270enum class NFCQuickCheck : std::uint8_t {
271#if !defined(DOXYGEN)
272#define SOURCEMETA_CORE_UCD_ENUM_ENTRY(name, alias) name,
273 SOURCEMETA_CORE_NFC_QUICK_CHECK_LIST(SOURCEMETA_CORE_UCD_ENUM_ENTRY)
274#undef SOURCEMETA_CORE_UCD_ENUM_ENTRY
275#endif
276};
277
278} // namespace sourcemeta::core
279
280#endif
#define SOURCEMETA_CORE_JOINING_TYPE_LIST(X)
Definition unicode_ucd.h:10
JoiningType
Definition unicode_ucd.h:21
UnicodeScript
Definition unicode_ucd.h:252
#define SOURCEMETA_CORE_NFC_QUICK_CHECK_LIST(X)
Definition unicode_ucd.h:262
BidiClass
Definition unicode_ucd.h:59
NFCQuickCheck
Definition unicode_ucd.h:270
#define SOURCEMETA_CORE_BIDI_CLASS_LIST(X)
Definition unicode_ucd.h:31
#define SOURCEMETA_CORE_UNICODE_SCRIPT_LIST(X)
Definition unicode_ucd.h:71