1 // This file is part of ICU4X. For terms of use, please see the file 2 // called LICENSE at the top level of the ICU4X source tree 3 // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). 4 5 #[diplomat::bridge] 6 #[diplomat::abi_rename = "icu4x_{0}_mv1"] 7 #[diplomat::attr(auto, namespace = "icu4x")] 8 pub mod ffi { 9 use icu_properties::props; 10 11 #[cfg(feature = "compiled_data")] 12 use diplomat_runtime::DiplomatChar; 13 14 #[diplomat::rust_link(icu::properties::props::BidiClass, Struct)] 15 #[diplomat::enum_convert(icu_properties::props::BidiClass, needs_wildcard)] 16 pub enum BidiClass { 17 #[diplomat::rust_link(icu::properties::props::BidiClass::LeftToRight, EnumVariant)] 18 LeftToRight = 0, 19 #[diplomat::rust_link(icu::properties::props::BidiClass::RightToLeft, EnumVariant)] 20 RightToLeft = 1, 21 #[diplomat::rust_link(icu::properties::props::BidiClass::EuropeanNumber, EnumVariant)] 22 EuropeanNumber = 2, 23 #[diplomat::rust_link(icu::properties::props::BidiClass::EuropeanSeparator, EnumVariant)] 24 EuropeanSeparator = 3, 25 #[diplomat::rust_link(icu::properties::props::BidiClass::EuropeanTerminator, EnumVariant)] 26 EuropeanTerminator = 4, 27 #[diplomat::rust_link(icu::properties::props::BidiClass::ArabicNumber, EnumVariant)] 28 ArabicNumber = 5, 29 #[diplomat::rust_link(icu::properties::props::BidiClass::CommonSeparator, EnumVariant)] 30 CommonSeparator = 6, 31 #[diplomat::rust_link(icu::properties::props::BidiClass::ParagraphSeparator, EnumVariant)] 32 ParagraphSeparator = 7, 33 #[diplomat::rust_link(icu::properties::props::BidiClass::SegmentSeparator, EnumVariant)] 34 SegmentSeparator = 8, 35 #[diplomat::rust_link(icu::properties::props::BidiClass::WhiteSpace, EnumVariant)] 36 WhiteSpace = 9, 37 #[diplomat::rust_link(icu::properties::props::BidiClass::OtherNeutral, EnumVariant)] 38 OtherNeutral = 10, 39 #[diplomat::rust_link( 40 icu::properties::props::BidiClass::LeftToRightEmbedding, 41 EnumVariant 42 )] 43 LeftToRightEmbedding = 11, 44 #[diplomat::rust_link(icu::properties::props::BidiClass::LeftToRightOverride, EnumVariant)] 45 LeftToRightOverride = 12, 46 #[diplomat::rust_link(icu::properties::props::BidiClass::ArabicLetter, EnumVariant)] 47 ArabicLetter = 13, 48 #[diplomat::rust_link( 49 icu::properties::props::BidiClass::RightToLeftEmbedding, 50 EnumVariant 51 )] 52 RightToLeftEmbedding = 14, 53 #[diplomat::rust_link(icu::properties::props::BidiClass::RightToLeftOverride, EnumVariant)] 54 RightToLeftOverride = 15, 55 #[diplomat::rust_link( 56 icu::properties::props::BidiClass::PopDirectionalFormat, 57 EnumVariant 58 )] 59 PopDirectionalFormat = 16, 60 #[diplomat::rust_link(icu::properties::props::BidiClass::NonspacingMark, EnumVariant)] 61 NonspacingMark = 17, 62 #[diplomat::rust_link(icu::properties::props::BidiClass::BoundaryNeutral, EnumVariant)] 63 BoundaryNeutral = 18, 64 #[diplomat::rust_link(icu::properties::props::BidiClass::FirstStrongIsolate, EnumVariant)] 65 FirstStrongIsolate = 19, 66 #[diplomat::rust_link(icu::properties::props::BidiClass::LeftToRightIsolate, EnumVariant)] 67 LeftToRightIsolate = 20, 68 #[diplomat::rust_link(icu::properties::props::BidiClass::RightToLeftIsolate, EnumVariant)] 69 RightToLeftIsolate = 21, 70 #[diplomat::rust_link( 71 icu::properties::props::BidiClass::PopDirectionalIsolate, 72 EnumVariant 73 )] 74 PopDirectionalIsolate = 22, 75 } 76 77 impl BidiClass { 78 #[diplomat::rust_link(icu::properties::props::EnumeratedProperty::for_char, FnInTrait)] 79 #[cfg(feature = "compiled_data")] for_char(ch: DiplomatChar) -> Self80 pub fn for_char(ch: DiplomatChar) -> Self { 81 icu_properties::CodePointMapData::<props::BidiClass>::new() 82 .get32(ch) 83 .into() 84 } 85 86 #[diplomat::rust_link(icu::properties::PropertyNamesLongBorrowed::get, FnInStruct)] 87 #[diplomat::rust_link(icu::properties::PropertyNamesLong, Struct, hidden)] 88 #[diplomat::rust_link(icu::properties::PropertyNamesLongBorrowed, Struct, hidden)] 89 #[diplomat::rust_link(icu::properties::PropertyNamesLong::new, FnInStruct, hidden)] 90 #[diplomat::rust_link(icu::properties::PropertyNamesLongBorrowed::new, FnInStruct, hidden)] 91 #[diplomat::rust_link( 92 icu::properties::props::NamedEnumeratedProperty::long_name, 93 FnInTrait, 94 hidden 95 )] 96 #[cfg(feature = "compiled_data")] 97 /// Get the "long" name of this property value (returns empty if property value is unknown) long_name(self) -> Option<&'static str>98 pub fn long_name(self) -> Option<&'static str> { 99 icu_properties::PropertyNamesLongBorrowed::<props::BidiClass>::new().get(self.into()) 100 } 101 102 #[diplomat::rust_link(icu::properties::PropertyNamesShortBorrowed::get, FnInStruct)] 103 #[diplomat::rust_link(icu::properties::PropertyNamesShort, Struct, hidden)] 104 #[diplomat::rust_link(icu::properties::PropertyNamesShortBorrowed, Struct, hidden)] 105 #[diplomat::rust_link(icu::properties::PropertyNamesShort::new, FnInStruct, hidden)] 106 #[diplomat::rust_link(icu::properties::PropertyNamesShortBorrowed::new, FnInStruct, hidden)] 107 #[diplomat::rust_link( 108 icu::properties::props::NamedEnumeratedProperty::short_name, 109 FnInTrait, 110 hidden 111 )] 112 #[cfg(feature = "compiled_data")] 113 /// Get the "short" name of this property value (returns empty if property value is unknown) short_name(self) -> Option<&'static str>114 pub fn short_name(self) -> Option<&'static str> { 115 icu_properties::PropertyNamesShortBorrowed::<props::BidiClass>::new().get(self.into()) 116 } 117 #[diplomat::rust_link(icu::properties::props::BidiClass::to_icu4c_value, FnInStruct)] 118 /// Convert to an integer value usable with ICU4C and CodePointMapData to_integer_value(self) -> u8119 pub fn to_integer_value(self) -> u8 { 120 self as u8 121 } 122 #[diplomat::rust_link(icu::properties::props::BidiClass::from_icu4c_value, FnInStruct)] 123 /// Convert from an integer value from ICU4C or CodePointMapData from_integer_value(other: u8) -> Option<Self>124 pub fn from_integer_value(other: u8) -> Option<Self> { 125 Some(match other { 126 0 => Self::LeftToRight, 127 1 => Self::RightToLeft, 128 2 => Self::EuropeanNumber, 129 3 => Self::EuropeanSeparator, 130 4 => Self::EuropeanTerminator, 131 5 => Self::ArabicNumber, 132 6 => Self::CommonSeparator, 133 7 => Self::ParagraphSeparator, 134 8 => Self::SegmentSeparator, 135 9 => Self::WhiteSpace, 136 10 => Self::OtherNeutral, 137 11 => Self::LeftToRightEmbedding, 138 12 => Self::LeftToRightOverride, 139 13 => Self::ArabicLetter, 140 14 => Self::RightToLeftEmbedding, 141 15 => Self::RightToLeftOverride, 142 16 => Self::PopDirectionalFormat, 143 17 => Self::NonspacingMark, 144 18 => Self::BoundaryNeutral, 145 19 => Self::FirstStrongIsolate, 146 20 => Self::LeftToRightIsolate, 147 21 => Self::RightToLeftIsolate, 148 22 => Self::PopDirectionalIsolate, 149 _ => return None, 150 }) 151 } 152 } 153 154 #[diplomat::rust_link(icu::properties::props::Script, Struct)] 155 #[diplomat::enum_convert(icu_properties::props::Script, needs_wildcard)] 156 pub enum Script { 157 #[diplomat::rust_link(icu::properties::props::Script::Adlam, EnumVariant)] 158 Adlam = 167, 159 #[diplomat::rust_link(icu::properties::props::Script::Ahom, EnumVariant)] 160 Ahom = 161, 161 #[diplomat::rust_link(icu::properties::props::Script::AnatolianHieroglyphs, EnumVariant)] 162 AnatolianHieroglyphs = 156, 163 #[diplomat::rust_link(icu::properties::props::Script::Arabic, EnumVariant)] 164 Arabic = 2, 165 #[diplomat::rust_link(icu::properties::props::Script::Armenian, EnumVariant)] 166 Armenian = 3, 167 #[diplomat::rust_link(icu::properties::props::Script::Avestan, EnumVariant)] 168 Avestan = 117, 169 #[diplomat::rust_link(icu::properties::props::Script::Balinese, EnumVariant)] 170 Balinese = 62, 171 #[diplomat::rust_link(icu::properties::props::Script::Bamum, EnumVariant)] 172 Bamum = 130, 173 #[diplomat::rust_link(icu::properties::props::Script::BassaVah, EnumVariant)] 174 BassaVah = 134, 175 #[diplomat::rust_link(icu::properties::props::Script::Batak, EnumVariant)] 176 Batak = 63, 177 #[diplomat::rust_link(icu::properties::props::Script::Bengali, EnumVariant)] 178 Bengali = 4, 179 #[diplomat::rust_link(icu::properties::props::Script::Bhaiksuki, EnumVariant)] 180 Bhaiksuki = 168, 181 #[diplomat::rust_link(icu::properties::props::Script::Bopomofo, EnumVariant)] 182 Bopomofo = 5, 183 #[diplomat::rust_link(icu::properties::props::Script::Brahmi, EnumVariant)] 184 Brahmi = 65, 185 #[diplomat::rust_link(icu::properties::props::Script::Braille, EnumVariant)] 186 Braille = 46, 187 #[diplomat::rust_link(icu::properties::props::Script::Buginese, EnumVariant)] 188 Buginese = 55, 189 #[diplomat::rust_link(icu::properties::props::Script::Buhid, EnumVariant)] 190 Buhid = 44, 191 #[diplomat::rust_link(icu::properties::props::Script::CanadianAboriginal, EnumVariant)] 192 CanadianAboriginal = 40, 193 #[diplomat::rust_link(icu::properties::props::Script::Carian, EnumVariant)] 194 Carian = 104, 195 #[diplomat::rust_link(icu::properties::props::Script::CaucasianAlbanian, EnumVariant)] 196 CaucasianAlbanian = 159, 197 #[diplomat::rust_link(icu::properties::props::Script::Chakma, EnumVariant)] 198 Chakma = 118, 199 #[diplomat::rust_link(icu::properties::props::Script::Cham, EnumVariant)] 200 Cham = 66, 201 #[diplomat::rust_link(icu::properties::props::Script::Cherokee, EnumVariant)] 202 Cherokee = 6, 203 #[diplomat::rust_link(icu::properties::props::Script::Chorasmian, EnumVariant)] 204 Chorasmian = 189, 205 #[diplomat::rust_link(icu::properties::props::Script::Common, EnumVariant)] 206 Common = 0, 207 #[diplomat::rust_link(icu::properties::props::Script::Coptic, EnumVariant)] 208 Coptic = 7, 209 #[diplomat::rust_link(icu::properties::props::Script::Cuneiform, EnumVariant)] 210 Cuneiform = 101, 211 #[diplomat::rust_link(icu::properties::props::Script::Cypriot, EnumVariant)] 212 Cypriot = 47, 213 #[diplomat::rust_link(icu::properties::props::Script::CyproMinoan, EnumVariant)] 214 CyproMinoan = 193, 215 #[diplomat::rust_link(icu::properties::props::Script::Cyrillic, EnumVariant)] 216 Cyrillic = 8, 217 #[diplomat::rust_link(icu::properties::props::Script::Deseret, EnumVariant)] 218 Deseret = 9, 219 #[diplomat::rust_link(icu::properties::props::Script::Devanagari, EnumVariant)] 220 Devanagari = 10, 221 #[diplomat::rust_link(icu::properties::props::Script::DivesAkuru, EnumVariant)] 222 DivesAkuru = 190, 223 #[diplomat::rust_link(icu::properties::props::Script::Dogra, EnumVariant)] 224 Dogra = 178, 225 #[diplomat::rust_link(icu::properties::props::Script::Duployan, EnumVariant)] 226 Duployan = 135, 227 #[diplomat::rust_link(icu::properties::props::Script::EgyptianHieroglyphs, EnumVariant)] 228 EgyptianHieroglyphs = 71, 229 #[diplomat::rust_link(icu::properties::props::Script::Elbasan, EnumVariant)] 230 Elbasan = 136, 231 #[diplomat::rust_link(icu::properties::props::Script::Elymaic, EnumVariant)] 232 Elymaic = 185, 233 #[diplomat::rust_link(icu::properties::props::Script::Ethiopian, EnumVariant)] 234 Ethiopian = 11, 235 #[diplomat::rust_link(icu::properties::props::Script::Georgian, EnumVariant)] 236 Georgian = 12, 237 #[diplomat::rust_link(icu::properties::props::Script::Glagolitic, EnumVariant)] 238 Glagolitic = 56, 239 #[diplomat::rust_link(icu::properties::props::Script::Gothic, EnumVariant)] 240 Gothic = 13, 241 #[diplomat::rust_link(icu::properties::props::Script::Grantha, EnumVariant)] 242 Grantha = 137, 243 #[diplomat::rust_link(icu::properties::props::Script::Greek, EnumVariant)] 244 Greek = 14, 245 #[diplomat::rust_link(icu::properties::props::Script::Gujarati, EnumVariant)] 246 Gujarati = 15, 247 #[diplomat::rust_link(icu::properties::props::Script::GunjalaGondi, EnumVariant)] 248 GunjalaGondi = 179, 249 #[diplomat::rust_link(icu::properties::props::Script::Gurmukhi, EnumVariant)] 250 Gurmukhi = 16, 251 #[diplomat::rust_link(icu::properties::props::Script::Han, EnumVariant)] 252 Han = 17, 253 #[diplomat::rust_link(icu::properties::props::Script::Hangul, EnumVariant)] 254 Hangul = 18, 255 #[diplomat::rust_link(icu::properties::props::Script::HanifiRohingya, EnumVariant)] 256 HanifiRohingya = 182, 257 #[diplomat::rust_link(icu::properties::props::Script::Hanunoo, EnumVariant)] 258 Hanunoo = 43, 259 #[diplomat::rust_link(icu::properties::props::Script::Hatran, EnumVariant)] 260 Hatran = 162, 261 #[diplomat::rust_link(icu::properties::props::Script::Hebrew, EnumVariant)] 262 Hebrew = 19, 263 #[diplomat::rust_link(icu::properties::props::Script::Hiragana, EnumVariant)] 264 Hiragana = 20, 265 #[diplomat::rust_link(icu::properties::props::Script::ImperialAramaic, EnumVariant)] 266 ImperialAramaic = 116, 267 #[diplomat::rust_link(icu::properties::props::Script::Inherited, EnumVariant)] 268 Inherited = 1, 269 #[diplomat::rust_link(icu::properties::props::Script::InscriptionalPahlavi, EnumVariant)] 270 InscriptionalPahlavi = 122, 271 #[diplomat::rust_link(icu::properties::props::Script::InscriptionalParthian, EnumVariant)] 272 InscriptionalParthian = 125, 273 #[diplomat::rust_link(icu::properties::props::Script::Javanese, EnumVariant)] 274 Javanese = 78, 275 #[diplomat::rust_link(icu::properties::props::Script::Kaithi, EnumVariant)] 276 Kaithi = 120, 277 #[diplomat::rust_link(icu::properties::props::Script::Kannada, EnumVariant)] 278 Kannada = 21, 279 #[diplomat::rust_link(icu::properties::props::Script::Katakana, EnumVariant)] 280 Katakana = 22, 281 #[diplomat::rust_link(icu::properties::props::Script::Kawi, EnumVariant)] 282 Kawi = 198, 283 #[diplomat::rust_link(icu::properties::props::Script::KayahLi, EnumVariant)] 284 KayahLi = 79, 285 #[diplomat::rust_link(icu::properties::props::Script::Kharoshthi, EnumVariant)] 286 Kharoshthi = 57, 287 #[diplomat::rust_link(icu::properties::props::Script::KhitanSmallScript, EnumVariant)] 288 KhitanSmallScript = 191, 289 #[diplomat::rust_link(icu::properties::props::Script::Khmer, EnumVariant)] 290 Khmer = 23, 291 #[diplomat::rust_link(icu::properties::props::Script::Khojki, EnumVariant)] 292 Khojki = 157, 293 #[diplomat::rust_link(icu::properties::props::Script::Khudawadi, EnumVariant)] 294 Khudawadi = 145, 295 #[diplomat::rust_link(icu::properties::props::Script::Lao, EnumVariant)] 296 Lao = 24, 297 #[diplomat::rust_link(icu::properties::props::Script::Latin, EnumVariant)] 298 Latin = 25, 299 #[diplomat::rust_link(icu::properties::props::Script::Lepcha, EnumVariant)] 300 Lepcha = 82, 301 #[diplomat::rust_link(icu::properties::props::Script::Limbu, EnumVariant)] 302 Limbu = 48, 303 #[diplomat::rust_link(icu::properties::props::Script::LinearA, EnumVariant)] 304 LinearA = 83, 305 #[diplomat::rust_link(icu::properties::props::Script::LinearB, EnumVariant)] 306 LinearB = 49, 307 #[diplomat::rust_link(icu::properties::props::Script::Lisu, EnumVariant)] 308 Lisu = 131, 309 #[diplomat::rust_link(icu::properties::props::Script::Lycian, EnumVariant)] 310 Lycian = 107, 311 #[diplomat::rust_link(icu::properties::props::Script::Lydian, EnumVariant)] 312 Lydian = 108, 313 #[diplomat::rust_link(icu::properties::props::Script::Mahajani, EnumVariant)] 314 Mahajani = 160, 315 #[diplomat::rust_link(icu::properties::props::Script::Makasar, EnumVariant)] 316 Makasar = 180, 317 #[diplomat::rust_link(icu::properties::props::Script::Malayalam, EnumVariant)] 318 Malayalam = 26, 319 #[diplomat::rust_link(icu::properties::props::Script::Mandaic, EnumVariant)] 320 Mandaic = 84, 321 #[diplomat::rust_link(icu::properties::props::Script::Manichaean, EnumVariant)] 322 Manichaean = 121, 323 #[diplomat::rust_link(icu::properties::props::Script::Marchen, EnumVariant)] 324 Marchen = 169, 325 #[diplomat::rust_link(icu::properties::props::Script::MasaramGondi, EnumVariant)] 326 MasaramGondi = 175, 327 #[diplomat::rust_link(icu::properties::props::Script::Medefaidrin, EnumVariant)] 328 Medefaidrin = 181, 329 #[diplomat::rust_link(icu::properties::props::Script::MeeteiMayek, EnumVariant)] 330 MeeteiMayek = 115, 331 #[diplomat::rust_link(icu::properties::props::Script::MendeKikakui, EnumVariant)] 332 MendeKikakui = 140, 333 #[diplomat::rust_link(icu::properties::props::Script::MeroiticCursive, EnumVariant)] 334 MeroiticCursive = 141, 335 #[diplomat::rust_link(icu::properties::props::Script::MeroiticHieroglyphs, EnumVariant)] 336 MeroiticHieroglyphs = 86, 337 #[diplomat::rust_link(icu::properties::props::Script::Miao, EnumVariant)] 338 Miao = 92, 339 #[diplomat::rust_link(icu::properties::props::Script::Modi, EnumVariant)] 340 Modi = 163, 341 #[diplomat::rust_link(icu::properties::props::Script::Mongolian, EnumVariant)] 342 Mongolian = 27, 343 #[diplomat::rust_link(icu::properties::props::Script::Mro, EnumVariant)] 344 Mro = 149, 345 #[diplomat::rust_link(icu::properties::props::Script::Multani, EnumVariant)] 346 Multani = 164, 347 #[diplomat::rust_link(icu::properties::props::Script::Myanmar, EnumVariant)] 348 Myanmar = 28, 349 #[diplomat::rust_link(icu::properties::props::Script::Nabataean, EnumVariant)] 350 Nabataean = 143, 351 #[diplomat::rust_link(icu::properties::props::Script::NagMundari, EnumVariant)] 352 NagMundari = 199, 353 #[diplomat::rust_link(icu::properties::props::Script::Nandinagari, EnumVariant)] 354 Nandinagari = 187, 355 #[diplomat::rust_link(icu::properties::props::Script::Nastaliq, EnumVariant)] 356 Nastaliq = 200, 357 #[diplomat::rust_link(icu::properties::props::Script::NewTaiLue, EnumVariant)] 358 NewTaiLue = 59, 359 #[diplomat::rust_link(icu::properties::props::Script::Newa, EnumVariant)] 360 Newa = 170, 361 #[diplomat::rust_link(icu::properties::props::Script::Nko, EnumVariant)] 362 Nko = 87, 363 #[diplomat::rust_link(icu::properties::props::Script::Nushu, EnumVariant)] 364 Nushu = 150, 365 #[diplomat::rust_link(icu::properties::props::Script::NyiakengPuachueHmong, EnumVariant)] 366 NyiakengPuachueHmong = 186, 367 #[diplomat::rust_link(icu::properties::props::Script::Ogham, EnumVariant)] 368 Ogham = 29, 369 #[diplomat::rust_link(icu::properties::props::Script::OlChiki, EnumVariant)] 370 OlChiki = 109, 371 #[diplomat::rust_link(icu::properties::props::Script::OldHungarian, EnumVariant)] 372 OldHungarian = 76, 373 #[diplomat::rust_link(icu::properties::props::Script::OldItalic, EnumVariant)] 374 OldItalic = 30, 375 #[diplomat::rust_link(icu::properties::props::Script::OldNorthArabian, EnumVariant)] 376 OldNorthArabian = 142, 377 #[diplomat::rust_link(icu::properties::props::Script::OldPermic, EnumVariant)] 378 OldPermic = 89, 379 #[diplomat::rust_link(icu::properties::props::Script::OldPersian, EnumVariant)] 380 OldPersian = 61, 381 #[diplomat::rust_link(icu::properties::props::Script::OldSogdian, EnumVariant)] 382 OldSogdian = 184, 383 #[diplomat::rust_link(icu::properties::props::Script::OldSouthArabian, EnumVariant)] 384 OldSouthArabian = 133, 385 #[diplomat::rust_link(icu::properties::props::Script::OldTurkic, EnumVariant)] 386 OldTurkic = 88, 387 #[diplomat::rust_link(icu::properties::props::Script::OldUyghur, EnumVariant)] 388 OldUyghur = 194, 389 #[diplomat::rust_link(icu::properties::props::Script::Oriya, EnumVariant)] 390 Oriya = 31, 391 #[diplomat::rust_link(icu::properties::props::Script::Osage, EnumVariant)] 392 Osage = 171, 393 #[diplomat::rust_link(icu::properties::props::Script::Osmanya, EnumVariant)] 394 Osmanya = 50, 395 #[diplomat::rust_link(icu::properties::props::Script::PahawhHmong, EnumVariant)] 396 PahawhHmong = 75, 397 #[diplomat::rust_link(icu::properties::props::Script::Palmyrene, EnumVariant)] 398 Palmyrene = 144, 399 #[diplomat::rust_link(icu::properties::props::Script::PauCinHau, EnumVariant)] 400 PauCinHau = 165, 401 #[diplomat::rust_link(icu::properties::props::Script::PhagsPa, EnumVariant)] 402 PhagsPa = 90, 403 #[diplomat::rust_link(icu::properties::props::Script::Phoenician, EnumVariant)] 404 Phoenician = 91, 405 #[diplomat::rust_link(icu::properties::props::Script::PsalterPahlavi, EnumVariant)] 406 PsalterPahlavi = 123, 407 #[diplomat::rust_link(icu::properties::props::Script::Rejang, EnumVariant)] 408 Rejang = 110, 409 #[diplomat::rust_link(icu::properties::props::Script::Runic, EnumVariant)] 410 Runic = 32, 411 #[diplomat::rust_link(icu::properties::props::Script::Samaritan, EnumVariant)] 412 Samaritan = 126, 413 #[diplomat::rust_link(icu::properties::props::Script::Saurashtra, EnumVariant)] 414 Saurashtra = 111, 415 #[diplomat::rust_link(icu::properties::props::Script::Sharada, EnumVariant)] 416 Sharada = 151, 417 #[diplomat::rust_link(icu::properties::props::Script::Shavian, EnumVariant)] 418 Shavian = 51, 419 #[diplomat::rust_link(icu::properties::props::Script::Siddham, EnumVariant)] 420 Siddham = 166, 421 #[diplomat::rust_link(icu::properties::props::Script::SignWriting, EnumVariant)] 422 SignWriting = 112, 423 #[diplomat::rust_link(icu::properties::props::Script::Sinhala, EnumVariant)] 424 Sinhala = 33, 425 #[diplomat::rust_link(icu::properties::props::Script::Sogdian, EnumVariant)] 426 Sogdian = 183, 427 #[diplomat::rust_link(icu::properties::props::Script::SoraSompeng, EnumVariant)] 428 SoraSompeng = 152, 429 #[diplomat::rust_link(icu::properties::props::Script::Soyombo, EnumVariant)] 430 Soyombo = 176, 431 #[diplomat::rust_link(icu::properties::props::Script::Sundanese, EnumVariant)] 432 Sundanese = 113, 433 #[diplomat::rust_link(icu::properties::props::Script::SylotiNagri, EnumVariant)] 434 SylotiNagri = 58, 435 #[diplomat::rust_link(icu::properties::props::Script::Syriac, EnumVariant)] 436 Syriac = 34, 437 #[diplomat::rust_link(icu::properties::props::Script::Tagalog, EnumVariant)] 438 Tagalog = 42, 439 #[diplomat::rust_link(icu::properties::props::Script::Tagbanwa, EnumVariant)] 440 Tagbanwa = 45, 441 #[diplomat::rust_link(icu::properties::props::Script::TaiLe, EnumVariant)] 442 TaiLe = 52, 443 #[diplomat::rust_link(icu::properties::props::Script::TaiTham, EnumVariant)] 444 TaiTham = 106, 445 #[diplomat::rust_link(icu::properties::props::Script::TaiViet, EnumVariant)] 446 TaiViet = 127, 447 #[diplomat::rust_link(icu::properties::props::Script::Takri, EnumVariant)] 448 Takri = 153, 449 #[diplomat::rust_link(icu::properties::props::Script::Tamil, EnumVariant)] 450 Tamil = 35, 451 #[diplomat::rust_link(icu::properties::props::Script::Tangsa, EnumVariant)] 452 Tangsa = 195, 453 #[diplomat::rust_link(icu::properties::props::Script::Tangut, EnumVariant)] 454 Tangut = 154, 455 #[diplomat::rust_link(icu::properties::props::Script::Telugu, EnumVariant)] 456 Telugu = 36, 457 #[diplomat::rust_link(icu::properties::props::Script::Thaana, EnumVariant)] 458 Thaana = 37, 459 #[diplomat::rust_link(icu::properties::props::Script::Thai, EnumVariant)] 460 Thai = 38, 461 #[diplomat::rust_link(icu::properties::props::Script::Tibetan, EnumVariant)] 462 Tibetan = 39, 463 #[diplomat::rust_link(icu::properties::props::Script::Tifinagh, EnumVariant)] 464 Tifinagh = 60, 465 #[diplomat::rust_link(icu::properties::props::Script::Tirhuta, EnumVariant)] 466 Tirhuta = 158, 467 #[diplomat::rust_link(icu::properties::props::Script::Toto, EnumVariant)] 468 Toto = 196, 469 #[diplomat::rust_link(icu::properties::props::Script::Ugaritic, EnumVariant)] 470 Ugaritic = 53, 471 #[diplomat::rust_link(icu::properties::props::Script::Unknown, EnumVariant)] 472 Unknown = 103, 473 #[diplomat::rust_link(icu::properties::props::Script::Vai, EnumVariant)] 474 Vai = 99, 475 #[diplomat::rust_link(icu::properties::props::Script::Vithkuqi, EnumVariant)] 476 Vithkuqi = 197, 477 #[diplomat::rust_link(icu::properties::props::Script::Wancho, EnumVariant)] 478 Wancho = 188, 479 #[diplomat::rust_link(icu::properties::props::Script::WarangCiti, EnumVariant)] 480 WarangCiti = 146, 481 #[diplomat::rust_link(icu::properties::props::Script::Yezidi, EnumVariant)] 482 Yezidi = 192, 483 #[diplomat::rust_link(icu::properties::props::Script::Yi, EnumVariant)] 484 Yi = 41, 485 #[diplomat::rust_link(icu::properties::props::Script::ZanabazarSquare, EnumVariant)] 486 ZanabazarSquare = 177, 487 } 488 489 impl Script { 490 #[diplomat::rust_link(icu::properties::props::EnumeratedProperty::for_char, FnInTrait)] 491 #[cfg(feature = "compiled_data")] for_char(ch: DiplomatChar) -> Self492 pub fn for_char(ch: DiplomatChar) -> Self { 493 icu_properties::CodePointMapData::<props::Script>::new() 494 .get32(ch) 495 .into() 496 } 497 498 #[diplomat::rust_link(icu::properties::PropertyNamesLongBorrowed::get, FnInStruct)] 499 #[cfg(feature = "compiled_data")] 500 /// Get the "long" name of this property value (returns empty if property value is unknown) long_name(self) -> Option<&'static str>501 pub fn long_name(self) -> Option<&'static str> { 502 icu_properties::PropertyNamesLongBorrowed::<props::Script>::new().get(self.into()) 503 } 504 505 #[diplomat::rust_link(icu::properties::PropertyNamesShortBorrowed::get, FnInStruct)] 506 #[diplomat::rust_link( 507 icu::properties::PropertyNamesShortBorrowed::get_locale_script, 508 FnInStruct, 509 hidden 510 )] 511 #[cfg(feature = "compiled_data")] 512 /// Get the "short" name of this property value (returns empty if property value is unknown) short_name(self) -> Option<&'static str>513 pub fn short_name(self) -> Option<&'static str> { 514 icu_properties::PropertyNamesShortBorrowed::<props::Script>::new().get(self.into()) 515 } 516 #[diplomat::rust_link(icu::properties::props::Script::to_icu4c_value, FnInStruct)] 517 /// Convert to an integer value usable with ICU4C and CodePointMapData to_integer_value(self) -> u16518 pub fn to_integer_value(self) -> u16 { 519 self as u16 520 } 521 #[diplomat::rust_link(icu::properties::props::Script::from_icu4c_value, FnInStruct)] 522 /// Convert from an integer value from ICU4C or CodePointMapData from_integer_value(other: u16) -> Option<Self>523 pub fn from_integer_value(other: u16) -> Option<Self> { 524 Some(match other { 525 167 => Self::Adlam, 526 161 => Self::Ahom, 527 156 => Self::AnatolianHieroglyphs, 528 2 => Self::Arabic, 529 3 => Self::Armenian, 530 117 => Self::Avestan, 531 62 => Self::Balinese, 532 130 => Self::Bamum, 533 134 => Self::BassaVah, 534 63 => Self::Batak, 535 4 => Self::Bengali, 536 168 => Self::Bhaiksuki, 537 5 => Self::Bopomofo, 538 65 => Self::Brahmi, 539 46 => Self::Braille, 540 55 => Self::Buginese, 541 44 => Self::Buhid, 542 40 => Self::CanadianAboriginal, 543 104 => Self::Carian, 544 159 => Self::CaucasianAlbanian, 545 118 => Self::Chakma, 546 66 => Self::Cham, 547 6 => Self::Cherokee, 548 189 => Self::Chorasmian, 549 0 => Self::Common, 550 7 => Self::Coptic, 551 101 => Self::Cuneiform, 552 47 => Self::Cypriot, 553 193 => Self::CyproMinoan, 554 8 => Self::Cyrillic, 555 9 => Self::Deseret, 556 10 => Self::Devanagari, 557 190 => Self::DivesAkuru, 558 178 => Self::Dogra, 559 135 => Self::Duployan, 560 71 => Self::EgyptianHieroglyphs, 561 136 => Self::Elbasan, 562 185 => Self::Elymaic, 563 11 => Self::Ethiopian, 564 12 => Self::Georgian, 565 56 => Self::Glagolitic, 566 13 => Self::Gothic, 567 137 => Self::Grantha, 568 14 => Self::Greek, 569 15 => Self::Gujarati, 570 179 => Self::GunjalaGondi, 571 16 => Self::Gurmukhi, 572 17 => Self::Han, 573 18 => Self::Hangul, 574 182 => Self::HanifiRohingya, 575 43 => Self::Hanunoo, 576 162 => Self::Hatran, 577 19 => Self::Hebrew, 578 20 => Self::Hiragana, 579 116 => Self::ImperialAramaic, 580 1 => Self::Inherited, 581 122 => Self::InscriptionalPahlavi, 582 125 => Self::InscriptionalParthian, 583 78 => Self::Javanese, 584 120 => Self::Kaithi, 585 21 => Self::Kannada, 586 22 => Self::Katakana, 587 198 => Self::Kawi, 588 79 => Self::KayahLi, 589 57 => Self::Kharoshthi, 590 191 => Self::KhitanSmallScript, 591 23 => Self::Khmer, 592 157 => Self::Khojki, 593 145 => Self::Khudawadi, 594 24 => Self::Lao, 595 25 => Self::Latin, 596 82 => Self::Lepcha, 597 48 => Self::Limbu, 598 83 => Self::LinearA, 599 49 => Self::LinearB, 600 131 => Self::Lisu, 601 107 => Self::Lycian, 602 108 => Self::Lydian, 603 160 => Self::Mahajani, 604 180 => Self::Makasar, 605 26 => Self::Malayalam, 606 84 => Self::Mandaic, 607 121 => Self::Manichaean, 608 169 => Self::Marchen, 609 175 => Self::MasaramGondi, 610 181 => Self::Medefaidrin, 611 115 => Self::MeeteiMayek, 612 140 => Self::MendeKikakui, 613 141 => Self::MeroiticCursive, 614 86 => Self::MeroiticHieroglyphs, 615 92 => Self::Miao, 616 163 => Self::Modi, 617 27 => Self::Mongolian, 618 149 => Self::Mro, 619 164 => Self::Multani, 620 28 => Self::Myanmar, 621 143 => Self::Nabataean, 622 199 => Self::NagMundari, 623 187 => Self::Nandinagari, 624 200 => Self::Nastaliq, 625 59 => Self::NewTaiLue, 626 170 => Self::Newa, 627 87 => Self::Nko, 628 150 => Self::Nushu, 629 186 => Self::NyiakengPuachueHmong, 630 29 => Self::Ogham, 631 109 => Self::OlChiki, 632 76 => Self::OldHungarian, 633 30 => Self::OldItalic, 634 142 => Self::OldNorthArabian, 635 89 => Self::OldPermic, 636 61 => Self::OldPersian, 637 184 => Self::OldSogdian, 638 133 => Self::OldSouthArabian, 639 88 => Self::OldTurkic, 640 194 => Self::OldUyghur, 641 31 => Self::Oriya, 642 171 => Self::Osage, 643 50 => Self::Osmanya, 644 75 => Self::PahawhHmong, 645 144 => Self::Palmyrene, 646 165 => Self::PauCinHau, 647 90 => Self::PhagsPa, 648 91 => Self::Phoenician, 649 123 => Self::PsalterPahlavi, 650 110 => Self::Rejang, 651 32 => Self::Runic, 652 126 => Self::Samaritan, 653 111 => Self::Saurashtra, 654 151 => Self::Sharada, 655 51 => Self::Shavian, 656 166 => Self::Siddham, 657 112 => Self::SignWriting, 658 33 => Self::Sinhala, 659 183 => Self::Sogdian, 660 152 => Self::SoraSompeng, 661 176 => Self::Soyombo, 662 113 => Self::Sundanese, 663 58 => Self::SylotiNagri, 664 34 => Self::Syriac, 665 42 => Self::Tagalog, 666 45 => Self::Tagbanwa, 667 52 => Self::TaiLe, 668 106 => Self::TaiTham, 669 127 => Self::TaiViet, 670 153 => Self::Takri, 671 35 => Self::Tamil, 672 195 => Self::Tangsa, 673 154 => Self::Tangut, 674 36 => Self::Telugu, 675 37 => Self::Thaana, 676 38 => Self::Thai, 677 39 => Self::Tibetan, 678 60 => Self::Tifinagh, 679 158 => Self::Tirhuta, 680 196 => Self::Toto, 681 53 => Self::Ugaritic, 682 103 => Self::Unknown, 683 99 => Self::Vai, 684 197 => Self::Vithkuqi, 685 188 => Self::Wancho, 686 146 => Self::WarangCiti, 687 192 => Self::Yezidi, 688 41 => Self::Yi, 689 177 => Self::ZanabazarSquare, 690 _ => return None, 691 }) 692 } 693 } 694 695 #[diplomat::rust_link(icu::properties::props::HangulSyllableType, Struct)] 696 #[diplomat::enum_convert(icu_properties::props::HangulSyllableType, needs_wildcard)] 697 pub enum HangulSyllableType { 698 #[diplomat::rust_link( 699 icu::properties::props::HangulSyllableType::NotApplicable, 700 EnumVariant 701 )] 702 NotApplicable = 0, 703 #[diplomat::rust_link( 704 icu::properties::props::HangulSyllableType::LeadingJamo, 705 EnumVariant 706 )] 707 LeadingJamo = 1, 708 #[diplomat::rust_link(icu::properties::props::HangulSyllableType::VowelJamo, EnumVariant)] 709 VowelJamo = 2, 710 #[diplomat::rust_link( 711 icu::properties::props::HangulSyllableType::TrailingJamo, 712 EnumVariant 713 )] 714 TrailingJamo = 3, 715 #[diplomat::rust_link( 716 icu::properties::props::HangulSyllableType::LeadingVowelSyllable, 717 EnumVariant 718 )] 719 LeadingVowelSyllable = 4, 720 #[diplomat::rust_link( 721 icu::properties::props::HangulSyllableType::LeadingVowelTrailingSyllable, 722 EnumVariant 723 )] 724 LeadingVowelTrailingSyllable = 5, 725 } 726 727 impl HangulSyllableType { 728 #[diplomat::rust_link(icu::properties::props::EnumeratedProperty::for_char, FnInTrait)] 729 #[cfg(feature = "compiled_data")] for_char(ch: DiplomatChar) -> Self730 pub fn for_char(ch: DiplomatChar) -> Self { 731 icu_properties::CodePointMapData::<props::HangulSyllableType>::new() 732 .get32(ch) 733 .into() 734 } 735 #[diplomat::rust_link( 736 icu::properties::props::HangulSyllableType::to_icu4c_value, 737 FnInStruct 738 )] 739 /// Convert to an integer value usable with ICU4C and CodePointMapData to_integer_value(self) -> u8740 pub fn to_integer_value(self) -> u8 { 741 self as u8 742 } 743 #[diplomat::rust_link( 744 icu::properties::props::HangulSyllableType::from_icu4c_value, 745 FnInStruct 746 )] 747 /// Convert from an integer value from ICU4C or CodePointMapData from_integer_value(other: u8) -> Option<Self>748 pub fn from_integer_value(other: u8) -> Option<Self> { 749 Some(match other { 750 0 => Self::NotApplicable, 751 1 => Self::LeadingJamo, 752 2 => Self::VowelJamo, 753 3 => Self::TrailingJamo, 754 4 => Self::LeadingVowelSyllable, 755 5 => Self::LeadingVowelTrailingSyllable, 756 _ => return None, 757 }) 758 } 759 } 760 761 #[diplomat::rust_link(icu::properties::props::EastAsianWidth, Struct)] 762 #[diplomat::enum_convert(icu_properties::props::EastAsianWidth, needs_wildcard)] 763 pub enum EastAsianWidth { 764 #[diplomat::rust_link(icu::properties::props::EastAsianWidth::Neutral, EnumVariant)] 765 Neutral = 0, 766 #[diplomat::rust_link(icu::properties::props::EastAsianWidth::Ambiguous, EnumVariant)] 767 Ambiguous = 1, 768 #[diplomat::rust_link(icu::properties::props::EastAsianWidth::Halfwidth, EnumVariant)] 769 Halfwidth = 2, 770 #[diplomat::rust_link(icu::properties::props::EastAsianWidth::Fullwidth, EnumVariant)] 771 Fullwidth = 3, 772 #[diplomat::rust_link(icu::properties::props::EastAsianWidth::Narrow, EnumVariant)] 773 Narrow = 4, 774 #[diplomat::rust_link(icu::properties::props::EastAsianWidth::Wide, EnumVariant)] 775 Wide = 5, 776 } 777 778 impl EastAsianWidth { 779 #[diplomat::rust_link(icu::properties::props::EnumeratedProperty::for_char, FnInTrait)] 780 #[cfg(feature = "compiled_data")] for_char(ch: DiplomatChar) -> Self781 pub fn for_char(ch: DiplomatChar) -> Self { 782 icu_properties::CodePointMapData::<props::EastAsianWidth>::new() 783 .get32(ch) 784 .into() 785 } 786 787 #[diplomat::rust_link(icu::properties::PropertyNamesLongBorrowed::get, FnInStruct)] 788 #[cfg(feature = "compiled_data")] 789 /// Get the "long" name of this property value (returns empty if property value is unknown) long_name(self) -> Option<&'static str>790 pub fn long_name(self) -> Option<&'static str> { 791 icu_properties::PropertyNamesLongBorrowed::<props::EastAsianWidth>::new() 792 .get(self.into()) 793 } 794 795 #[diplomat::rust_link(icu::properties::PropertyNamesShortBorrowed::get, FnInStruct)] 796 #[cfg(feature = "compiled_data")] 797 /// Get the "short" name of this property value (returns empty if property value is unknown) short_name(self) -> Option<&'static str>798 pub fn short_name(self) -> Option<&'static str> { 799 icu_properties::PropertyNamesShortBorrowed::<props::EastAsianWidth>::new() 800 .get(self.into()) 801 } 802 #[diplomat::rust_link(icu::properties::props::EastAsianWidth::to_icu4c_value, FnInStruct)] 803 /// Convert to an integer value usable with ICU4C and CodePointMapData to_integer_value(self) -> u8804 pub fn to_integer_value(self) -> u8 { 805 self as u8 806 } 807 #[diplomat::rust_link(icu::properties::props::EastAsianWidth::from_icu4c_value, FnInStruct)] 808 /// Convert from an integer value from ICU4C or CodePointMapData from_integer_value(other: u8) -> Option<Self>809 pub fn from_integer_value(other: u8) -> Option<Self> { 810 Some(match other { 811 0 => Self::Neutral, 812 1 => Self::Ambiguous, 813 2 => Self::Halfwidth, 814 3 => Self::Fullwidth, 815 4 => Self::Narrow, 816 5 => Self::Wide, 817 _ => return None, 818 }) 819 } 820 } 821 822 #[diplomat::rust_link(icu::properties::props::LineBreak, Struct)] 823 #[diplomat::enum_convert(icu_properties::props::LineBreak, needs_wildcard)] 824 pub enum LineBreak { 825 #[diplomat::rust_link(icu::props::LineBreak::Unknown, EnumVariant)] 826 Unknown = 0, 827 #[diplomat::rust_link(icu::props::LineBreak::Ambiguous, EnumVariant)] 828 Ambiguous = 1, 829 #[diplomat::rust_link(icu::props::LineBreak::Alphabetic, EnumVariant)] 830 Alphabetic = 2, 831 #[diplomat::rust_link(icu::props::LineBreak::BreakBoth, EnumVariant)] 832 BreakBoth = 3, 833 #[diplomat::rust_link(icu::props::LineBreak::BreakAfter, EnumVariant)] 834 BreakAfter = 4, 835 #[diplomat::rust_link(icu::props::LineBreak::BreakBefore, EnumVariant)] 836 BreakBefore = 5, 837 #[diplomat::rust_link(icu::props::LineBreak::MandatoryBreak, EnumVariant)] 838 MandatoryBreak = 6, 839 #[diplomat::rust_link(icu::props::LineBreak::ContingentBreak, EnumVariant)] 840 ContingentBreak = 7, 841 #[diplomat::rust_link(icu::props::LineBreak::ClosePunctuation, EnumVariant)] 842 ClosePunctuation = 8, 843 #[diplomat::rust_link(icu::props::LineBreak::CombiningMark, EnumVariant)] 844 CombiningMark = 9, 845 #[diplomat::rust_link(icu::props::LineBreak::CarriageReturn, EnumVariant)] 846 CarriageReturn = 10, 847 #[diplomat::rust_link(icu::props::LineBreak::Exclamation, EnumVariant)] 848 Exclamation = 11, 849 #[diplomat::rust_link(icu::props::LineBreak::Glue, EnumVariant)] 850 Glue = 12, 851 #[diplomat::rust_link(icu::props::LineBreak::Hyphen, EnumVariant)] 852 Hyphen = 13, 853 #[diplomat::rust_link(icu::props::LineBreak::Ideographic, EnumVariant)] 854 Ideographic = 14, 855 #[diplomat::rust_link(icu::props::LineBreak::Inseparable, EnumVariant)] 856 Inseparable = 15, 857 #[diplomat::rust_link(icu::props::LineBreak::InfixNumeric, EnumVariant)] 858 InfixNumeric = 16, 859 #[diplomat::rust_link(icu::props::LineBreak::LineFeed, EnumVariant)] 860 LineFeed = 17, 861 #[diplomat::rust_link(icu::props::LineBreak::Nonstarter, EnumVariant)] 862 Nonstarter = 18, 863 #[diplomat::rust_link(icu::props::LineBreak::Numeric, EnumVariant)] 864 Numeric = 19, 865 #[diplomat::rust_link(icu::props::LineBreak::OpenPunctuation, EnumVariant)] 866 OpenPunctuation = 20, 867 #[diplomat::rust_link(icu::props::LineBreak::PostfixNumeric, EnumVariant)] 868 PostfixNumeric = 21, 869 #[diplomat::rust_link(icu::props::LineBreak::PrefixNumeric, EnumVariant)] 870 PrefixNumeric = 22, 871 #[diplomat::rust_link(icu::props::LineBreak::Quotation, EnumVariant)] 872 Quotation = 23, 873 #[diplomat::rust_link(icu::props::LineBreak::ComplexContext, EnumVariant)] 874 ComplexContext = 24, 875 #[diplomat::rust_link(icu::props::LineBreak::Surrogate, EnumVariant)] 876 Surrogate = 25, 877 #[diplomat::rust_link(icu::props::LineBreak::Space, EnumVariant)] 878 Space = 26, 879 #[diplomat::rust_link(icu::props::LineBreak::BreakSymbols, EnumVariant)] 880 BreakSymbols = 27, 881 #[diplomat::rust_link(icu::props::LineBreak::ZWSpace, EnumVariant)] 882 ZWSpace = 28, 883 #[diplomat::rust_link(icu::props::LineBreak::NextLine, EnumVariant)] 884 NextLine = 29, 885 #[diplomat::rust_link(icu::props::LineBreak::WordJoiner, EnumVariant)] 886 WordJoiner = 30, 887 #[diplomat::rust_link(icu::props::LineBreak::H2, EnumVariant)] 888 H2 = 31, 889 #[diplomat::rust_link(icu::props::LineBreak::H3, EnumVariant)] 890 H3 = 32, 891 #[diplomat::rust_link(icu::props::LineBreak::JL, EnumVariant)] 892 JL = 33, 893 #[diplomat::rust_link(icu::props::LineBreak::JT, EnumVariant)] 894 JT = 34, 895 #[diplomat::rust_link(icu::props::LineBreak::JV, EnumVariant)] 896 JV = 35, 897 #[diplomat::rust_link(icu::props::LineBreak::CloseParenthesis, EnumVariant)] 898 CloseParenthesis = 36, 899 #[diplomat::rust_link(icu::props::LineBreak::ConditionalJapaneseStarter, EnumVariant)] 900 ConditionalJapaneseStarter = 37, 901 #[diplomat::rust_link(icu::props::LineBreak::HebrewLetter, EnumVariant)] 902 HebrewLetter = 38, 903 #[diplomat::rust_link(icu::props::LineBreak::RegionalIndicator, EnumVariant)] 904 RegionalIndicator = 39, 905 #[diplomat::rust_link(icu::props::LineBreak::EBase, EnumVariant)] 906 EBase = 40, 907 #[diplomat::rust_link(icu::props::LineBreak::EModifier, EnumVariant)] 908 EModifier = 41, 909 #[diplomat::rust_link(icu::props::LineBreak::ZWJ, EnumVariant)] 910 ZWJ = 42, 911 #[diplomat::rust_link(icu::props::LineBreak::Aksara, EnumVariant)] 912 Aksara = 43, 913 #[diplomat::rust_link(icu::props::LineBreak::AksaraPrebase, EnumVariant)] 914 AksaraPrebase = 44, 915 #[diplomat::rust_link(icu::props::LineBreak::AksaraStart, EnumVariant)] 916 AksaraStart = 45, 917 #[diplomat::rust_link(icu::props::LineBreak::ViramaFinal, EnumVariant)] 918 ViramaFinal = 46, 919 #[diplomat::rust_link(icu::props::LineBreak::Virama, EnumVariant)] 920 Virama = 47, 921 } 922 923 impl LineBreak { 924 #[diplomat::rust_link(icu::properties::props::EnumeratedProperty::for_char, FnInTrait)] 925 #[cfg(feature = "compiled_data")] for_char(ch: DiplomatChar) -> Self926 pub fn for_char(ch: DiplomatChar) -> Self { 927 icu_properties::CodePointMapData::<props::LineBreak>::new() 928 .get32(ch) 929 .into() 930 } 931 932 #[diplomat::rust_link(icu::properties::PropertyNamesLongBorrowed::get, FnInStruct)] 933 #[cfg(feature = "compiled_data")] 934 /// Get the "long" name of this property value (returns empty if property value is unknown) long_name(self) -> Option<&'static str>935 pub fn long_name(self) -> Option<&'static str> { 936 icu_properties::PropertyNamesLongBorrowed::<props::LineBreak>::new().get(self.into()) 937 } 938 939 #[diplomat::rust_link(icu::properties::PropertyNamesShortBorrowed::get, FnInStruct)] 940 #[cfg(feature = "compiled_data")] 941 /// Get the "short" name of this property value (returns empty if property value is unknown) short_name(self) -> Option<&'static str>942 pub fn short_name(self) -> Option<&'static str> { 943 icu_properties::PropertyNamesShortBorrowed::<props::LineBreak>::new().get(self.into()) 944 } 945 #[diplomat::rust_link(icu::properties::props::LineBreak::to_icu4c_value, FnInStruct)] 946 /// Convert to an integer value usable with ICU4C and CodePointMapData to_integer_value(self) -> u8947 pub fn to_integer_value(self) -> u8 { 948 self as u8 949 } 950 #[diplomat::rust_link(icu::properties::props::LineBreak::from_icu4c_value, FnInStruct)] 951 /// Convert from an integer value from ICU4C or CodePointMapData from_integer_value(other: u8) -> Option<Self>952 pub fn from_integer_value(other: u8) -> Option<Self> { 953 Some(match other { 954 0 => Self::Unknown, 955 1 => Self::Ambiguous, 956 2 => Self::Alphabetic, 957 3 => Self::BreakBoth, 958 4 => Self::BreakAfter, 959 5 => Self::BreakBefore, 960 6 => Self::MandatoryBreak, 961 7 => Self::ContingentBreak, 962 8 => Self::ClosePunctuation, 963 9 => Self::CombiningMark, 964 10 => Self::CarriageReturn, 965 11 => Self::Exclamation, 966 12 => Self::Glue, 967 13 => Self::Hyphen, 968 14 => Self::Ideographic, 969 15 => Self::Inseparable, 970 16 => Self::InfixNumeric, 971 17 => Self::LineFeed, 972 18 => Self::Nonstarter, 973 19 => Self::Numeric, 974 20 => Self::OpenPunctuation, 975 21 => Self::PostfixNumeric, 976 22 => Self::PrefixNumeric, 977 23 => Self::Quotation, 978 24 => Self::ComplexContext, 979 25 => Self::Surrogate, 980 26 => Self::Space, 981 27 => Self::BreakSymbols, 982 28 => Self::ZWSpace, 983 29 => Self::NextLine, 984 30 => Self::WordJoiner, 985 31 => Self::H2, 986 32 => Self::H3, 987 33 => Self::JL, 988 34 => Self::JT, 989 35 => Self::JV, 990 36 => Self::CloseParenthesis, 991 37 => Self::ConditionalJapaneseStarter, 992 38 => Self::HebrewLetter, 993 39 => Self::RegionalIndicator, 994 40 => Self::EBase, 995 41 => Self::EModifier, 996 42 => Self::ZWJ, 997 43 => Self::Aksara, 998 44 => Self::AksaraPrebase, 999 45 => Self::AksaraStart, 1000 46 => Self::ViramaFinal, 1001 47 => Self::Virama, 1002 _ => return None, 1003 }) 1004 } 1005 } 1006 1007 #[diplomat::rust_link(icu::properties::props::GraphemeClusterBreak, Struct)] 1008 #[diplomat::enum_convert(icu_properties::props::GraphemeClusterBreak, needs_wildcard)] 1009 pub enum GraphemeClusterBreak { 1010 #[diplomat::rust_link(icu::properties::props::LineBreak::Other, EnumVariant)] 1011 Other = 0, 1012 #[diplomat::rust_link(icu::properties::props::LineBreak::Control, EnumVariant)] 1013 Control = 1, 1014 #[diplomat::rust_link(icu::properties::props::LineBreak::CR, EnumVariant)] 1015 CR = 2, 1016 #[diplomat::rust_link(icu::properties::props::LineBreak::Extend, EnumVariant)] 1017 Extend = 3, 1018 #[diplomat::rust_link(icu::properties::props::LineBreak::L, EnumVariant)] 1019 L = 4, 1020 #[diplomat::rust_link(icu::properties::props::LineBreak::LF, EnumVariant)] 1021 LF = 5, 1022 #[diplomat::rust_link(icu::properties::props::LineBreak::LV, EnumVariant)] 1023 LV = 6, 1024 #[diplomat::rust_link(icu::properties::props::LineBreak::LVT, EnumVariant)] 1025 LVT = 7, 1026 #[diplomat::rust_link(icu::properties::props::LineBreak::T, EnumVariant)] 1027 T = 8, 1028 #[diplomat::rust_link(icu::properties::props::LineBreak::V, EnumVariant)] 1029 V = 9, 1030 #[diplomat::rust_link(icu::properties::props::LineBreak::SpacingMark, EnumVariant)] 1031 SpacingMark = 10, 1032 #[diplomat::rust_link(icu::properties::props::LineBreak::Prepend, EnumVariant)] 1033 Prepend = 11, 1034 #[diplomat::rust_link(icu::properties::props::LineBreak::RegionalIndicator, EnumVariant)] 1035 RegionalIndicator = 12, 1036 #[diplomat::rust_link(icu::properties::props::LineBreak::EBase, EnumVariant)] 1037 EBase = 13, 1038 #[diplomat::rust_link(icu::properties::props::LineBreak::EBaseGAZ, EnumVariant)] 1039 EBaseGAZ = 14, 1040 #[diplomat::rust_link(icu::properties::props::LineBreak::EModifier, EnumVariant)] 1041 EModifier = 15, 1042 #[diplomat::rust_link(icu::properties::props::LineBreak::GlueAfterZwj, EnumVariant)] 1043 GlueAfterZwj = 16, 1044 #[diplomat::rust_link(icu::properties::props::LineBreak::ZWJ, EnumVariant)] 1045 ZWJ = 17, 1046 } 1047 1048 impl GraphemeClusterBreak { 1049 #[diplomat::rust_link(icu::properties::props::EnumeratedProperty::for_char, FnInTrait)] 1050 #[cfg(feature = "compiled_data")] for_char(ch: DiplomatChar) -> Self1051 pub fn for_char(ch: DiplomatChar) -> Self { 1052 icu_properties::CodePointMapData::<props::GraphemeClusterBreak>::new() 1053 .get32(ch) 1054 .into() 1055 } 1056 #[diplomat::rust_link( 1057 icu::properties::props::GraphemeClusterBreak::to_icu4c_value, 1058 FnInStruct 1059 )] 1060 /// Convert to an integer value usable with ICU4C and CodePointMapData to_integer_value(self) -> u81061 pub fn to_integer_value(self) -> u8 { 1062 self as u8 1063 } 1064 #[diplomat::rust_link( 1065 icu::properties::props::GraphemeClusterBreak::from_icu4c_value, 1066 FnInStruct 1067 )] 1068 /// Convert from an integer value from ICU4C or CodePointMapData from_integer_value(other: u8) -> Option<Self>1069 pub fn from_integer_value(other: u8) -> Option<Self> { 1070 Some(match other { 1071 0 => Self::Other, 1072 1 => Self::Control, 1073 2 => Self::CR, 1074 3 => Self::Extend, 1075 4 => Self::L, 1076 5 => Self::LF, 1077 6 => Self::LV, 1078 7 => Self::LVT, 1079 8 => Self::T, 1080 9 => Self::V, 1081 10 => Self::SpacingMark, 1082 11 => Self::Prepend, 1083 12 => Self::RegionalIndicator, 1084 13 => Self::EBase, 1085 14 => Self::EBaseGAZ, 1086 15 => Self::EModifier, 1087 16 => Self::GlueAfterZwj, 1088 17 => Self::ZWJ, 1089 _ => return None, 1090 }) 1091 } 1092 } 1093 1094 #[diplomat::rust_link(icu::properties::props::WordBreak, Struct)] 1095 #[diplomat::enum_convert(icu_properties::props::WordBreak, needs_wildcard)] 1096 pub enum WordBreak { 1097 #[diplomat::rust_link(icu::properties::props::WordBreak::Other, EnumVariant)] 1098 Other = 0, 1099 #[diplomat::rust_link(icu::properties::props::WordBreak::ALetter, EnumVariant)] 1100 ALetter = 1, 1101 #[diplomat::rust_link(icu::properties::props::WordBreak::Format, EnumVariant)] 1102 Format = 2, 1103 #[diplomat::rust_link(icu::properties::props::WordBreak::Katakana, EnumVariant)] 1104 Katakana = 3, 1105 #[diplomat::rust_link(icu::properties::props::WordBreak::MidLetter, EnumVariant)] 1106 MidLetter = 4, 1107 #[diplomat::rust_link(icu::properties::props::WordBreak::MidNum, EnumVariant)] 1108 MidNum = 5, 1109 #[diplomat::rust_link(icu::properties::props::WordBreak::Numeric, EnumVariant)] 1110 Numeric = 6, 1111 #[diplomat::rust_link(icu::properties::props::WordBreak::ExtendNumLet, EnumVariant)] 1112 ExtendNumLet = 7, 1113 #[diplomat::rust_link(icu::properties::props::WordBreak::CR, EnumVariant)] 1114 CR = 8, 1115 #[diplomat::rust_link(icu::properties::props::WordBreak::Extend, EnumVariant)] 1116 Extend = 9, 1117 #[diplomat::rust_link(icu::properties::props::WordBreak::LF, EnumVariant)] 1118 LF = 10, 1119 #[diplomat::rust_link(icu::properties::props::WordBreak::MidNumLet, EnumVariant)] 1120 MidNumLet = 11, 1121 #[diplomat::rust_link(icu::properties::props::WordBreak::Newline, EnumVariant)] 1122 Newline = 12, 1123 #[diplomat::rust_link(icu::properties::props::WordBreak::RegionalIndicator, EnumVariant)] 1124 RegionalIndicator = 13, 1125 #[diplomat::rust_link(icu::properties::props::WordBreak::HebrewLetter, EnumVariant)] 1126 HebrewLetter = 14, 1127 #[diplomat::rust_link(icu::properties::props::WordBreak::SingleQuote, EnumVariant)] 1128 SingleQuote = 15, 1129 #[diplomat::rust_link(icu::properties::props::WordBreak::DoubleQuote, EnumVariant)] 1130 DoubleQuote = 16, 1131 #[diplomat::rust_link(icu::properties::props::WordBreak::EBase, EnumVariant)] 1132 EBase = 17, 1133 #[diplomat::rust_link(icu::properties::props::WordBreak::EBaseGAZ, EnumVariant)] 1134 EBaseGAZ = 18, 1135 #[diplomat::rust_link(icu::properties::props::WordBreak::EModifier, EnumVariant)] 1136 EModifier = 19, 1137 #[diplomat::rust_link(icu::properties::props::WordBreak::GlueAfterZwj, EnumVariant)] 1138 GlueAfterZwj = 20, 1139 #[diplomat::rust_link(icu::properties::props::WordBreak::ZWJ, EnumVariant)] 1140 ZWJ = 21, 1141 #[diplomat::rust_link(icu::properties::props::WordBreak::WSegSpace, EnumVariant)] 1142 WSegSpace = 22, 1143 } 1144 1145 impl WordBreak { 1146 #[diplomat::rust_link(icu::properties::props::EnumeratedProperty::for_char, FnInTrait)] 1147 #[cfg(feature = "compiled_data")] for_char(ch: DiplomatChar) -> Self1148 pub fn for_char(ch: DiplomatChar) -> Self { 1149 icu_properties::CodePointMapData::<props::WordBreak>::new() 1150 .get32(ch) 1151 .into() 1152 } 1153 1154 #[diplomat::rust_link(icu::properties::PropertyNamesLongBorrowed::get, FnInStruct)] 1155 #[cfg(feature = "compiled_data")] 1156 /// Get the "long" name of this property value (returns empty if property value is unknown) long_name(self) -> Option<&'static str>1157 pub fn long_name(self) -> Option<&'static str> { 1158 icu_properties::PropertyNamesLongBorrowed::<props::WordBreak>::new().get(self.into()) 1159 } 1160 1161 #[diplomat::rust_link(icu::properties::PropertyNamesShortBorrowed::get, FnInStruct)] 1162 #[cfg(feature = "compiled_data")] 1163 /// Get the "short" name of this property value (returns empty if property value is unknown) short_name(self) -> Option<&'static str>1164 pub fn short_name(self) -> Option<&'static str> { 1165 icu_properties::PropertyNamesShortBorrowed::<props::WordBreak>::new().get(self.into()) 1166 } 1167 #[diplomat::rust_link(icu::properties::props::WordBreak::to_icu4c_value, FnInStruct)] 1168 /// Convert to an integer value usable with ICU4C and CodePointMapData to_integer_value(self) -> u81169 pub fn to_integer_value(self) -> u8 { 1170 self as u8 1171 } 1172 #[diplomat::rust_link(icu::properties::props::WordBreak::from_icu4c_value, FnInStruct)] 1173 /// Convert from an integer value from ICU4C or CodePointMapData from_integer_value(other: u8) -> Option<Self>1174 pub fn from_integer_value(other: u8) -> Option<Self> { 1175 Some(match other { 1176 0 => Self::Other, 1177 1 => Self::ALetter, 1178 2 => Self::Format, 1179 3 => Self::Katakana, 1180 4 => Self::MidLetter, 1181 5 => Self::MidNum, 1182 6 => Self::Numeric, 1183 7 => Self::ExtendNumLet, 1184 8 => Self::CR, 1185 9 => Self::Extend, 1186 10 => Self::LF, 1187 11 => Self::MidNumLet, 1188 12 => Self::Newline, 1189 13 => Self::RegionalIndicator, 1190 14 => Self::HebrewLetter, 1191 15 => Self::SingleQuote, 1192 16 => Self::DoubleQuote, 1193 17 => Self::EBase, 1194 18 => Self::EBaseGAZ, 1195 19 => Self::EModifier, 1196 20 => Self::GlueAfterZwj, 1197 21 => Self::ZWJ, 1198 22 => Self::WSegSpace, 1199 _ => return None, 1200 }) 1201 } 1202 } 1203 1204 #[diplomat::rust_link(icu::properties::props::SentenceBreak, Struct)] 1205 #[diplomat::enum_convert(icu_properties::props::SentenceBreak, needs_wildcard)] 1206 pub enum SentenceBreak { 1207 #[diplomat::rust_link(icu::properties::props::SentenceBreak::Other, EnumVariant)] 1208 Other = 0, 1209 #[diplomat::rust_link(icu::properties::props::SentenceBreak::ATerm, EnumVariant)] 1210 ATerm = 1, 1211 #[diplomat::rust_link(icu::properties::props::SentenceBreak::Close, EnumVariant)] 1212 Close = 2, 1213 #[diplomat::rust_link(icu::properties::props::SentenceBreak::Format, EnumVariant)] 1214 Format = 3, 1215 #[diplomat::rust_link(icu::properties::props::SentenceBreak::Lower, EnumVariant)] 1216 Lower = 4, 1217 #[diplomat::rust_link(icu::properties::props::SentenceBreak::Numeric, EnumVariant)] 1218 Numeric = 5, 1219 #[diplomat::rust_link(icu::properties::props::SentenceBreak::OLetter, EnumVariant)] 1220 OLetter = 6, 1221 #[diplomat::rust_link(icu::properties::props::SentenceBreak::Sep, EnumVariant)] 1222 Sep = 7, 1223 #[diplomat::rust_link(icu::properties::props::SentenceBreak::Sp, EnumVariant)] 1224 Sp = 8, 1225 #[diplomat::rust_link(icu::properties::props::SentenceBreak::STerm, EnumVariant)] 1226 STerm = 9, 1227 #[diplomat::rust_link(icu::properties::props::SentenceBreak::Upper, EnumVariant)] 1228 Upper = 10, 1229 #[diplomat::rust_link(icu::properties::props::SentenceBreak::CR, EnumVariant)] 1230 CR = 11, 1231 #[diplomat::rust_link(icu::properties::props::SentenceBreak::Extend, EnumVariant)] 1232 Extend = 12, 1233 #[diplomat::rust_link(icu::properties::props::SentenceBreak::LF, EnumVariant)] 1234 LF = 13, 1235 #[diplomat::rust_link(icu::properties::props::SentenceBreak::SContinue, EnumVariant)] 1236 SContinue = 14, 1237 } 1238 1239 impl SentenceBreak { 1240 #[diplomat::rust_link(icu::properties::props::EnumeratedProperty::for_char, FnInTrait)] 1241 #[cfg(feature = "compiled_data")] for_char(ch: DiplomatChar) -> Self1242 pub fn for_char(ch: DiplomatChar) -> Self { 1243 icu_properties::CodePointMapData::<props::SentenceBreak>::new() 1244 .get32(ch) 1245 .into() 1246 } 1247 1248 #[diplomat::rust_link(icu::properties::PropertyNamesLongBorrowed::get, FnInStruct)] 1249 #[cfg(feature = "compiled_data")] 1250 /// Get the "long" name of this property value (returns empty if property value is unknown) long_name(self) -> Option<&'static str>1251 pub fn long_name(self) -> Option<&'static str> { 1252 icu_properties::PropertyNamesLongBorrowed::<props::SentenceBreak>::new() 1253 .get(self.into()) 1254 } 1255 1256 #[diplomat::rust_link(icu::properties::PropertyNamesShortBorrowed::get, FnInStruct)] 1257 #[cfg(feature = "compiled_data")] 1258 /// Get the "short" name of this property value (returns empty if property value is unknown) short_name(self) -> Option<&'static str>1259 pub fn short_name(self) -> Option<&'static str> { 1260 icu_properties::PropertyNamesShortBorrowed::<props::SentenceBreak>::new() 1261 .get(self.into()) 1262 } 1263 #[diplomat::rust_link(icu::properties::props::SentenceBreak::to_icu4c_value, FnInStruct)] 1264 /// Convert to an integer value usable with ICU4C and CodePointMapData to_integer_value(self) -> u81265 pub fn to_integer_value(self) -> u8 { 1266 self as u8 1267 } 1268 #[diplomat::rust_link(icu::properties::props::SentenceBreak::from_icu4c_value, FnInStruct)] 1269 /// Convert from an integer value from ICU4C or CodePointMapData from_integer_value(other: u8) -> Option<Self>1270 pub fn from_integer_value(other: u8) -> Option<Self> { 1271 Some(match other { 1272 0 => Self::Other, 1273 1 => Self::ATerm, 1274 2 => Self::Close, 1275 3 => Self::Format, 1276 4 => Self::Lower, 1277 5 => Self::Numeric, 1278 6 => Self::OLetter, 1279 7 => Self::Sep, 1280 8 => Self::Sp, 1281 9 => Self::STerm, 1282 10 => Self::Upper, 1283 11 => Self::CR, 1284 12 => Self::Extend, 1285 13 => Self::LF, 1286 14 => Self::SContinue, 1287 _ => return None, 1288 }) 1289 } 1290 } 1291 1292 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass, Struct)] 1293 #[diplomat::enum_convert(icu_properties::props::CanonicalCombiningClass, needs_wildcard)] 1294 pub enum CanonicalCombiningClass { 1295 #[diplomat::rust_link( 1296 icu::properties::props::CanonicalCombiningClass::NotReordered, 1297 EnumVariant 1298 )] 1299 NotReordered = 0, 1300 #[diplomat::rust_link( 1301 icu::properties::props::CanonicalCombiningClass::Overlay, 1302 EnumVariant 1303 )] 1304 Overlay = 1, 1305 #[diplomat::rust_link( 1306 icu::properties::props::CanonicalCombiningClass::HanReading, 1307 EnumVariant 1308 )] 1309 HanReading = 6, 1310 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::Nukta, EnumVariant)] 1311 Nukta = 7, 1312 #[diplomat::rust_link( 1313 icu::properties::props::CanonicalCombiningClass::KanaVoicing, 1314 EnumVariant 1315 )] 1316 KanaVoicing = 8, 1317 #[diplomat::rust_link( 1318 icu::properties::props::CanonicalCombiningClass::Virama, 1319 EnumVariant 1320 )] 1321 Virama = 9, 1322 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC10, EnumVariant)] 1323 CCC10 = 10, 1324 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC11, EnumVariant)] 1325 CCC11 = 11, 1326 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC12, EnumVariant)] 1327 CCC12 = 12, 1328 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC13, EnumVariant)] 1329 CCC13 = 13, 1330 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC14, EnumVariant)] 1331 CCC14 = 14, 1332 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC15, EnumVariant)] 1333 CCC15 = 15, 1334 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC16, EnumVariant)] 1335 CCC16 = 16, 1336 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC17, EnumVariant)] 1337 CCC17 = 17, 1338 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC18, EnumVariant)] 1339 CCC18 = 18, 1340 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC19, EnumVariant)] 1341 CCC19 = 19, 1342 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC20, EnumVariant)] 1343 CCC20 = 20, 1344 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC21, EnumVariant)] 1345 CCC21 = 21, 1346 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC22, EnumVariant)] 1347 CCC22 = 22, 1348 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC23, EnumVariant)] 1349 CCC23 = 23, 1350 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC24, EnumVariant)] 1351 CCC24 = 24, 1352 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC25, EnumVariant)] 1353 CCC25 = 25, 1354 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC26, EnumVariant)] 1355 CCC26 = 26, 1356 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC27, EnumVariant)] 1357 CCC27 = 27, 1358 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC28, EnumVariant)] 1359 CCC28 = 28, 1360 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC29, EnumVariant)] 1361 CCC29 = 29, 1362 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC30, EnumVariant)] 1363 CCC30 = 30, 1364 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC31, EnumVariant)] 1365 CCC31 = 31, 1366 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC32, EnumVariant)] 1367 CCC32 = 32, 1368 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC33, EnumVariant)] 1369 CCC33 = 33, 1370 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC34, EnumVariant)] 1371 CCC34 = 34, 1372 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC35, EnumVariant)] 1373 CCC35 = 35, 1374 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC36, EnumVariant)] 1375 CCC36 = 36, 1376 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC84, EnumVariant)] 1377 CCC84 = 84, 1378 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::CCC91, EnumVariant)] 1379 CCC91 = 91, 1380 #[diplomat::rust_link( 1381 icu::properties::props::CanonicalCombiningClass::CCC103, 1382 EnumVariant 1383 )] 1384 CCC103 = 103, 1385 #[diplomat::rust_link( 1386 icu::properties::props::CanonicalCombiningClass::CCC107, 1387 EnumVariant 1388 )] 1389 CCC107 = 107, 1390 #[diplomat::rust_link( 1391 icu::properties::props::CanonicalCombiningClass::CCC118, 1392 EnumVariant 1393 )] 1394 CCC118 = 118, 1395 #[diplomat::rust_link( 1396 icu::properties::props::CanonicalCombiningClass::CCC122, 1397 EnumVariant 1398 )] 1399 CCC122 = 122, 1400 #[diplomat::rust_link( 1401 icu::properties::props::CanonicalCombiningClass::CCC129, 1402 EnumVariant 1403 )] 1404 CCC129 = 129, 1405 #[diplomat::rust_link( 1406 icu::properties::props::CanonicalCombiningClass::CCC130, 1407 EnumVariant 1408 )] 1409 CCC130 = 130, 1410 #[diplomat::rust_link( 1411 icu::properties::props::CanonicalCombiningClass::CCC132, 1412 EnumVariant 1413 )] 1414 CCC132 = 132, 1415 #[diplomat::rust_link( 1416 icu::properties::props::CanonicalCombiningClass::CCC133, 1417 EnumVariant 1418 )] 1419 CCC133 = 133, 1420 #[diplomat::rust_link( 1421 icu::properties::props::CanonicalCombiningClass::AttachedBelowLeft, 1422 EnumVariant 1423 )] 1424 AttachedBelowLeft = 200, 1425 #[diplomat::rust_link( 1426 icu::properties::props::CanonicalCombiningClass::AttachedBelow, 1427 EnumVariant 1428 )] 1429 AttachedBelow = 202, 1430 #[diplomat::rust_link( 1431 icu::properties::props::CanonicalCombiningClass::AttachedAbove, 1432 EnumVariant 1433 )] 1434 AttachedAbove = 214, 1435 #[diplomat::rust_link( 1436 icu::properties::props::CanonicalCombiningClass::AttachedAboveRight, 1437 EnumVariant 1438 )] 1439 AttachedAboveRight = 216, 1440 #[diplomat::rust_link( 1441 icu::properties::props::CanonicalCombiningClass::BelowLeft, 1442 EnumVariant 1443 )] 1444 BelowLeft = 218, 1445 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::Below, EnumVariant)] 1446 Below = 220, 1447 #[diplomat::rust_link( 1448 icu::properties::props::CanonicalCombiningClass::BelowRight, 1449 EnumVariant 1450 )] 1451 BelowRight = 222, 1452 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::Left, EnumVariant)] 1453 Left = 224, 1454 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::Right, EnumVariant)] 1455 Right = 226, 1456 #[diplomat::rust_link( 1457 icu::properties::props::CanonicalCombiningClass::AboveLeft, 1458 EnumVariant 1459 )] 1460 AboveLeft = 228, 1461 #[diplomat::rust_link(icu::properties::props::CanonicalCombiningClass::Above, EnumVariant)] 1462 Above = 230, 1463 #[diplomat::rust_link( 1464 icu::properties::props::CanonicalCombiningClass::AboveRight, 1465 EnumVariant 1466 )] 1467 AboveRight = 232, 1468 #[diplomat::rust_link( 1469 icu::properties::props::CanonicalCombiningClass::DoubleBelow, 1470 EnumVariant 1471 )] 1472 DoubleBelow = 233, 1473 #[diplomat::rust_link( 1474 icu::properties::props::CanonicalCombiningClass::DoubleAbove, 1475 EnumVariant 1476 )] 1477 DoubleAbove = 234, 1478 #[diplomat::rust_link( 1479 icu::properties::props::CanonicalCombiningClass::IotaSubscript, 1480 EnumVariant 1481 )] 1482 IotaSubscript = 240, 1483 } 1484 1485 impl CanonicalCombiningClass { 1486 #[diplomat::rust_link(icu::properties::props::EnumeratedProperty::for_char, FnInTrait)] 1487 #[cfg(feature = "compiled_data")] for_char(ch: DiplomatChar) -> Self1488 pub fn for_char(ch: DiplomatChar) -> Self { 1489 icu_properties::CodePointMapData::<props::CanonicalCombiningClass>::new() 1490 .get32(ch) 1491 .into() 1492 } 1493 #[diplomat::rust_link( 1494 icu::properties::props::CanonicalCombiningClass::to_icu4c_value, 1495 FnInStruct 1496 )] 1497 /// Convert to an integer value usable with ICU4C and CodePointMapData to_integer_value(self) -> u81498 pub fn to_integer_value(self) -> u8 { 1499 self as u8 1500 } 1501 #[diplomat::rust_link( 1502 icu::properties::props::CanonicalCombiningClass::from_icu4c_value, 1503 FnInStruct 1504 )] 1505 /// Convert from an integer value from ICU4C or CodePointMapData from_integer_value(other: u8) -> Option<Self>1506 pub fn from_integer_value(other: u8) -> Option<Self> { 1507 Some(match other { 1508 0 => Self::NotReordered, 1509 1 => Self::Overlay, 1510 6 => Self::HanReading, 1511 7 => Self::Nukta, 1512 8 => Self::KanaVoicing, 1513 9 => Self::Virama, 1514 10 => Self::CCC10, 1515 11 => Self::CCC11, 1516 12 => Self::CCC12, 1517 13 => Self::CCC13, 1518 14 => Self::CCC14, 1519 15 => Self::CCC15, 1520 16 => Self::CCC16, 1521 17 => Self::CCC17, 1522 18 => Self::CCC18, 1523 19 => Self::CCC19, 1524 20 => Self::CCC20, 1525 21 => Self::CCC21, 1526 22 => Self::CCC22, 1527 23 => Self::CCC23, 1528 24 => Self::CCC24, 1529 25 => Self::CCC25, 1530 26 => Self::CCC26, 1531 27 => Self::CCC27, 1532 28 => Self::CCC28, 1533 29 => Self::CCC29, 1534 30 => Self::CCC30, 1535 31 => Self::CCC31, 1536 32 => Self::CCC32, 1537 33 => Self::CCC33, 1538 34 => Self::CCC34, 1539 35 => Self::CCC35, 1540 36 => Self::CCC36, 1541 84 => Self::CCC84, 1542 91 => Self::CCC91, 1543 103 => Self::CCC103, 1544 107 => Self::CCC107, 1545 118 => Self::CCC118, 1546 122 => Self::CCC122, 1547 129 => Self::CCC129, 1548 130 => Self::CCC130, 1549 132 => Self::CCC132, 1550 133 => Self::CCC133, 1551 200 => Self::AttachedBelowLeft, 1552 202 => Self::AttachedBelow, 1553 214 => Self::AttachedAbove, 1554 216 => Self::AttachedAboveRight, 1555 218 => Self::BelowLeft, 1556 220 => Self::Below, 1557 222 => Self::BelowRight, 1558 224 => Self::Left, 1559 226 => Self::Right, 1560 228 => Self::AboveLeft, 1561 230 => Self::Above, 1562 232 => Self::AboveRight, 1563 233 => Self::DoubleBelow, 1564 234 => Self::DoubleAbove, 1565 240 => Self::IotaSubscript, 1566 _ => return None, 1567 }) 1568 } 1569 } 1570 1571 #[diplomat::rust_link(icu::properties::props::IndicSyllabicCategory, Struct)] 1572 #[diplomat::enum_convert(icu_properties::props::IndicSyllabicCategory, needs_wildcard)] 1573 pub enum IndicSyllabicCategory { 1574 #[diplomat::rust_link(icu::properties::props::IndicSyllabicCategory::Other, EnumVariant)] 1575 Other = 0, 1576 #[diplomat::rust_link( 1577 icu::properties::props::IndicSyllabicCategory::Avagraha, 1578 EnumVariant 1579 )] 1580 Avagraha = 1, 1581 #[diplomat::rust_link(icu::properties::props::IndicSyllabicCategory::Bindu, EnumVariant)] 1582 Bindu = 2, 1583 #[diplomat::rust_link( 1584 icu::properties::props::IndicSyllabicCategory::BrahmiJoiningNumber, 1585 EnumVariant 1586 )] 1587 BrahmiJoiningNumber = 3, 1588 #[diplomat::rust_link( 1589 icu::properties::props::IndicSyllabicCategory::CantillationMark, 1590 EnumVariant 1591 )] 1592 CantillationMark = 4, 1593 #[diplomat::rust_link( 1594 icu::properties::props::IndicSyllabicCategory::Consonant, 1595 EnumVariant 1596 )] 1597 Consonant = 5, 1598 #[diplomat::rust_link( 1599 icu::properties::props::IndicSyllabicCategory::ConsonantDead, 1600 EnumVariant 1601 )] 1602 ConsonantDead = 6, 1603 #[diplomat::rust_link( 1604 icu::properties::props::IndicSyllabicCategory::ConsonantFinal, 1605 EnumVariant 1606 )] 1607 ConsonantFinal = 7, 1608 #[diplomat::rust_link( 1609 icu::properties::props::IndicSyllabicCategory::ConsonantHeadLetter, 1610 EnumVariant 1611 )] 1612 ConsonantHeadLetter = 8, 1613 #[diplomat::rust_link( 1614 icu::properties::props::IndicSyllabicCategory::ConsonantInitialPostfixed, 1615 EnumVariant 1616 )] 1617 ConsonantInitialPostfixed = 9, 1618 #[diplomat::rust_link( 1619 icu::properties::props::IndicSyllabicCategory::ConsonantKiller, 1620 EnumVariant 1621 )] 1622 ConsonantKiller = 10, 1623 #[diplomat::rust_link( 1624 icu::properties::props::IndicSyllabicCategory::ConsonantMedial, 1625 EnumVariant 1626 )] 1627 ConsonantMedial = 11, 1628 #[diplomat::rust_link( 1629 icu::properties::props::IndicSyllabicCategory::ConsonantPlaceholder, 1630 EnumVariant 1631 )] 1632 ConsonantPlaceholder = 12, 1633 #[diplomat::rust_link( 1634 icu::properties::props::IndicSyllabicCategory::ConsonantPrecedingRepha, 1635 EnumVariant 1636 )] 1637 ConsonantPrecedingRepha = 13, 1638 #[diplomat::rust_link( 1639 icu::properties::props::IndicSyllabicCategory::ConsonantPrefixed, 1640 EnumVariant 1641 )] 1642 ConsonantPrefixed = 14, 1643 #[diplomat::rust_link( 1644 icu::properties::props::IndicSyllabicCategory::ConsonantSucceedingRepha, 1645 EnumVariant 1646 )] 1647 ConsonantSucceedingRepha = 15, 1648 #[diplomat::rust_link( 1649 icu::properties::props::IndicSyllabicCategory::ConsonantSubjoined, 1650 EnumVariant 1651 )] 1652 ConsonantSubjoined = 16, 1653 #[diplomat::rust_link( 1654 icu::properties::props::IndicSyllabicCategory::ConsonantWithStacker, 1655 EnumVariant 1656 )] 1657 ConsonantWithStacker = 17, 1658 #[diplomat::rust_link( 1659 icu::properties::props::IndicSyllabicCategory::GeminationMark, 1660 EnumVariant 1661 )] 1662 GeminationMark = 18, 1663 #[diplomat::rust_link( 1664 icu::properties::props::IndicSyllabicCategory::InvisibleStacker, 1665 EnumVariant 1666 )] 1667 InvisibleStacker = 19, 1668 #[diplomat::rust_link(icu::properties::props::IndicSyllabicCategory::Joiner, EnumVariant)] 1669 Joiner = 20, 1670 #[diplomat::rust_link( 1671 icu::properties::props::IndicSyllabicCategory::ModifyingLetter, 1672 EnumVariant 1673 )] 1674 ModifyingLetter = 21, 1675 #[diplomat::rust_link( 1676 icu::properties::props::IndicSyllabicCategory::NonJoiner, 1677 EnumVariant 1678 )] 1679 NonJoiner = 22, 1680 #[diplomat::rust_link(icu::properties::props::IndicSyllabicCategory::Nukta, EnumVariant)] 1681 Nukta = 23, 1682 #[diplomat::rust_link(icu::properties::props::IndicSyllabicCategory::Number, EnumVariant)] 1683 Number = 24, 1684 #[diplomat::rust_link( 1685 icu::properties::props::IndicSyllabicCategory::NumberJoiner, 1686 EnumVariant 1687 )] 1688 NumberJoiner = 25, 1689 #[diplomat::rust_link( 1690 icu::properties::props::IndicSyllabicCategory::PureKiller, 1691 EnumVariant 1692 )] 1693 PureKiller = 26, 1694 #[diplomat::rust_link( 1695 icu::properties::props::IndicSyllabicCategory::RegisterShifter, 1696 EnumVariant 1697 )] 1698 RegisterShifter = 27, 1699 #[diplomat::rust_link( 1700 icu::properties::props::IndicSyllabicCategory::SyllableModifier, 1701 EnumVariant 1702 )] 1703 SyllableModifier = 28, 1704 #[diplomat::rust_link( 1705 icu::properties::props::IndicSyllabicCategory::ToneLetter, 1706 EnumVariant 1707 )] 1708 ToneLetter = 29, 1709 #[diplomat::rust_link( 1710 icu::properties::props::IndicSyllabicCategory::ToneMark, 1711 EnumVariant 1712 )] 1713 ToneMark = 30, 1714 #[diplomat::rust_link(icu::properties::props::IndicSyllabicCategory::Virama, EnumVariant)] 1715 Virama = 31, 1716 #[diplomat::rust_link(icu::properties::props::IndicSyllabicCategory::Visarga, EnumVariant)] 1717 Visarga = 32, 1718 #[diplomat::rust_link(icu::properties::props::IndicSyllabicCategory::Vowel, EnumVariant)] 1719 Vowel = 33, 1720 #[diplomat::rust_link( 1721 icu::properties::props::IndicSyllabicCategory::VowelDependent, 1722 EnumVariant 1723 )] 1724 VowelDependent = 34, 1725 #[diplomat::rust_link( 1726 icu::properties::props::IndicSyllabicCategory::VowelIndependent, 1727 EnumVariant 1728 )] 1729 VowelIndependent = 35, 1730 #[diplomat::rust_link( 1731 icu::properties::props::IndicSyllabicCategory::ReorderingKiller, 1732 EnumVariant 1733 )] 1734 ReorderingKiller = 36, 1735 } 1736 1737 impl IndicSyllabicCategory { 1738 #[diplomat::rust_link(icu::properties::props::EnumeratedProperty::for_char, FnInTrait)] 1739 #[cfg(feature = "compiled_data")] for_char(ch: DiplomatChar) -> Self1740 pub fn for_char(ch: DiplomatChar) -> Self { 1741 icu_properties::CodePointMapData::<props::IndicSyllabicCategory>::new() 1742 .get32(ch) 1743 .into() 1744 } 1745 #[diplomat::rust_link( 1746 icu::properties::props::IndicSyllabicCategory::to_icu4c_value, 1747 FnInStruct 1748 )] 1749 /// Convert to an integer value usable with ICU4C and CodePointMapData to_integer_value(self) -> u81750 pub fn to_integer_value(self) -> u8 { 1751 self as u8 1752 } 1753 #[diplomat::rust_link( 1754 icu::properties::props::IndicSyllabicCategory::from_icu4c_value, 1755 FnInStruct 1756 )] 1757 /// Convert from an integer value from ICU4C or CodePointMapData from_integer_value(other: u8) -> Option<Self>1758 pub fn from_integer_value(other: u8) -> Option<Self> { 1759 Some(match other { 1760 0 => Self::Other, 1761 1 => Self::Avagraha, 1762 2 => Self::Bindu, 1763 3 => Self::BrahmiJoiningNumber, 1764 4 => Self::CantillationMark, 1765 5 => Self::Consonant, 1766 6 => Self::ConsonantDead, 1767 7 => Self::ConsonantFinal, 1768 8 => Self::ConsonantHeadLetter, 1769 9 => Self::ConsonantInitialPostfixed, 1770 10 => Self::ConsonantKiller, 1771 11 => Self::ConsonantMedial, 1772 12 => Self::ConsonantPlaceholder, 1773 13 => Self::ConsonantPrecedingRepha, 1774 14 => Self::ConsonantPrefixed, 1775 15 => Self::ConsonantSucceedingRepha, 1776 16 => Self::ConsonantSubjoined, 1777 17 => Self::ConsonantWithStacker, 1778 18 => Self::GeminationMark, 1779 19 => Self::InvisibleStacker, 1780 20 => Self::Joiner, 1781 21 => Self::ModifyingLetter, 1782 22 => Self::NonJoiner, 1783 23 => Self::Nukta, 1784 24 => Self::Number, 1785 25 => Self::NumberJoiner, 1786 26 => Self::PureKiller, 1787 27 => Self::RegisterShifter, 1788 28 => Self::SyllableModifier, 1789 29 => Self::ToneLetter, 1790 30 => Self::ToneMark, 1791 31 => Self::Virama, 1792 32 => Self::Visarga, 1793 33 => Self::Vowel, 1794 34 => Self::VowelDependent, 1795 35 => Self::VowelIndependent, 1796 36 => Self::ReorderingKiller, 1797 _ => return None, 1798 }) 1799 } 1800 } 1801 1802 #[diplomat::rust_link(icu::properties::props::JoiningType, Struct)] 1803 #[diplomat::enum_convert(icu_properties::props::JoiningType, needs_wildcard)] 1804 pub enum JoiningType { 1805 #[diplomat::rust_link(icu::properties::props::JoiningType::NonJoining, EnumVariant)] 1806 NonJoining = 0, 1807 #[diplomat::rust_link(icu::properties::props::JoiningType::JoinCausing, EnumVariant)] 1808 JoinCausing = 1, 1809 #[diplomat::rust_link(icu::properties::props::JoiningType::DualJoining, EnumVariant)] 1810 DualJoining = 2, 1811 #[diplomat::rust_link(icu::properties::props::JoiningType::LeftJoining, EnumVariant)] 1812 LeftJoining = 3, 1813 #[diplomat::rust_link(icu::properties::props::JoiningType::RightJoining, EnumVariant)] 1814 RightJoining = 4, 1815 #[diplomat::rust_link(icu::properties::props::JoiningType::Transparent, EnumVariant)] 1816 Transparent = 5, 1817 } 1818 1819 impl JoiningType { 1820 #[diplomat::rust_link(icu::properties::props::EnumeratedProperty::for_char, FnInTrait)] 1821 #[cfg(feature = "compiled_data")] for_char(ch: DiplomatChar) -> Self1822 pub fn for_char(ch: DiplomatChar) -> Self { 1823 icu_properties::CodePointMapData::<props::JoiningType>::new() 1824 .get32(ch) 1825 .into() 1826 } 1827 1828 #[diplomat::rust_link(icu::properties::PropertyNamesLongBorrowed::get, FnInStruct)] 1829 #[cfg(feature = "compiled_data")] 1830 /// Get the "long" name of this property value (returns empty if property value is unknown) long_name(self) -> Option<&'static str>1831 pub fn long_name(self) -> Option<&'static str> { 1832 icu_properties::PropertyNamesLongBorrowed::<props::JoiningType>::new().get(self.into()) 1833 } 1834 1835 #[diplomat::rust_link(icu::properties::PropertyNamesShortBorrowed::get, FnInStruct)] 1836 #[cfg(feature = "compiled_data")] 1837 /// Get the "short" name of this property value (returns empty if property value is unknown) short_name(self) -> Option<&'static str>1838 pub fn short_name(self) -> Option<&'static str> { 1839 icu_properties::PropertyNamesShortBorrowed::<props::JoiningType>::new().get(self.into()) 1840 } 1841 #[diplomat::rust_link(icu::properties::props::JoiningType::to_icu4c_value, FnInStruct)] 1842 /// Convert to an integer value usable with ICU4C and CodePointMapData to_integer_value(self) -> u81843 pub fn to_integer_value(self) -> u8 { 1844 self as u8 1845 } 1846 #[diplomat::rust_link(icu::properties::props::JoiningType::from_icu4c_value, FnInStruct)] 1847 /// Convert from an integer value from ICU4C or CodePointMapData from_integer_value(other: u8) -> Option<Self>1848 pub fn from_integer_value(other: u8) -> Option<Self> { 1849 Some(match other { 1850 0 => Self::NonJoining, 1851 1 => Self::JoinCausing, 1852 2 => Self::DualJoining, 1853 3 => Self::LeftJoining, 1854 4 => Self::RightJoining, 1855 5 => Self::Transparent, 1856 _ => return None, 1857 }) 1858 } 1859 } 1860 1861 #[diplomat::rust_link(icu::properties::props::GeneralCategory, Struct)] 1862 #[diplomat::enum_convert(icu_properties::props::GeneralCategory)] 1863 pub enum GeneralCategory { 1864 #[diplomat::rust_link(icu::properties::props::GeneralCategory::Unassigned, EnumVariant)] 1865 Unassigned = 0, 1866 #[diplomat::rust_link( 1867 icu::properties::props::GeneralCategory::UppercaseLetter, 1868 EnumVariant 1869 )] 1870 UppercaseLetter = 1, 1871 #[diplomat::rust_link( 1872 icu::properties::props::GeneralCategory::LowercaseLetter, 1873 EnumVariant 1874 )] 1875 LowercaseLetter = 2, 1876 #[diplomat::rust_link( 1877 icu::properties::props::GeneralCategory::TitlecaseLetter, 1878 EnumVariant 1879 )] 1880 TitlecaseLetter = 3, 1881 #[diplomat::rust_link( 1882 icu::properties::props::GeneralCategory::ModifierLetter, 1883 EnumVariant 1884 )] 1885 ModifierLetter = 4, 1886 #[diplomat::rust_link(icu::properties::props::GeneralCategory::OtherLetter, EnumVariant)] 1887 OtherLetter = 5, 1888 #[diplomat::rust_link( 1889 icu::properties::props::GeneralCategory::NonspacingMark, 1890 EnumVariant 1891 )] 1892 NonspacingMark = 6, 1893 #[diplomat::rust_link(icu::properties::props::GeneralCategory::SpacingMark, EnumVariant)] 1894 SpacingMark = 8, 1895 #[diplomat::rust_link(icu::properties::props::GeneralCategory::EnclosingMark, EnumVariant)] 1896 EnclosingMark = 7, 1897 #[diplomat::rust_link(icu::properties::props::GeneralCategory::DecimalNumber, EnumVariant)] 1898 DecimalNumber = 9, 1899 #[diplomat::rust_link(icu::properties::props::GeneralCategory::LetterNumber, EnumVariant)] 1900 LetterNumber = 10, 1901 #[diplomat::rust_link(icu::properties::props::GeneralCategory::OtherNumber, EnumVariant)] 1902 OtherNumber = 11, 1903 #[diplomat::rust_link( 1904 icu::properties::props::GeneralCategory::SpaceSeparator, 1905 EnumVariant 1906 )] 1907 SpaceSeparator = 12, 1908 #[diplomat::rust_link(icu::properties::props::GeneralCategory::LineSeparator, EnumVariant)] 1909 LineSeparator = 13, 1910 #[diplomat::rust_link( 1911 icu::properties::props::GeneralCategory::ParagraphSeparator, 1912 EnumVariant 1913 )] 1914 ParagraphSeparator = 14, 1915 #[diplomat::rust_link(icu::properties::props::GeneralCategory::Control, EnumVariant)] 1916 Control = 15, 1917 #[diplomat::rust_link(icu::properties::props::GeneralCategory::Format, EnumVariant)] 1918 Format = 16, 1919 #[diplomat::rust_link(icu::properties::props::GeneralCategory::PrivateUse, EnumVariant)] 1920 PrivateUse = 17, 1921 #[diplomat::rust_link(icu::properties::props::GeneralCategory::Surrogate, EnumVariant)] 1922 Surrogate = 18, 1923 #[diplomat::rust_link( 1924 icu::properties::props::GeneralCategory::DashPunctuation, 1925 EnumVariant 1926 )] 1927 DashPunctuation = 19, 1928 #[diplomat::rust_link( 1929 icu::properties::props::GeneralCategory::OpenPunctuation, 1930 EnumVariant 1931 )] 1932 OpenPunctuation = 20, 1933 #[diplomat::rust_link( 1934 icu::properties::props::GeneralCategory::ClosePunctuation, 1935 EnumVariant 1936 )] 1937 ClosePunctuation = 21, 1938 #[diplomat::rust_link( 1939 icu::properties::props::GeneralCategory::ConnectorPunctuation, 1940 EnumVariant 1941 )] 1942 ConnectorPunctuation = 22, 1943 #[diplomat::rust_link( 1944 icu::properties::props::GeneralCategory::InitialPunctuation, 1945 EnumVariant 1946 )] 1947 InitialPunctuation = 28, 1948 #[diplomat::rust_link( 1949 icu::properties::props::GeneralCategory::FinalPunctuation, 1950 EnumVariant 1951 )] 1952 FinalPunctuation = 29, 1953 #[diplomat::rust_link( 1954 icu::properties::props::GeneralCategory::OtherPunctuation, 1955 EnumVariant 1956 )] 1957 OtherPunctuation = 23, 1958 #[diplomat::rust_link(icu::properties::props::GeneralCategory::MathSymbol, EnumVariant)] 1959 MathSymbol = 24, 1960 #[diplomat::rust_link( 1961 icu::properties::props::GeneralCategory::CurrencySymbol, 1962 EnumVariant 1963 )] 1964 CurrencySymbol = 25, 1965 #[diplomat::rust_link( 1966 icu::properties::props::GeneralCategory::ModifierSymbol, 1967 EnumVariant 1968 )] 1969 ModifierSymbol = 26, 1970 #[diplomat::rust_link(icu::properties::props::GeneralCategory::OtherSymbol, EnumVariant)] 1971 OtherSymbol = 27, 1972 } 1973 1974 impl GeneralCategory { 1975 #[diplomat::rust_link(icu::properties::props::EnumeratedProperty::for_char, FnInTrait)] 1976 #[cfg(feature = "compiled_data")] for_char(ch: DiplomatChar) -> Self1977 pub fn for_char(ch: DiplomatChar) -> Self { 1978 icu_properties::CodePointMapData::<props::GeneralCategory>::new() 1979 .get32(ch) 1980 .into() 1981 } 1982 /// Convert to an integer using the ICU4C integer mappings for `General_Category` 1983 1984 #[diplomat::rust_link(icu::properties::PropertyNamesLongBorrowed::get, FnInStruct)] 1985 #[cfg(feature = "compiled_data")] 1986 /// Get the "long" name of this property value (returns empty if property value is unknown) long_name(self) -> Option<&'static str>1987 pub fn long_name(self) -> Option<&'static str> { 1988 icu_properties::PropertyNamesLongBorrowed::<props::GeneralCategory>::new() 1989 .get(self.into()) 1990 } 1991 1992 #[diplomat::rust_link(icu::properties::PropertyNamesShortBorrowed::get, FnInStruct)] 1993 #[cfg(feature = "compiled_data")] 1994 /// Get the "short" name of this property value (returns empty if property value is unknown) short_name(self) -> Option<&'static str>1995 pub fn short_name(self) -> Option<&'static str> { 1996 icu_properties::PropertyNamesShortBorrowed::<props::GeneralCategory>::new() 1997 .get(self.into()) 1998 } 1999 #[diplomat::rust_link(icu::properties::props::GeneralCategory::to_icu4c_value, FnInStruct)] 2000 /// Convert to an integer value usable with ICU4C and CodePointMapData to_integer_value(self) -> u82001 pub fn to_integer_value(self) -> u8 { 2002 self as u8 2003 } 2004 2005 /// Produces a GeneralCategoryGroup mask that can represent a group of general categories 2006 #[diplomat::rust_link(icu::properties::props::GeneralCategoryGroup, Struct)] to_group(self) -> GeneralCategoryGroup2007 pub fn to_group(self) -> GeneralCategoryGroup { 2008 GeneralCategoryGroup { 2009 mask: props::GeneralCategoryGroup::from(props::GeneralCategory::from(self)).into(), 2010 } 2011 } 2012 2013 /// Convert from an integer using the ICU4C integer mappings for `General_Category` 2014 #[diplomat::rust_link( 2015 icu::properties::props::GeneralCategory::from_icu4c_value, 2016 FnInStruct 2017 )] 2018 #[diplomat::rust_link( 2019 icu::properties::props::GeneralCategoryOutOfBoundsError, 2020 Struct, 2021 hidden 2022 )] 2023 /// Convert from an integer value from ICU4C or CodePointMapData from_integer_value(other: u8) -> Option<Self>2024 pub fn from_integer_value(other: u8) -> Option<Self> { 2025 Some(match other { 2026 0 => Self::Unassigned, 2027 1 => Self::UppercaseLetter, 2028 2 => Self::LowercaseLetter, 2029 3 => Self::TitlecaseLetter, 2030 4 => Self::ModifierLetter, 2031 5 => Self::OtherLetter, 2032 6 => Self::NonspacingMark, 2033 8 => Self::SpacingMark, 2034 7 => Self::EnclosingMark, 2035 9 => Self::DecimalNumber, 2036 10 => Self::LetterNumber, 2037 11 => Self::OtherNumber, 2038 12 => Self::SpaceSeparator, 2039 13 => Self::LineSeparator, 2040 14 => Self::ParagraphSeparator, 2041 15 => Self::Control, 2042 16 => Self::Format, 2043 17 => Self::PrivateUse, 2044 18 => Self::Surrogate, 2045 19 => Self::DashPunctuation, 2046 20 => Self::OpenPunctuation, 2047 21 => Self::ClosePunctuation, 2048 22 => Self::ConnectorPunctuation, 2049 28 => Self::InitialPunctuation, 2050 29 => Self::FinalPunctuation, 2051 23 => Self::OtherPunctuation, 2052 24 => Self::MathSymbol, 2053 25 => Self::CurrencySymbol, 2054 26 => Self::ModifierSymbol, 2055 27 => Self::OtherSymbol, 2056 _ => return None, 2057 }) 2058 } 2059 } 2060 2061 /// A mask that is capable of representing groups of `General_Category` values. 2062 #[diplomat::rust_link(icu::properties::props::GeneralCategoryGroup, Struct)] 2063 #[derive(Default)] 2064 pub struct GeneralCategoryGroup { 2065 pub mask: u32, 2066 } 2067 2068 impl GeneralCategoryGroup { 2069 #[inline] into_props_group(self) -> props::GeneralCategoryGroup2070 pub(crate) fn into_props_group(self) -> props::GeneralCategoryGroup { 2071 self.mask.into() 2072 } 2073 2074 #[diplomat::rust_link(icu::properties::props::GeneralCategoryGroup::contains, FnInStruct)] contains(self, val: GeneralCategory) -> bool2075 pub fn contains(self, val: GeneralCategory) -> bool { 2076 self.into_props_group().contains(val.into()) 2077 } 2078 #[diplomat::rust_link(icu::properties::props::GeneralCategoryGroup::complement, FnInStruct)] complement(self) -> Self2079 pub fn complement(self) -> Self { 2080 self.into_props_group().complement().into() 2081 } 2082 2083 #[diplomat::rust_link(icu::properties::props::GeneralCategoryGroup::all, FnInStruct)] all() -> Self2084 pub fn all() -> Self { 2085 props::GeneralCategoryGroup::all().into() 2086 } 2087 #[diplomat::rust_link(icu::properties::props::GeneralCategoryGroup::empty, FnInStruct)] empty() -> Self2088 pub fn empty() -> Self { 2089 props::GeneralCategoryGroup::empty().into() 2090 } 2091 #[diplomat::rust_link(icu::properties::props::GeneralCategoryGroup::union, FnInStruct)] 2092 #[diplomat::attr(any(c, cpp), rename = "union_")] union(self, other: Self) -> Self2093 pub fn union(self, other: Self) -> Self { 2094 self.into_props_group() 2095 .union(other.into_props_group()) 2096 .into() 2097 } 2098 #[diplomat::rust_link( 2099 icu::properties::props::GeneralCategoryGroup::intersection, 2100 FnInStruct 2101 )] intersection(self, other: Self) -> Self2102 pub fn intersection(self, other: Self) -> Self { 2103 self.into_props_group() 2104 .intersection(other.into_props_group()) 2105 .into() 2106 } 2107 2108 #[diplomat::rust_link( 2109 icu::properties::props::GeneralCategoryGroup::CasedLetter, 2110 AssociatedConstantInStruct 2111 )] cased_letter() -> Self2112 pub fn cased_letter() -> Self { 2113 props::GeneralCategoryGroup::CasedLetter.into() 2114 } 2115 2116 #[diplomat::rust_link( 2117 icu::properties::props::GeneralCategoryGroup::Letter, 2118 AssociatedConstantInStruct 2119 )] letter() -> Self2120 pub fn letter() -> Self { 2121 props::GeneralCategoryGroup::Letter.into() 2122 } 2123 2124 #[diplomat::rust_link( 2125 icu::properties::props::GeneralCategoryGroup::Mark, 2126 AssociatedConstantInStruct 2127 )] mark() -> Self2128 pub fn mark() -> Self { 2129 props::GeneralCategoryGroup::Mark.into() 2130 } 2131 #[diplomat::rust_link( 2132 icu::properties::props::GeneralCategoryGroup::Number, 2133 AssociatedConstantInStruct 2134 )] number() -> Self2135 pub fn number() -> Self { 2136 props::GeneralCategoryGroup::Number.into() 2137 } 2138 #[diplomat::rust_link( 2139 icu::properties::props::GeneralCategoryGroup::Other, 2140 AssociatedConstantInStruct 2141 )] separator() -> Self2142 pub fn separator() -> Self { 2143 props::GeneralCategoryGroup::Other.into() 2144 } 2145 #[diplomat::rust_link( 2146 icu::properties::props::GeneralCategoryGroup::Letter, 2147 AssociatedConstantInStruct 2148 )] other() -> Self2149 pub fn other() -> Self { 2150 props::GeneralCategoryGroup::Letter.into() 2151 } 2152 #[diplomat::rust_link( 2153 icu::properties::props::GeneralCategoryGroup::Punctuation, 2154 AssociatedConstantInStruct 2155 )] punctuation() -> Self2156 pub fn punctuation() -> Self { 2157 props::GeneralCategoryGroup::Punctuation.into() 2158 } 2159 #[diplomat::rust_link( 2160 icu::properties::props::GeneralCategoryGroup::Symbol, 2161 AssociatedConstantInStruct 2162 )] symbol() -> Self2163 pub fn symbol() -> Self { 2164 props::GeneralCategoryGroup::Symbol.into() 2165 } 2166 } 2167 } 2168 2169 impl From<icu_properties::props::GeneralCategoryGroup> for ffi::GeneralCategoryGroup { 2170 #[inline] from(other: icu_properties::props::GeneralCategoryGroup) -> Self2171 fn from(other: icu_properties::props::GeneralCategoryGroup) -> Self { 2172 Self { mask: other.into() } 2173 } 2174 } 2175 #[cfg(test)] 2176 mod test { 2177 use super::ffi::*; 2178 use icu_properties::props; 2179 2180 #[test] test_all_cases_covered()2181 fn test_all_cases_covered() { 2182 for prop in props::BidiClass::ALL_VALUES { 2183 let ffi_prop = BidiClass::from_integer_value(prop.to_icu4c_value()) 2184 .expect("Found BidiClass value not supported in ffi"); 2185 assert_eq!(prop.to_icu4c_value(), ffi_prop.to_integer_value()); 2186 assert_eq!(*prop, props::BidiClass::from(ffi_prop)); 2187 } 2188 2189 for prop in props::Script::ALL_VALUES { 2190 let ffi_prop = Script::from_integer_value(prop.to_icu4c_value()) 2191 .expect("Found Script value not supported in ffi"); 2192 assert_eq!(prop.to_icu4c_value(), ffi_prop.to_integer_value()); 2193 assert_eq!(*prop, props::Script::from(ffi_prop)); 2194 } 2195 2196 for prop in props::HangulSyllableType::ALL_VALUES { 2197 let ffi_prop = HangulSyllableType::from_integer_value(prop.to_icu4c_value()) 2198 .expect("Found HangulSyllableType value not supported in ffi"); 2199 assert_eq!(prop.to_icu4c_value(), ffi_prop.to_integer_value()); 2200 assert_eq!(*prop, props::HangulSyllableType::from(ffi_prop)); 2201 } 2202 for prop in props::EastAsianWidth::ALL_VALUES { 2203 let ffi_prop = EastAsianWidth::from_integer_value(prop.to_icu4c_value()) 2204 .expect("Found EastAsianWidth value not supported in ffi"); 2205 assert_eq!(prop.to_icu4c_value(), ffi_prop.to_integer_value()); 2206 assert_eq!(*prop, props::EastAsianWidth::from(ffi_prop)); 2207 } 2208 for prop in props::LineBreak::ALL_VALUES { 2209 let ffi_prop = LineBreak::from_integer_value(prop.to_icu4c_value()) 2210 .expect("Found LineBreak value not supported in ffi"); 2211 assert_eq!(prop.to_icu4c_value(), ffi_prop.to_integer_value()); 2212 assert_eq!(*prop, props::LineBreak::from(ffi_prop)); 2213 } 2214 for prop in props::GraphemeClusterBreak::ALL_VALUES { 2215 let ffi_prop = GraphemeClusterBreak::from_integer_value(prop.to_icu4c_value()) 2216 .expect("Found GraphemeClusterBreak value not supported in ffi"); 2217 assert_eq!(prop.to_icu4c_value(), ffi_prop.to_integer_value()); 2218 assert_eq!(*prop, props::GraphemeClusterBreak::from(ffi_prop)); 2219 } 2220 for prop in props::WordBreak::ALL_VALUES { 2221 let ffi_prop = WordBreak::from_integer_value(prop.to_icu4c_value()) 2222 .expect("Found WordBreak value not supported in ffi"); 2223 assert_eq!(prop.to_icu4c_value(), ffi_prop.to_integer_value()); 2224 assert_eq!(*prop, props::WordBreak::from(ffi_prop)); 2225 } 2226 for prop in props::SentenceBreak::ALL_VALUES { 2227 let ffi_prop = SentenceBreak::from_integer_value(prop.to_icu4c_value()) 2228 .expect("Found SentenceBreak value not supported in ffi"); 2229 assert_eq!(prop.to_icu4c_value(), ffi_prop.to_integer_value()); 2230 assert_eq!(*prop, props::SentenceBreak::from(ffi_prop)); 2231 } 2232 for prop in props::CanonicalCombiningClass::ALL_VALUES { 2233 let ffi_prop = CanonicalCombiningClass::from_integer_value(prop.to_icu4c_value()) 2234 .expect("Found CanonicalCombiningClass value not supported in ffi"); 2235 assert_eq!(prop.to_icu4c_value(), ffi_prop.to_integer_value()); 2236 assert_eq!(*prop, props::CanonicalCombiningClass::from(ffi_prop)); 2237 } 2238 for prop in props::IndicSyllabicCategory::ALL_VALUES { 2239 let ffi_prop = IndicSyllabicCategory::from_integer_value(prop.to_icu4c_value()) 2240 .expect("Found IndicSyllabicCategory value not supported in ffi"); 2241 assert_eq!(prop.to_icu4c_value(), ffi_prop.to_integer_value()); 2242 assert_eq!(*prop, props::IndicSyllabicCategory::from(ffi_prop)); 2243 } 2244 for prop in props::JoiningType::ALL_VALUES { 2245 let ffi_prop = JoiningType::from_integer_value(prop.to_icu4c_value()) 2246 .expect("Found JoiningType value not supported in ffi"); 2247 assert_eq!(prop.to_icu4c_value(), ffi_prop.to_integer_value()); 2248 assert_eq!(*prop, props::JoiningType::from(ffi_prop)); 2249 } 2250 for prop in props::GeneralCategory::ALL_VALUES { 2251 let ffi_prop = GeneralCategory::from_integer_value(*prop as u8) 2252 .expect("Found GeneralCategory value not supported in ffi"); 2253 assert_eq!(*prop as u8, ffi_prop.to_integer_value()); 2254 assert_eq!(*prop, props::GeneralCategory::from(ffi_prop)); 2255 } 2256 } 2257 } 2258