1 #ifndef icu4x_Script_D_HPP 2 #define icu4x_Script_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 Script; 15 } 16 17 18 namespace icu4x { 19 namespace capi { 20 enum Script { 21 Script_Adlam = 167, 22 Script_Ahom = 161, 23 Script_AnatolianHieroglyphs = 156, 24 Script_Arabic = 2, 25 Script_Armenian = 3, 26 Script_Avestan = 117, 27 Script_Balinese = 62, 28 Script_Bamum = 130, 29 Script_BassaVah = 134, 30 Script_Batak = 63, 31 Script_Bengali = 4, 32 Script_Bhaiksuki = 168, 33 Script_Bopomofo = 5, 34 Script_Brahmi = 65, 35 Script_Braille = 46, 36 Script_Buginese = 55, 37 Script_Buhid = 44, 38 Script_CanadianAboriginal = 40, 39 Script_Carian = 104, 40 Script_CaucasianAlbanian = 159, 41 Script_Chakma = 118, 42 Script_Cham = 66, 43 Script_Cherokee = 6, 44 Script_Chorasmian = 189, 45 Script_Common = 0, 46 Script_Coptic = 7, 47 Script_Cuneiform = 101, 48 Script_Cypriot = 47, 49 Script_CyproMinoan = 193, 50 Script_Cyrillic = 8, 51 Script_Deseret = 9, 52 Script_Devanagari = 10, 53 Script_DivesAkuru = 190, 54 Script_Dogra = 178, 55 Script_Duployan = 135, 56 Script_EgyptianHieroglyphs = 71, 57 Script_Elbasan = 136, 58 Script_Elymaic = 185, 59 Script_Ethiopian = 11, 60 Script_Georgian = 12, 61 Script_Glagolitic = 56, 62 Script_Gothic = 13, 63 Script_Grantha = 137, 64 Script_Greek = 14, 65 Script_Gujarati = 15, 66 Script_GunjalaGondi = 179, 67 Script_Gurmukhi = 16, 68 Script_Han = 17, 69 Script_Hangul = 18, 70 Script_HanifiRohingya = 182, 71 Script_Hanunoo = 43, 72 Script_Hatran = 162, 73 Script_Hebrew = 19, 74 Script_Hiragana = 20, 75 Script_ImperialAramaic = 116, 76 Script_Inherited = 1, 77 Script_InscriptionalPahlavi = 122, 78 Script_InscriptionalParthian = 125, 79 Script_Javanese = 78, 80 Script_Kaithi = 120, 81 Script_Kannada = 21, 82 Script_Katakana = 22, 83 Script_Kawi = 198, 84 Script_KayahLi = 79, 85 Script_Kharoshthi = 57, 86 Script_KhitanSmallScript = 191, 87 Script_Khmer = 23, 88 Script_Khojki = 157, 89 Script_Khudawadi = 145, 90 Script_Lao = 24, 91 Script_Latin = 25, 92 Script_Lepcha = 82, 93 Script_Limbu = 48, 94 Script_LinearA = 83, 95 Script_LinearB = 49, 96 Script_Lisu = 131, 97 Script_Lycian = 107, 98 Script_Lydian = 108, 99 Script_Mahajani = 160, 100 Script_Makasar = 180, 101 Script_Malayalam = 26, 102 Script_Mandaic = 84, 103 Script_Manichaean = 121, 104 Script_Marchen = 169, 105 Script_MasaramGondi = 175, 106 Script_Medefaidrin = 181, 107 Script_MeeteiMayek = 115, 108 Script_MendeKikakui = 140, 109 Script_MeroiticCursive = 141, 110 Script_MeroiticHieroglyphs = 86, 111 Script_Miao = 92, 112 Script_Modi = 163, 113 Script_Mongolian = 27, 114 Script_Mro = 149, 115 Script_Multani = 164, 116 Script_Myanmar = 28, 117 Script_Nabataean = 143, 118 Script_NagMundari = 199, 119 Script_Nandinagari = 187, 120 Script_Nastaliq = 200, 121 Script_NewTaiLue = 59, 122 Script_Newa = 170, 123 Script_Nko = 87, 124 Script_Nushu = 150, 125 Script_NyiakengPuachueHmong = 186, 126 Script_Ogham = 29, 127 Script_OlChiki = 109, 128 Script_OldHungarian = 76, 129 Script_OldItalic = 30, 130 Script_OldNorthArabian = 142, 131 Script_OldPermic = 89, 132 Script_OldPersian = 61, 133 Script_OldSogdian = 184, 134 Script_OldSouthArabian = 133, 135 Script_OldTurkic = 88, 136 Script_OldUyghur = 194, 137 Script_Oriya = 31, 138 Script_Osage = 171, 139 Script_Osmanya = 50, 140 Script_PahawhHmong = 75, 141 Script_Palmyrene = 144, 142 Script_PauCinHau = 165, 143 Script_PhagsPa = 90, 144 Script_Phoenician = 91, 145 Script_PsalterPahlavi = 123, 146 Script_Rejang = 110, 147 Script_Runic = 32, 148 Script_Samaritan = 126, 149 Script_Saurashtra = 111, 150 Script_Sharada = 151, 151 Script_Shavian = 51, 152 Script_Siddham = 166, 153 Script_SignWriting = 112, 154 Script_Sinhala = 33, 155 Script_Sogdian = 183, 156 Script_SoraSompeng = 152, 157 Script_Soyombo = 176, 158 Script_Sundanese = 113, 159 Script_SylotiNagri = 58, 160 Script_Syriac = 34, 161 Script_Tagalog = 42, 162 Script_Tagbanwa = 45, 163 Script_TaiLe = 52, 164 Script_TaiTham = 106, 165 Script_TaiViet = 127, 166 Script_Takri = 153, 167 Script_Tamil = 35, 168 Script_Tangsa = 195, 169 Script_Tangut = 154, 170 Script_Telugu = 36, 171 Script_Thaana = 37, 172 Script_Thai = 38, 173 Script_Tibetan = 39, 174 Script_Tifinagh = 60, 175 Script_Tirhuta = 158, 176 Script_Toto = 196, 177 Script_Ugaritic = 53, 178 Script_Unknown = 103, 179 Script_Vai = 99, 180 Script_Vithkuqi = 197, 181 Script_Wancho = 188, 182 Script_WarangCiti = 146, 183 Script_Yezidi = 192, 184 Script_Yi = 41, 185 Script_ZanabazarSquare = 177, 186 }; 187 188 typedef struct Script_option {union { Script ok; }; bool is_ok; } Script_option; 189 } // namespace capi 190 } // namespace 191 192 namespace icu4x { 193 class Script { 194 public: 195 enum Value { 196 Adlam = 167, 197 Ahom = 161, 198 AnatolianHieroglyphs = 156, 199 Arabic = 2, 200 Armenian = 3, 201 Avestan = 117, 202 Balinese = 62, 203 Bamum = 130, 204 BassaVah = 134, 205 Batak = 63, 206 Bengali = 4, 207 Bhaiksuki = 168, 208 Bopomofo = 5, 209 Brahmi = 65, 210 Braille = 46, 211 Buginese = 55, 212 Buhid = 44, 213 CanadianAboriginal = 40, 214 Carian = 104, 215 CaucasianAlbanian = 159, 216 Chakma = 118, 217 Cham = 66, 218 Cherokee = 6, 219 Chorasmian = 189, 220 Common = 0, 221 Coptic = 7, 222 Cuneiform = 101, 223 Cypriot = 47, 224 CyproMinoan = 193, 225 Cyrillic = 8, 226 Deseret = 9, 227 Devanagari = 10, 228 DivesAkuru = 190, 229 Dogra = 178, 230 Duployan = 135, 231 EgyptianHieroglyphs = 71, 232 Elbasan = 136, 233 Elymaic = 185, 234 Ethiopian = 11, 235 Georgian = 12, 236 Glagolitic = 56, 237 Gothic = 13, 238 Grantha = 137, 239 Greek = 14, 240 Gujarati = 15, 241 GunjalaGondi = 179, 242 Gurmukhi = 16, 243 Han = 17, 244 Hangul = 18, 245 HanifiRohingya = 182, 246 Hanunoo = 43, 247 Hatran = 162, 248 Hebrew = 19, 249 Hiragana = 20, 250 ImperialAramaic = 116, 251 Inherited = 1, 252 InscriptionalPahlavi = 122, 253 InscriptionalParthian = 125, 254 Javanese = 78, 255 Kaithi = 120, 256 Kannada = 21, 257 Katakana = 22, 258 Kawi = 198, 259 KayahLi = 79, 260 Kharoshthi = 57, 261 KhitanSmallScript = 191, 262 Khmer = 23, 263 Khojki = 157, 264 Khudawadi = 145, 265 Lao = 24, 266 Latin = 25, 267 Lepcha = 82, 268 Limbu = 48, 269 LinearA = 83, 270 LinearB = 49, 271 Lisu = 131, 272 Lycian = 107, 273 Lydian = 108, 274 Mahajani = 160, 275 Makasar = 180, 276 Malayalam = 26, 277 Mandaic = 84, 278 Manichaean = 121, 279 Marchen = 169, 280 MasaramGondi = 175, 281 Medefaidrin = 181, 282 MeeteiMayek = 115, 283 MendeKikakui = 140, 284 MeroiticCursive = 141, 285 MeroiticHieroglyphs = 86, 286 Miao = 92, 287 Modi = 163, 288 Mongolian = 27, 289 Mro = 149, 290 Multani = 164, 291 Myanmar = 28, 292 Nabataean = 143, 293 NagMundari = 199, 294 Nandinagari = 187, 295 Nastaliq = 200, 296 NewTaiLue = 59, 297 Newa = 170, 298 Nko = 87, 299 Nushu = 150, 300 NyiakengPuachueHmong = 186, 301 Ogham = 29, 302 OlChiki = 109, 303 OldHungarian = 76, 304 OldItalic = 30, 305 OldNorthArabian = 142, 306 OldPermic = 89, 307 OldPersian = 61, 308 OldSogdian = 184, 309 OldSouthArabian = 133, 310 OldTurkic = 88, 311 OldUyghur = 194, 312 Oriya = 31, 313 Osage = 171, 314 Osmanya = 50, 315 PahawhHmong = 75, 316 Palmyrene = 144, 317 PauCinHau = 165, 318 PhagsPa = 90, 319 Phoenician = 91, 320 PsalterPahlavi = 123, 321 Rejang = 110, 322 Runic = 32, 323 Samaritan = 126, 324 Saurashtra = 111, 325 Sharada = 151, 326 Shavian = 51, 327 Siddham = 166, 328 SignWriting = 112, 329 Sinhala = 33, 330 Sogdian = 183, 331 SoraSompeng = 152, 332 Soyombo = 176, 333 Sundanese = 113, 334 SylotiNagri = 58, 335 Syriac = 34, 336 Tagalog = 42, 337 Tagbanwa = 45, 338 TaiLe = 52, 339 TaiTham = 106, 340 TaiViet = 127, 341 Takri = 153, 342 Tamil = 35, 343 Tangsa = 195, 344 Tangut = 154, 345 Telugu = 36, 346 Thaana = 37, 347 Thai = 38, 348 Tibetan = 39, 349 Tifinagh = 60, 350 Tirhuta = 158, 351 Toto = 196, 352 Ugaritic = 53, 353 Unknown = 103, 354 Vai = 99, 355 Vithkuqi = 197, 356 Wancho = 188, 357 WarangCiti = 146, 358 Yezidi = 192, 359 Yi = 41, 360 ZanabazarSquare = 177, 361 }; 362 363 Script() = default; 364 // Implicit conversions between enum and ::Value Script(Value v)365 constexpr Script(Value v) : value(v) {} operator Value() const366 constexpr operator Value() const { return value; } 367 // Prevent usage as boolean value 368 explicit operator bool() const = delete; 369 370 inline static icu4x::Script for_char(char32_t ch); 371 372 inline std::optional<std::string_view> long_name(); 373 374 inline std::optional<std::string_view> short_name(); 375 376 inline uint16_t to_integer_value(); 377 378 inline static std::optional<icu4x::Script> from_integer_value(uint16_t other); 379 380 inline icu4x::capi::Script AsFFI() const; 381 inline static icu4x::Script FromFFI(icu4x::capi::Script c_enum); 382 private: 383 Value value; 384 }; 385 386 } // namespace 387 #endif // icu4x_Script_D_HPP 388