1pub use crate::names::{NamedEnumeratedProperty, ParseableEnumeratedProperty};
21
22pub use crate::bidi::{BidiMirroringGlyph, BidiPairedBracketType};
23
24macro_rules! create_const_array {
36 (
37 $ ( #[$meta:meta] )*
38 impl $enum_ty:ident {
39 $( $(#[$const_meta:meta])* $v:vis const $i:ident: $t:ty = $e:expr; )*
40 }
41 ) => {
42 $( #[$meta] )*
43 impl $enum_ty {
44 $(
45 $(#[$const_meta])*
46 $v const $i: $t = $e;
47 )*
48
49 pub const ALL_VALUES: &'static [$enum_ty] = &[
52 $($enum_ty::$i),*
53 ];
54 }
55
56 #[cfg(feature = "datagen")]
57 impl databake::Bake for $enum_ty {
58 fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream {
59 env.insert("icu_properties");
60 match *self {
61 $(
62 Self::$i => databake::quote!(icu_properties::props::$enum_ty::$i),
63 )*
64 Self(v) => databake::quote!(icu_properties::props::$enum_ty::from_icu4c_value(#v)),
65 }
66 }
67 }
68
69
70 impl From<$enum_ty> for u16 {
71 fn from(other: $enum_ty) -> Self {
72 other.0 as u16
73 }
74 }
75 }
76}
77
78pub use crate::code_point_map::EnumeratedProperty;
79
80macro_rules! make_enumerated_property {
81 (
82 name: $name:literal;
83 short_name: $short_name:literal;
84 ident: $value_ty:path;
85 data_marker: $data_marker:ty;
86 singleton: $singleton:ident;
87 $(ule_ty: $ule_ty:ty;)?
88 ) => {
89 impl crate::private::Sealed for $value_ty {}
90
91 impl EnumeratedProperty for $value_ty {
92 type DataMarker = $data_marker;
93 #[cfg(feature = "compiled_data")]
94 const SINGLETON: &'static crate::provider::PropertyCodePointMap<'static, Self> =
95 crate::provider::Baked::$singleton;
96 const NAME: &'static [u8] = $name.as_bytes();
97 const SHORT_NAME: &'static [u8] = $short_name.as_bytes();
98 }
99
100 $(
101 impl zerovec::ule::AsULE for $value_ty {
102 type ULE = $ule_ty;
103
104 fn to_unaligned(self) -> Self::ULE {
105 self.0.to_unaligned()
106 }
107 fn from_unaligned(unaligned: Self::ULE) -> Self {
108 Self(zerovec::ule::AsULE::from_unaligned(unaligned))
109 }
110 }
111 )?
112 };
113}
114
115)]
136#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
137#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
139pub struct BidiClass(pub(crate) u8);
140
141impl BidiClass {
142 pub const fn to_icu4c_value(self) -> u8 {
144 self.0
145 }
146 pub const fn from_icu4c_value(value: u8) -> Self {
148 Self(value)
149 }
150}
151
152#[allow(non_upper_case_globals)]
impl BidiClass {
#[doc = r" (`L`) any strong left-to-right character"]
pub const LeftToRight: BidiClass = BidiClass(0);
#[doc = r" (`R`) any strong right-to-left (non-Arabic-type) character"]
pub const RightToLeft: BidiClass = BidiClass(1);
#[doc = r" (`EN`) any ASCII digit or Eastern Arabic-Indic digit"]
pub const EuropeanNumber: BidiClass = BidiClass(2);
#[doc = r" (`ES`) plus and minus signs"]
pub const EuropeanSeparator: BidiClass = BidiClass(3);
#[doc =
r" (`ET`) a terminator in a numeric format context, includes currency signs"]
pub const EuropeanTerminator: BidiClass = BidiClass(4);
#[doc = r" (`AN`) any Arabic-Indic digit"]
pub const ArabicNumber: BidiClass = BidiClass(5);
#[doc = r" (`CS`) commas, colons, and slashes"]
pub const CommonSeparator: BidiClass = BidiClass(6);
#[doc = r" (`B`) various newline characters"]
pub const ParagraphSeparator: BidiClass = BidiClass(7);
#[doc = r" (`S`) various segment-related control codes"]
pub const SegmentSeparator: BidiClass = BidiClass(8);
#[doc = r" (`WS`) spaces"]
pub const WhiteSpace: BidiClass = BidiClass(9);
#[doc = r" (`ON`) most other symbols and punctuation marks"]
pub const OtherNeutral: BidiClass = BidiClass(10);
#[doc = r" (`LRE`) U+202A: the LR embedding control"]
pub const LeftToRightEmbedding: BidiClass = BidiClass(11);
#[doc = r" (`LRO`) U+202D: the LR override control"]
pub const LeftToRightOverride: BidiClass = BidiClass(12);
#[doc = r" (`AL`) any strong right-to-left (Arabic-type) character"]
pub const ArabicLetter: BidiClass = BidiClass(13);
#[doc = r" (`RLE`) U+202B: the RL embedding control"]
pub const RightToLeftEmbedding: BidiClass = BidiClass(14);
#[doc = r" (`RLO`) U+202E: the RL override control"]
pub const RightToLeftOverride: BidiClass = BidiClass(15);
#[doc = r" (`PDF`) U+202C: terminates an embedding or override control"]
pub const PopDirectionalFormat: BidiClass = BidiClass(16);
#[doc = r" (`NSM`) any nonspacing mark"]
pub const NonspacingMark: BidiClass = BidiClass(17);
#[doc =
r" (`BN`) most format characters, control codes, or noncharacters"]
pub const BoundaryNeutral: BidiClass = BidiClass(18);
#[doc = r" (`FSI`) U+2068: the first strong isolate control"]
pub const FirstStrongIsolate: BidiClass = BidiClass(19);
#[doc = r" (`LRI`) U+2066: the LR isolate control"]
pub const LeftToRightIsolate: BidiClass = BidiClass(20);
#[doc = r" (`RLI`) U+2067: the RL isolate control"]
pub const RightToLeftIsolate: BidiClass = BidiClass(21);
#[doc = r" (`PDI`) U+2069: terminates an isolate control"]
pub const PopDirectionalIsolate: BidiClass = BidiClass(22);
pub const ALL_VALUES: &'static [BidiClass] =
&[BidiClass::LeftToRight, BidiClass::RightToLeft,
BidiClass::EuropeanNumber, BidiClass::EuropeanSeparator,
BidiClass::EuropeanTerminator, BidiClass::ArabicNumber,
BidiClass::CommonSeparator, BidiClass::ParagraphSeparator,
BidiClass::SegmentSeparator, BidiClass::WhiteSpace,
BidiClass::OtherNeutral, BidiClass::LeftToRightEmbedding,
BidiClass::LeftToRightOverride, BidiClass::ArabicLetter,
BidiClass::RightToLeftEmbedding,
BidiClass::RightToLeftOverride,
BidiClass::PopDirectionalFormat, BidiClass::NonspacingMark,
BidiClass::BoundaryNeutral, BidiClass::FirstStrongIsolate,
BidiClass::LeftToRightIsolate,
BidiClass::RightToLeftIsolate,
BidiClass::PopDirectionalIsolate];
}
impl From<BidiClass> for u16 {
fn from(other: BidiClass) -> Self { other.0 as u16 }
}create_const_array! {
153#[allow(non_upper_case_globals)]
154impl BidiClass {
155 pub const LeftToRight: BidiClass = BidiClass(0);
157 pub const RightToLeft: BidiClass = BidiClass(1);
159 pub const EuropeanNumber: BidiClass = BidiClass(2);
161 pub const EuropeanSeparator: BidiClass = BidiClass(3);
163 pub const EuropeanTerminator: BidiClass = BidiClass(4);
165 pub const ArabicNumber: BidiClass = BidiClass(5);
167 pub const CommonSeparator: BidiClass = BidiClass(6);
169 pub const ParagraphSeparator: BidiClass = BidiClass(7);
171 pub const SegmentSeparator: BidiClass = BidiClass(8);
173 pub const WhiteSpace: BidiClass = BidiClass(9);
175 pub const OtherNeutral: BidiClass = BidiClass(10);
177 pub const LeftToRightEmbedding: BidiClass = BidiClass(11);
179 pub const LeftToRightOverride: BidiClass = BidiClass(12);
181 pub const ArabicLetter: BidiClass = BidiClass(13);
183 pub const RightToLeftEmbedding: BidiClass = BidiClass(14);
185 pub const RightToLeftOverride: BidiClass = BidiClass(15);
187 pub const PopDirectionalFormat: BidiClass = BidiClass(16);
189 pub const NonspacingMark: BidiClass = BidiClass(17);
191 pub const BoundaryNeutral: BidiClass = BidiClass(18);
193 pub const FirstStrongIsolate: BidiClass = BidiClass(19);
195 pub const LeftToRightIsolate: BidiClass = BidiClass(20);
197 pub const RightToLeftIsolate: BidiClass = BidiClass(21);
199 pub const PopDirectionalIsolate: BidiClass = BidiClass(22);
201}
202}
203
204impl crate::private::Sealed for BidiClass {}
impl EnumeratedProperty for BidiClass {
type DataMarker = crate::provider::PropertyEnumBidiClassV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_BIDI_CLASS_V1;
const NAME: &'static [u8] = "Bidi_Class".as_bytes();
const SHORT_NAME: &'static [u8] = "bc".as_bytes();
}
impl zerovec::ule::AsULE for BidiClass {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
205 name: "Bidi_Class";
206 short_name: "bc";
207 ident: BidiClass;
208 data_marker: crate::provider::PropertyEnumBidiClassV1;
209 singleton: SINGLETON_PROPERTY_ENUM_BIDI_CLASS_V1;
210 ule_ty: u8;
211}
212
213pub(crate) mod gc {
215 #[derive(#[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl ::core::marker::Copy for GeneralCategory { }Copy, #[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl ::core::clone::Clone for GeneralCategory {
#[inline]
fn clone(&self) -> GeneralCategory { *self }
}Clone, #[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl ::core::cmp::PartialEq for GeneralCategory {
#[inline]
fn eq(&self, other: &GeneralCategory) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr
}
}PartialEq, #[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl ::core::cmp::Eq for GeneralCategory {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) -> () {}
}Eq, #[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl ::core::fmt::Debug for GeneralCategory {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
match self {
GeneralCategory::Unassigned => "Unassigned",
GeneralCategory::UppercaseLetter => "UppercaseLetter",
GeneralCategory::LowercaseLetter => "LowercaseLetter",
GeneralCategory::TitlecaseLetter => "TitlecaseLetter",
GeneralCategory::ModifierLetter => "ModifierLetter",
GeneralCategory::OtherLetter => "OtherLetter",
GeneralCategory::NonspacingMark => "NonspacingMark",
GeneralCategory::SpacingMark => "SpacingMark",
GeneralCategory::EnclosingMark => "EnclosingMark",
GeneralCategory::DecimalNumber => "DecimalNumber",
GeneralCategory::LetterNumber => "LetterNumber",
GeneralCategory::OtherNumber => "OtherNumber",
GeneralCategory::SpaceSeparator => "SpaceSeparator",
GeneralCategory::LineSeparator => "LineSeparator",
GeneralCategory::ParagraphSeparator => "ParagraphSeparator",
GeneralCategory::Control => "Control",
GeneralCategory::Format => "Format",
GeneralCategory::PrivateUse => "PrivateUse",
GeneralCategory::Surrogate => "Surrogate",
GeneralCategory::DashPunctuation => "DashPunctuation",
GeneralCategory::OpenPunctuation => "OpenPunctuation",
GeneralCategory::ClosePunctuation => "ClosePunctuation",
GeneralCategory::ConnectorPunctuation =>
"ConnectorPunctuation",
GeneralCategory::InitialPunctuation => "InitialPunctuation",
GeneralCategory::FinalPunctuation => "FinalPunctuation",
GeneralCategory::OtherPunctuation => "OtherPunctuation",
GeneralCategory::MathSymbol => "MathSymbol",
GeneralCategory::CurrencySymbol => "CurrencySymbol",
GeneralCategory::ModifierSymbol => "ModifierSymbol",
GeneralCategory::OtherSymbol => "OtherSymbol",
})
}
}Debug, #[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl ::core::cmp::Ord for GeneralCategory {
#[inline]
fn cmp(&self, other: &GeneralCategory) -> ::core::cmp::Ordering {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr)
}
}Ord, #[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl ::core::cmp::PartialOrd for GeneralCategory {
#[inline]
fn partial_cmp(&self, other: &GeneralCategory)
-> ::core::option::Option<::core::cmp::Ordering> {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
}
}PartialOrd, #[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl ::core::hash::Hash for GeneralCategory {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) -> () {
let __self_discr = ::core::intrinsics::discriminant_value(self);
::core::hash::Hash::hash(&__self_discr, state)
}
}Hash)]
240 #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
241 #[cfg_attr(feature = "datagen", derive(databake::Bake))]
242 #[cfg_attr(feature = "datagen", databake(path = icu_properties::props))]
243 #[allow(clippy::exhaustive_enums)] impl<'a> zerovec::maps::ZeroMapKV<'a> for GeneralCategory {
type Container = zerovec::ZeroVec<'a, GeneralCategory>;
type Slice = zerovec::ZeroSlice<GeneralCategory>;
type GetType = GeneralCategoryULE;
type OwnedType = GeneralCategory;
}#[zerovec::make_ule(GeneralCategoryULE)]
245 #[repr(u8)]
246 pub enum GeneralCategory {
247 Unassigned = 0,
249
250 UppercaseLetter = 1,
252 LowercaseLetter = 2,
254 TitlecaseLetter = 3,
256 ModifierLetter = 4,
258 OtherLetter = 5,
260
261 NonspacingMark = 6,
263 SpacingMark = 8,
265 EnclosingMark = 7,
267
268 DecimalNumber = 9,
270 LetterNumber = 10,
272 OtherNumber = 11,
274
275 SpaceSeparator = 12,
277 LineSeparator = 13,
279 ParagraphSeparator = 14,
281
282 Control = 15,
284 Format = 16,
286 PrivateUse = 17,
288 Surrogate = 18,
290
291 DashPunctuation = 19,
293 OpenPunctuation = 20,
295 ClosePunctuation = 21,
297 ConnectorPunctuation = 22,
299 InitialPunctuation = 28,
301 FinalPunctuation = 29,
303 OtherPunctuation = 23,
305
306 MathSymbol = 24,
308 CurrencySymbol = 25,
310 ModifierSymbol = 26,
312 OtherSymbol = 27,
314 }
315}
316
317pub use gc::GeneralCategory;
318
319impl GeneralCategory {
320 pub const ALL_VALUES: &'static [GeneralCategory] = &[
322 GeneralCategory::Unassigned,
323 GeneralCategory::UppercaseLetter,
324 GeneralCategory::LowercaseLetter,
325 GeneralCategory::TitlecaseLetter,
326 GeneralCategory::ModifierLetter,
327 GeneralCategory::OtherLetter,
328 GeneralCategory::NonspacingMark,
329 GeneralCategory::SpacingMark,
330 GeneralCategory::EnclosingMark,
331 GeneralCategory::DecimalNumber,
332 GeneralCategory::LetterNumber,
333 GeneralCategory::OtherNumber,
334 GeneralCategory::SpaceSeparator,
335 GeneralCategory::LineSeparator,
336 GeneralCategory::ParagraphSeparator,
337 GeneralCategory::Control,
338 GeneralCategory::Format,
339 GeneralCategory::PrivateUse,
340 GeneralCategory::Surrogate,
341 GeneralCategory::DashPunctuation,
342 GeneralCategory::OpenPunctuation,
343 GeneralCategory::ClosePunctuation,
344 GeneralCategory::ConnectorPunctuation,
345 GeneralCategory::InitialPunctuation,
346 GeneralCategory::FinalPunctuation,
347 GeneralCategory::OtherPunctuation,
348 GeneralCategory::MathSymbol,
349 GeneralCategory::CurrencySymbol,
350 GeneralCategory::ModifierSymbol,
351 GeneralCategory::OtherSymbol,
352 ];
353}
354
355#[derive(#[automatically_derived]
impl ::core::marker::Copy for GeneralCategoryOutOfBoundsError { }Copy, #[automatically_derived]
impl ::core::clone::Clone for GeneralCategoryOutOfBoundsError {
#[inline]
fn clone(&self) -> GeneralCategoryOutOfBoundsError { *self }
}Clone, #[automatically_derived]
impl ::core::cmp::PartialEq for GeneralCategoryOutOfBoundsError {
#[inline]
fn eq(&self, other: &GeneralCategoryOutOfBoundsError) -> bool { true }
}PartialEq, #[automatically_derived]
impl ::core::cmp::Eq for GeneralCategoryOutOfBoundsError {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) -> () {}
}Eq, #[automatically_derived]
impl ::core::cmp::PartialOrd for GeneralCategoryOutOfBoundsError {
#[inline]
fn partial_cmp(&self, other: &GeneralCategoryOutOfBoundsError)
-> ::core::option::Option<::core::cmp::Ordering> {
::core::option::Option::Some(::core::cmp::Ordering::Equal)
}
}PartialOrd, #[automatically_derived]
impl ::core::cmp::Ord for GeneralCategoryOutOfBoundsError {
#[inline]
fn cmp(&self, other: &GeneralCategoryOutOfBoundsError)
-> ::core::cmp::Ordering {
::core::cmp::Ordering::Equal
}
}Ord, #[automatically_derived]
impl ::core::fmt::Debug for GeneralCategoryOutOfBoundsError {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f,
"GeneralCategoryOutOfBoundsError")
}
}Debug, #[automatically_derived]
impl ::core::hash::Hash for GeneralCategoryOutOfBoundsError {
#[inline]
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) -> () {}
}Hash, #[automatically_derived]
impl ::core::default::Default for GeneralCategoryOutOfBoundsError {
#[inline]
fn default() -> GeneralCategoryOutOfBoundsError {
GeneralCategoryOutOfBoundsError {}
}
}Default)]
356#[non_exhaustive]
358pub struct GeneralCategoryOutOfBoundsError;
359
360impl TryFrom<u8> for GeneralCategory {
361 type Error = GeneralCategoryOutOfBoundsError;
362 fn try_from(val: u8) -> Result<Self, GeneralCategoryOutOfBoundsError> {
365 GeneralCategory::new_from_u8(val).ok_or(GeneralCategoryOutOfBoundsError)
366 }
367}
368
369impl crate::private::Sealed for GeneralCategory {}
impl EnumeratedProperty for GeneralCategory {
type DataMarker = crate::provider::PropertyEnumGeneralCategoryV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_GENERAL_CATEGORY_V1;
const NAME: &'static [u8] = "General_Category".as_bytes();
const SHORT_NAME: &'static [u8] = "gc".as_bytes();
}make_enumerated_property! {
370 name: "General_Category";
371 short_name: "gc";
372 ident: GeneralCategory;
373 data_marker: crate::provider::PropertyEnumGeneralCategoryV1;
374 singleton: SINGLETON_PROPERTY_ENUM_GENERAL_CATEGORY_V1;
375}
376
377)]
393#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
395pub struct GeneralCategoryGroup(pub(crate) u32);
396
397impl crate::private::Sealed for GeneralCategoryGroup {}
398
399use GeneralCategory as GC;
400use GeneralCategoryGroup as GCG;
401
402#[allow(non_upper_case_globals)]
403impl GeneralCategoryGroup {
404 pub const UppercaseLetter: GeneralCategoryGroup = GCG(1 << (GC::UppercaseLetter as u32));
406 pub const LowercaseLetter: GeneralCategoryGroup = GCG(1 << (GC::LowercaseLetter as u32));
408 pub const TitlecaseLetter: GeneralCategoryGroup = GCG(1 << (GC::TitlecaseLetter as u32));
410 pub const ModifierLetter: GeneralCategoryGroup = GCG(1 << (GC::ModifierLetter as u32));
412 pub const OtherLetter: GeneralCategoryGroup = GCG(1 << (GC::OtherLetter as u32));
414 pub const CasedLetter: GeneralCategoryGroup = GCG((1 << (GC::UppercaseLetter as u32))
416 | (1 << (GC::LowercaseLetter as u32))
417 | (1 << (GC::TitlecaseLetter as u32)));
418 pub const Letter: GeneralCategoryGroup = GCG((1 << (GC::UppercaseLetter as u32))
420 | (1 << (GC::LowercaseLetter as u32))
421 | (1 << (GC::TitlecaseLetter as u32))
422 | (1 << (GC::ModifierLetter as u32))
423 | (1 << (GC::OtherLetter as u32)));
424
425 pub const NonspacingMark: GeneralCategoryGroup = GCG(1 << (GC::NonspacingMark as u32));
427 pub const EnclosingMark: GeneralCategoryGroup = GCG(1 << (GC::EnclosingMark as u32));
429 pub const SpacingMark: GeneralCategoryGroup = GCG(1 << (GC::SpacingMark as u32));
431 pub const Mark: GeneralCategoryGroup = GCG((1 << (GC::NonspacingMark as u32))
433 | (1 << (GC::EnclosingMark as u32))
434 | (1 << (GC::SpacingMark as u32)));
435
436 pub const DecimalNumber: GeneralCategoryGroup = GCG(1 << (GC::DecimalNumber as u32));
438 pub const LetterNumber: GeneralCategoryGroup = GCG(1 << (GC::LetterNumber as u32));
440 pub const OtherNumber: GeneralCategoryGroup = GCG(1 << (GC::OtherNumber as u32));
442 pub const Number: GeneralCategoryGroup = GCG((1 << (GC::DecimalNumber as u32))
444 | (1 << (GC::LetterNumber as u32))
445 | (1 << (GC::OtherNumber as u32)));
446
447 pub const SpaceSeparator: GeneralCategoryGroup = GCG(1 << (GC::SpaceSeparator as u32));
449 pub const LineSeparator: GeneralCategoryGroup = GCG(1 << (GC::LineSeparator as u32));
451 pub const ParagraphSeparator: GeneralCategoryGroup = GCG(1 << (GC::ParagraphSeparator as u32));
453 pub const Separator: GeneralCategoryGroup = GCG((1 << (GC::SpaceSeparator as u32))
455 | (1 << (GC::LineSeparator as u32))
456 | (1 << (GC::ParagraphSeparator as u32)));
457
458 pub const Control: GeneralCategoryGroup = GCG(1 << (GC::Control as u32));
460 pub const Format: GeneralCategoryGroup = GCG(1 << (GC::Format as u32));
462 pub const PrivateUse: GeneralCategoryGroup = GCG(1 << (GC::PrivateUse as u32));
464 pub const Surrogate: GeneralCategoryGroup = GCG(1 << (GC::Surrogate as u32));
466 pub const Unassigned: GeneralCategoryGroup = GCG(1 << (GC::Unassigned as u32));
468 pub const Other: GeneralCategoryGroup = GCG((1 << (GC::Control as u32))
470 | (1 << (GC::Format as u32))
471 | (1 << (GC::PrivateUse as u32))
472 | (1 << (GC::Surrogate as u32))
473 | (1 << (GC::Unassigned as u32)));
474
475 pub const DashPunctuation: GeneralCategoryGroup = GCG(1 << (GC::DashPunctuation as u32));
477 pub const OpenPunctuation: GeneralCategoryGroup = GCG(1 << (GC::OpenPunctuation as u32));
479 pub const ClosePunctuation: GeneralCategoryGroup = GCG(1 << (GC::ClosePunctuation as u32));
481 pub const ConnectorPunctuation: GeneralCategoryGroup =
483 GCG(1 << (GC::ConnectorPunctuation as u32));
484 pub const InitialPunctuation: GeneralCategoryGroup = GCG(1 << (GC::InitialPunctuation as u32));
486 pub const FinalPunctuation: GeneralCategoryGroup = GCG(1 << (GC::FinalPunctuation as u32));
488 pub const OtherPunctuation: GeneralCategoryGroup = GCG(1 << (GC::OtherPunctuation as u32));
490 pub const Punctuation: GeneralCategoryGroup = GCG((1 << (GC::DashPunctuation as u32))
492 | (1 << (GC::OpenPunctuation as u32))
493 | (1 << (GC::ClosePunctuation as u32))
494 | (1 << (GC::ConnectorPunctuation as u32))
495 | (1 << (GC::OtherPunctuation as u32))
496 | (1 << (GC::InitialPunctuation as u32))
497 | (1 << (GC::FinalPunctuation as u32)));
498
499 pub const MathSymbol: GeneralCategoryGroup = GCG(1 << (GC::MathSymbol as u32));
501 pub const CurrencySymbol: GeneralCategoryGroup = GCG(1 << (GC::CurrencySymbol as u32));
503 pub const ModifierSymbol: GeneralCategoryGroup = GCG(1 << (GC::ModifierSymbol as u32));
505 pub const OtherSymbol: GeneralCategoryGroup = GCG(1 << (GC::OtherSymbol as u32));
507 pub const Symbol: GeneralCategoryGroup = GCG((1 << (GC::MathSymbol as u32))
509 | (1 << (GC::CurrencySymbol as u32))
510 | (1 << (GC::ModifierSymbol as u32))
511 | (1 << (GC::OtherSymbol as u32)));
512
513 const ALL: u32 = (1 << (GC::FinalPunctuation as u32 + 1)) - 1;
514
515 pub const fn contains(self, val: GeneralCategory) -> bool {
559 0 != (1 << (val as u32)) & self.0
560 }
561
562 pub const fn complement(self) -> Self {
580 GeneralCategoryGroup(!self.0 & Self::ALL)
583 }
584
585 pub const fn all() -> Self {
599 Self(Self::ALL)
600 }
601
602 pub const fn empty() -> Self {
616 Self(0)
617 }
618
619 pub const fn union(self, other: Self) -> Self {
635 Self(self.0 | other.0)
636 }
637
638 pub const fn intersection(self, other: Self) -> Self {
655 Self(self.0 & other.0)
656 }
657}
658
659impl From<GeneralCategory> for GeneralCategoryGroup {
660 fn from(subcategory: GeneralCategory) -> Self {
661 GeneralCategoryGroup(1 << (subcategory as u32))
662 }
663}
664impl From<u32> for GeneralCategoryGroup {
665 fn from(mask: u32) -> Self {
666 GeneralCategoryGroup(mask & Self::ALL)
669 }
670}
671impl From<GeneralCategoryGroup> for u32 {
672 fn from(group: GeneralCategoryGroup) -> Self {
673 group.0
674 }
675}
676
677)]
700#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
701#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
703pub struct Script(pub(crate) u16);
704
705impl Script {
706 pub const fn to_icu4c_value(self) -> u16 {
708 self.0
709 }
710 pub const fn from_icu4c_value(value: u16) -> Self {
712 Self(value)
713 }
714}
715
716#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl Script {
pub const Adlam: Script = Script(167);
pub const Ahom: Script = Script(161);
pub const AnatolianHieroglyphs: Script = Script(156);
pub const Arabic: Script = Script(2);
pub const Armenian: Script = Script(3);
pub const Avestan: Script = Script(117);
pub const Balinese: Script = Script(62);
pub const Bamum: Script = Script(130);
pub const BassaVah: Script = Script(134);
pub const Batak: Script = Script(63);
pub const Bengali: Script = Script(4);
pub const Bhaiksuki: Script = Script(168);
pub const Bopomofo: Script = Script(5);
pub const Brahmi: Script = Script(65);
pub const Braille: Script = Script(46);
pub const Buginese: Script = Script(55);
pub const Buhid: Script = Script(44);
pub const CanadianAboriginal: Script = Script(40);
pub const Carian: Script = Script(104);
pub const CaucasianAlbanian: Script = Script(159);
pub const Chakma: Script = Script(118);
pub const Cham: Script = Script(66);
pub const Cherokee: Script = Script(6);
pub const Chorasmian: Script = Script(189);
pub const Common: Script = Script(0);
pub const Coptic: Script = Script(7);
pub const Cuneiform: Script = Script(101);
pub const Cypriot: Script = Script(47);
pub const CyproMinoan: Script = Script(193);
pub const Cyrillic: Script = Script(8);
pub const Deseret: Script = Script(9);
pub const Devanagari: Script = Script(10);
pub const DivesAkuru: Script = Script(190);
pub const Dogra: Script = Script(178);
pub const Duployan: Script = Script(135);
pub const EgyptianHieroglyphs: Script = Script(71);
pub const Elbasan: Script = Script(136);
pub const Elymaic: Script = Script(185);
pub const Ethiopian: Script = Script(11);
pub const Georgian: Script = Script(12);
pub const Glagolitic: Script = Script(56);
pub const Gothic: Script = Script(13);
pub const Grantha: Script = Script(137);
pub const Greek: Script = Script(14);
pub const Gujarati: Script = Script(15);
pub const GunjalaGondi: Script = Script(179);
pub const Gurmukhi: Script = Script(16);
pub const Han: Script = Script(17);
pub const Hangul: Script = Script(18);
pub const HanifiRohingya: Script = Script(182);
pub const Hanunoo: Script = Script(43);
pub const Hatran: Script = Script(162);
pub const Hebrew: Script = Script(19);
pub const Hiragana: Script = Script(20);
pub const ImperialAramaic: Script = Script(116);
pub const Inherited: Script = Script(1);
pub const InscriptionalPahlavi: Script = Script(122);
pub const InscriptionalParthian: Script = Script(125);
pub const Javanese: Script = Script(78);
pub const Kaithi: Script = Script(120);
pub const Kannada: Script = Script(21);
pub const Katakana: Script = Script(22);
pub const Kawi: Script = Script(198);
pub const KayahLi: Script = Script(79);
pub const Kharoshthi: Script = Script(57);
pub const KhitanSmallScript: Script = Script(191);
pub const Khmer: Script = Script(23);
pub const Khojki: Script = Script(157);
pub const Khudawadi: Script = Script(145);
pub const Lao: Script = Script(24);
pub const Latin: Script = Script(25);
pub const Lepcha: Script = Script(82);
pub const Limbu: Script = Script(48);
pub const LinearA: Script = Script(83);
pub const LinearB: Script = Script(49);
pub const Lisu: Script = Script(131);
pub const Lycian: Script = Script(107);
pub const Lydian: Script = Script(108);
pub const Mahajani: Script = Script(160);
pub const Makasar: Script = Script(180);
pub const Malayalam: Script = Script(26);
pub const Mandaic: Script = Script(84);
pub const Manichaean: Script = Script(121);
pub const Marchen: Script = Script(169);
pub const MasaramGondi: Script = Script(175);
pub const Medefaidrin: Script = Script(181);
pub const MeeteiMayek: Script = Script(115);
pub const MendeKikakui: Script = Script(140);
pub const MeroiticCursive: Script = Script(141);
pub const MeroiticHieroglyphs: Script = Script(86);
pub const Miao: Script = Script(92);
pub const Modi: Script = Script(163);
pub const Mongolian: Script = Script(27);
pub const Mro: Script = Script(149);
pub const Multani: Script = Script(164);
pub const Myanmar: Script = Script(28);
pub const Nabataean: Script = Script(143);
pub const NagMundari: Script = Script(199);
pub const Nandinagari: Script = Script(187);
pub const Nastaliq: Script = Script(200);
pub const NewTaiLue: Script = Script(59);
pub const Newa: Script = Script(170);
pub const Nko: Script = Script(87);
pub const Nushu: Script = Script(150);
pub const NyiakengPuachueHmong: Script = Script(186);
pub const Ogham: Script = Script(29);
pub const OlChiki: Script = Script(109);
pub const OldHungarian: Script = Script(76);
pub const OldItalic: Script = Script(30);
pub const OldNorthArabian: Script = Script(142);
pub const OldPermic: Script = Script(89);
pub const OldPersian: Script = Script(61);
pub const OldSogdian: Script = Script(184);
pub const OldSouthArabian: Script = Script(133);
pub const OldTurkic: Script = Script(88);
pub const OldUyghur: Script = Script(194);
pub const Oriya: Script = Script(31);
pub const Osage: Script = Script(171);
pub const Osmanya: Script = Script(50);
pub const PahawhHmong: Script = Script(75);
pub const Palmyrene: Script = Script(144);
pub const PauCinHau: Script = Script(165);
pub const PhagsPa: Script = Script(90);
pub const Phoenician: Script = Script(91);
pub const PsalterPahlavi: Script = Script(123);
pub const Rejang: Script = Script(110);
pub const Runic: Script = Script(32);
pub const Samaritan: Script = Script(126);
pub const Saurashtra: Script = Script(111);
pub const Sharada: Script = Script(151);
pub const Shavian: Script = Script(51);
pub const Siddham: Script = Script(166);
pub const SignWriting: Script = Script(112);
pub const Sinhala: Script = Script(33);
pub const Sogdian: Script = Script(183);
pub const SoraSompeng: Script = Script(152);
pub const Soyombo: Script = Script(176);
pub const Sundanese: Script = Script(113);
pub const SylotiNagri: Script = Script(58);
pub const Syriac: Script = Script(34);
pub const Tagalog: Script = Script(42);
pub const Tagbanwa: Script = Script(45);
pub const TaiLe: Script = Script(52);
pub const TaiTham: Script = Script(106);
pub const TaiViet: Script = Script(127);
pub const Takri: Script = Script(153);
pub const Tamil: Script = Script(35);
pub const Tangsa: Script = Script(195);
pub const Tangut: Script = Script(154);
pub const Telugu: Script = Script(36);
pub const Thaana: Script = Script(37);
pub const Thai: Script = Script(38);
pub const Tibetan: Script = Script(39);
pub const Tifinagh: Script = Script(60);
pub const Tirhuta: Script = Script(158);
pub const Toto: Script = Script(196);
pub const Ugaritic: Script = Script(53);
pub const Unknown: Script = Script(103);
pub const Vai: Script = Script(99);
pub const Vithkuqi: Script = Script(197);
pub const Wancho: Script = Script(188);
pub const WarangCiti: Script = Script(146);
pub const Yezidi: Script = Script(192);
pub const Yi: Script = Script(41);
pub const ZanabazarSquare: Script = Script(177);
pub const ALL_VALUES: &'static [Script] =
&[Script::Adlam, Script::Ahom, Script::AnatolianHieroglyphs,
Script::Arabic, Script::Armenian, Script::Avestan,
Script::Balinese, Script::Bamum, Script::BassaVah,
Script::Batak, Script::Bengali, Script::Bhaiksuki,
Script::Bopomofo, Script::Brahmi, Script::Braille,
Script::Buginese, Script::Buhid, Script::CanadianAboriginal,
Script::Carian, Script::CaucasianAlbanian, Script::Chakma,
Script::Cham, Script::Cherokee, Script::Chorasmian,
Script::Common, Script::Coptic, Script::Cuneiform,
Script::Cypriot, Script::CyproMinoan, Script::Cyrillic,
Script::Deseret, Script::Devanagari, Script::DivesAkuru,
Script::Dogra, Script::Duployan,
Script::EgyptianHieroglyphs, Script::Elbasan,
Script::Elymaic, Script::Ethiopian, Script::Georgian,
Script::Glagolitic, Script::Gothic, Script::Grantha,
Script::Greek, Script::Gujarati, Script::GunjalaGondi,
Script::Gurmukhi, Script::Han, Script::Hangul,
Script::HanifiRohingya, Script::Hanunoo, Script::Hatran,
Script::Hebrew, Script::Hiragana, Script::ImperialAramaic,
Script::Inherited, Script::InscriptionalPahlavi,
Script::InscriptionalParthian, Script::Javanese,
Script::Kaithi, Script::Kannada, Script::Katakana,
Script::Kawi, Script::KayahLi, Script::Kharoshthi,
Script::KhitanSmallScript, Script::Khmer, Script::Khojki,
Script::Khudawadi, Script::Lao, Script::Latin,
Script::Lepcha, Script::Limbu, Script::LinearA,
Script::LinearB, Script::Lisu, Script::Lycian,
Script::Lydian, Script::Mahajani, Script::Makasar,
Script::Malayalam, Script::Mandaic, Script::Manichaean,
Script::Marchen, Script::MasaramGondi, Script::Medefaidrin,
Script::MeeteiMayek, Script::MendeKikakui,
Script::MeroiticCursive, Script::MeroiticHieroglyphs,
Script::Miao, Script::Modi, Script::Mongolian, Script::Mro,
Script::Multani, Script::Myanmar, Script::Nabataean,
Script::NagMundari, Script::Nandinagari, Script::Nastaliq,
Script::NewTaiLue, Script::Newa, Script::Nko, Script::Nushu,
Script::NyiakengPuachueHmong, Script::Ogham,
Script::OlChiki, Script::OldHungarian, Script::OldItalic,
Script::OldNorthArabian, Script::OldPermic,
Script::OldPersian, Script::OldSogdian,
Script::OldSouthArabian, Script::OldTurkic,
Script::OldUyghur, Script::Oriya, Script::Osage,
Script::Osmanya, Script::PahawhHmong, Script::Palmyrene,
Script::PauCinHau, Script::PhagsPa, Script::Phoenician,
Script::PsalterPahlavi, Script::Rejang, Script::Runic,
Script::Samaritan, Script::Saurashtra, Script::Sharada,
Script::Shavian, Script::Siddham, Script::SignWriting,
Script::Sinhala, Script::Sogdian, Script::SoraSompeng,
Script::Soyombo, Script::Sundanese, Script::SylotiNagri,
Script::Syriac, Script::Tagalog, Script::Tagbanwa,
Script::TaiLe, Script::TaiTham, Script::TaiViet,
Script::Takri, Script::Tamil, Script::Tangsa,
Script::Tangut, Script::Telugu, Script::Thaana,
Script::Thai, Script::Tibetan, Script::Tifinagh,
Script::Tirhuta, Script::Toto, Script::Ugaritic,
Script::Unknown, Script::Vai, Script::Vithkuqi,
Script::Wancho, Script::WarangCiti, Script::Yezidi,
Script::Yi, Script::ZanabazarSquare];
}
impl From<Script> for u16 {
fn from(other: Script) -> Self { other.0 as u16 }
}create_const_array! {
717#[allow(missing_docs)] #[allow(non_upper_case_globals)]
719impl Script {
720 pub const Adlam: Script = Script(167);
721 pub const Ahom: Script = Script(161);
722 pub const AnatolianHieroglyphs: Script = Script(156);
723 pub const Arabic: Script = Script(2);
724 pub const Armenian: Script = Script(3);
725 pub const Avestan: Script = Script(117);
726 pub const Balinese: Script = Script(62);
727 pub const Bamum: Script = Script(130);
728 pub const BassaVah: Script = Script(134);
729 pub const Batak: Script = Script(63);
730 pub const Bengali: Script = Script(4);
731 pub const Bhaiksuki: Script = Script(168);
732 pub const Bopomofo: Script = Script(5);
733 pub const Brahmi: Script = Script(65);
734 pub const Braille: Script = Script(46);
735 pub const Buginese: Script = Script(55);
736 pub const Buhid: Script = Script(44);
737 pub const CanadianAboriginal: Script = Script(40);
738 pub const Carian: Script = Script(104);
739 pub const CaucasianAlbanian: Script = Script(159);
740 pub const Chakma: Script = Script(118);
741 pub const Cham: Script = Script(66);
742 pub const Cherokee: Script = Script(6);
743 pub const Chorasmian: Script = Script(189);
744 pub const Common: Script = Script(0);
745 pub const Coptic: Script = Script(7);
746 pub const Cuneiform: Script = Script(101);
747 pub const Cypriot: Script = Script(47);
748 pub const CyproMinoan: Script = Script(193);
749 pub const Cyrillic: Script = Script(8);
750 pub const Deseret: Script = Script(9);
751 pub const Devanagari: Script = Script(10);
752 pub const DivesAkuru: Script = Script(190);
753 pub const Dogra: Script = Script(178);
754 pub const Duployan: Script = Script(135);
755 pub const EgyptianHieroglyphs: Script = Script(71);
756 pub const Elbasan: Script = Script(136);
757 pub const Elymaic: Script = Script(185);
758 pub const Ethiopian: Script = Script(11);
759 pub const Georgian: Script = Script(12);
760 pub const Glagolitic: Script = Script(56);
761 pub const Gothic: Script = Script(13);
762 pub const Grantha: Script = Script(137);
763 pub const Greek: Script = Script(14);
764 pub const Gujarati: Script = Script(15);
765 pub const GunjalaGondi: Script = Script(179);
766 pub const Gurmukhi: Script = Script(16);
767 pub const Han: Script = Script(17);
768 pub const Hangul: Script = Script(18);
769 pub const HanifiRohingya: Script = Script(182);
770 pub const Hanunoo: Script = Script(43);
771 pub const Hatran: Script = Script(162);
772 pub const Hebrew: Script = Script(19);
773 pub const Hiragana: Script = Script(20);
774 pub const ImperialAramaic: Script = Script(116);
775 pub const Inherited: Script = Script(1);
776 pub const InscriptionalPahlavi: Script = Script(122);
777 pub const InscriptionalParthian: Script = Script(125);
778 pub const Javanese: Script = Script(78);
779 pub const Kaithi: Script = Script(120);
780 pub const Kannada: Script = Script(21);
781 pub const Katakana: Script = Script(22);
782 pub const Kawi: Script = Script(198);
783 pub const KayahLi: Script = Script(79);
784 pub const Kharoshthi: Script = Script(57);
785 pub const KhitanSmallScript: Script = Script(191);
786 pub const Khmer: Script = Script(23);
787 pub const Khojki: Script = Script(157);
788 pub const Khudawadi: Script = Script(145);
789 pub const Lao: Script = Script(24);
790 pub const Latin: Script = Script(25);
791 pub const Lepcha: Script = Script(82);
792 pub const Limbu: Script = Script(48);
793 pub const LinearA: Script = Script(83);
794 pub const LinearB: Script = Script(49);
795 pub const Lisu: Script = Script(131);
796 pub const Lycian: Script = Script(107);
797 pub const Lydian: Script = Script(108);
798 pub const Mahajani: Script = Script(160);
799 pub const Makasar: Script = Script(180);
800 pub const Malayalam: Script = Script(26);
801 pub const Mandaic: Script = Script(84);
802 pub const Manichaean: Script = Script(121);
803 pub const Marchen: Script = Script(169);
804 pub const MasaramGondi: Script = Script(175);
805 pub const Medefaidrin: Script = Script(181);
806 pub const MeeteiMayek: Script = Script(115);
807 pub const MendeKikakui: Script = Script(140);
808 pub const MeroiticCursive: Script = Script(141);
809 pub const MeroiticHieroglyphs: Script = Script(86);
810 pub const Miao: Script = Script(92);
811 pub const Modi: Script = Script(163);
812 pub const Mongolian: Script = Script(27);
813 pub const Mro: Script = Script(149);
814 pub const Multani: Script = Script(164);
815 pub const Myanmar: Script = Script(28);
816 pub const Nabataean: Script = Script(143);
817 pub const NagMundari: Script = Script(199);
818 pub const Nandinagari: Script = Script(187);
819 pub const Nastaliq: Script = Script(200);
820 pub const NewTaiLue: Script = Script(59);
821 pub const Newa: Script = Script(170);
822 pub const Nko: Script = Script(87);
823 pub const Nushu: Script = Script(150);
824 pub const NyiakengPuachueHmong: Script = Script(186);
825 pub const Ogham: Script = Script(29);
826 pub const OlChiki: Script = Script(109);
827 pub const OldHungarian: Script = Script(76);
828 pub const OldItalic: Script = Script(30);
829 pub const OldNorthArabian: Script = Script(142);
830 pub const OldPermic: Script = Script(89);
831 pub const OldPersian: Script = Script(61);
832 pub const OldSogdian: Script = Script(184);
833 pub const OldSouthArabian: Script = Script(133);
834 pub const OldTurkic: Script = Script(88);
835 pub const OldUyghur: Script = Script(194);
836 pub const Oriya: Script = Script(31);
837 pub const Osage: Script = Script(171);
838 pub const Osmanya: Script = Script(50);
839 pub const PahawhHmong: Script = Script(75);
840 pub const Palmyrene: Script = Script(144);
841 pub const PauCinHau: Script = Script(165);
842 pub const PhagsPa: Script = Script(90);
843 pub const Phoenician: Script = Script(91);
844 pub const PsalterPahlavi: Script = Script(123);
845 pub const Rejang: Script = Script(110);
846 pub const Runic: Script = Script(32);
847 pub const Samaritan: Script = Script(126);
848 pub const Saurashtra: Script = Script(111);
849 pub const Sharada: Script = Script(151);
850 pub const Shavian: Script = Script(51);
851 pub const Siddham: Script = Script(166);
852 pub const SignWriting: Script = Script(112);
853 pub const Sinhala: Script = Script(33);
854 pub const Sogdian: Script = Script(183);
855 pub const SoraSompeng: Script = Script(152);
856 pub const Soyombo: Script = Script(176);
857 pub const Sundanese: Script = Script(113);
858 pub const SylotiNagri: Script = Script(58);
859 pub const Syriac: Script = Script(34);
860 pub const Tagalog: Script = Script(42);
861 pub const Tagbanwa: Script = Script(45);
862 pub const TaiLe: Script = Script(52);
863 pub const TaiTham: Script = Script(106);
864 pub const TaiViet: Script = Script(127);
865 pub const Takri: Script = Script(153);
866 pub const Tamil: Script = Script(35);
867 pub const Tangsa: Script = Script(195);
868 pub const Tangut: Script = Script(154);
869 pub const Telugu: Script = Script(36);
870 pub const Thaana: Script = Script(37);
871 pub const Thai: Script = Script(38);
872 pub const Tibetan: Script = Script(39);
873 pub const Tifinagh: Script = Script(60);
874 pub const Tirhuta: Script = Script(158);
875 pub const Toto: Script = Script(196);
876 pub const Ugaritic: Script = Script(53);
877 pub const Unknown: Script = Script(103);
878 pub const Vai: Script = Script(99);
879 pub const Vithkuqi: Script = Script(197);
880 pub const Wancho: Script = Script(188);
881 pub const WarangCiti: Script = Script(146);
882 pub const Yezidi: Script = Script(192);
883 pub const Yi: Script = Script(41);
884 pub const ZanabazarSquare: Script = Script(177);
885}
886}
887
888impl crate::private::Sealed for Script {}
impl EnumeratedProperty for Script {
type DataMarker = crate::provider::PropertyEnumScriptV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_SCRIPT_V1;
const NAME: &'static [u8] = "Script".as_bytes();
const SHORT_NAME: &'static [u8] = "sc".as_bytes();
}
impl zerovec::ule::AsULE for Script {
type ULE = <u16 as zerovec::ule::AsULE>::ULE;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
889 name: "Script";
890 short_name: "sc";
891 ident: Script;
892 data_marker: crate::provider::PropertyEnumScriptV1;
893 singleton: SINGLETON_PROPERTY_ENUM_SCRIPT_V1;
894 ule_ty: <u16 as zerovec::ule::AsULE>::ULE;
895}
896
897)]
919#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
920#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
922pub struct HangulSyllableType(pub(crate) u8);
923
924impl HangulSyllableType {
925 pub const fn to_icu4c_value(self) -> u8 {
927 self.0
928 }
929 pub const fn from_icu4c_value(value: u8) -> Self {
931 Self(value)
932 }
933}
934
935#[allow(non_upper_case_globals)]
impl HangulSyllableType {
#[doc = r" (`NA`) not applicable (e.g. not a Hangul code point)."]
pub const NotApplicable: HangulSyllableType = HangulSyllableType(0);
#[doc = r" (`L`) a conjoining leading consonant Jamo."]
pub const LeadingJamo: HangulSyllableType = HangulSyllableType(1);
#[doc = r" (`V`) a conjoining vowel Jamo."]
pub const VowelJamo: HangulSyllableType = HangulSyllableType(2);
#[doc = r" (`T`) a conjoining trailing consonant Jamo."]
pub const TrailingJamo: HangulSyllableType = HangulSyllableType(3);
#[doc =
r" (`LV`) a precomposed syllable with a leading consonant and a vowel."]
pub const LeadingVowelSyllable: HangulSyllableType =
HangulSyllableType(4);
#[doc =
r" (`LVT`) a precomposed syllable with a leading consonant, a vowel, and a trailing consonant."]
pub const LeadingVowelTrailingSyllable: HangulSyllableType =
HangulSyllableType(5);
pub const ALL_VALUES: &'static [HangulSyllableType] =
&[HangulSyllableType::NotApplicable, HangulSyllableType::LeadingJamo,
HangulSyllableType::VowelJamo,
HangulSyllableType::TrailingJamo,
HangulSyllableType::LeadingVowelSyllable,
HangulSyllableType::LeadingVowelTrailingSyllable];
}
impl From<HangulSyllableType> for u16 {
fn from(other: HangulSyllableType) -> Self { other.0 as u16 }
}create_const_array! {
936#[allow(non_upper_case_globals)]
937impl HangulSyllableType {
938 pub const NotApplicable: HangulSyllableType = HangulSyllableType(0);
940 pub const LeadingJamo: HangulSyllableType = HangulSyllableType(1);
942 pub const VowelJamo: HangulSyllableType = HangulSyllableType(2);
944 pub const TrailingJamo: HangulSyllableType = HangulSyllableType(3);
946 pub const LeadingVowelSyllable: HangulSyllableType = HangulSyllableType(4);
948 pub const LeadingVowelTrailingSyllable: HangulSyllableType = HangulSyllableType(5);
950}
951}
952
953impl crate::private::Sealed for HangulSyllableType {}
impl EnumeratedProperty for HangulSyllableType {
type DataMarker = crate::provider::PropertyEnumHangulSyllableTypeV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_HANGUL_SYLLABLE_TYPE_V1;
const NAME: &'static [u8] = "Hangul_Syllable_Type".as_bytes();
const SHORT_NAME: &'static [u8] = "hst".as_bytes();
}
impl zerovec::ule::AsULE for HangulSyllableType {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
954 name: "Hangul_Syllable_Type";
955 short_name: "hst";
956 ident: HangulSyllableType;
957 data_marker: crate::provider::PropertyEnumHangulSyllableTypeV1;
958 singleton: SINGLETON_PROPERTY_ENUM_HANGUL_SYLLABLE_TYPE_V1;
959 ule_ty: u8;
960
961}
962
963)]
983#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
984#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
986pub struct EastAsianWidth(pub(crate) u8);
987
988impl EastAsianWidth {
989 pub const fn to_icu4c_value(self) -> u8 {
991 self.0
992 }
993 pub const fn from_icu4c_value(value: u8) -> Self {
995 Self(value)
996 }
997}
998
999#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl EastAsianWidth {
pub const Neutral: EastAsianWidth = EastAsianWidth(0);
pub const Ambiguous: EastAsianWidth = EastAsianWidth(1);
pub const Halfwidth: EastAsianWidth = EastAsianWidth(2);
pub const Fullwidth: EastAsianWidth = EastAsianWidth(3);
pub const Narrow: EastAsianWidth = EastAsianWidth(4);
pub const Wide: EastAsianWidth = EastAsianWidth(5);
pub const ALL_VALUES: &'static [EastAsianWidth] =
&[EastAsianWidth::Neutral, EastAsianWidth::Ambiguous,
EastAsianWidth::Halfwidth, EastAsianWidth::Fullwidth,
EastAsianWidth::Narrow, EastAsianWidth::Wide];
}
impl From<EastAsianWidth> for u16 {
fn from(other: EastAsianWidth) -> Self { other.0 as u16 }
}create_const_array! {
1000#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1002impl EastAsianWidth {
1003 pub const Neutral: EastAsianWidth = EastAsianWidth(0); pub const Ambiguous: EastAsianWidth = EastAsianWidth(1); pub const Halfwidth: EastAsianWidth = EastAsianWidth(2); pub const Fullwidth: EastAsianWidth = EastAsianWidth(3); pub const Narrow: EastAsianWidth = EastAsianWidth(4); pub const Wide: EastAsianWidth = EastAsianWidth(5); }
1010}
1011
1012impl crate::private::Sealed for EastAsianWidth {}
impl EnumeratedProperty for EastAsianWidth {
type DataMarker = crate::provider::PropertyEnumEastAsianWidthV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_EAST_ASIAN_WIDTH_V1;
const NAME: &'static [u8] = "East_Asian_Width".as_bytes();
const SHORT_NAME: &'static [u8] = "ea".as_bytes();
}
impl zerovec::ule::AsULE for EastAsianWidth {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
1013 name: "East_Asian_Width";
1014 short_name: "ea";
1015 ident: EastAsianWidth;
1016 data_marker: crate::provider::PropertyEnumEastAsianWidthV1;
1017 singleton: SINGLETON_PROPERTY_ENUM_EAST_ASIAN_WIDTH_V1;
1018 ule_ty: u8;
1019}
1020
1021)]
1045#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1046#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1048pub struct LineBreak(pub(crate) u8);
1049
1050impl LineBreak {
1051 pub const fn to_icu4c_value(self) -> u8 {
1053 self.0
1054 }
1055 pub const fn from_icu4c_value(value: u8) -> Self {
1057 Self(value)
1058 }
1059}
1060
1061#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl LineBreak {
pub const Unknown: LineBreak = LineBreak(0);
pub const Ambiguous: LineBreak = LineBreak(1);
pub const Alphabetic: LineBreak = LineBreak(2);
pub const BreakBoth: LineBreak = LineBreak(3);
pub const BreakAfter: LineBreak = LineBreak(4);
pub const BreakBefore: LineBreak = LineBreak(5);
pub const MandatoryBreak: LineBreak = LineBreak(6);
pub const ContingentBreak: LineBreak = LineBreak(7);
pub const ClosePunctuation: LineBreak = LineBreak(8);
pub const CombiningMark: LineBreak = LineBreak(9);
pub const CarriageReturn: LineBreak = LineBreak(10);
pub const Exclamation: LineBreak = LineBreak(11);
pub const Glue: LineBreak = LineBreak(12);
pub const Hyphen: LineBreak = LineBreak(13);
pub const Ideographic: LineBreak = LineBreak(14);
pub const Inseparable: LineBreak = LineBreak(15);
pub const InfixNumeric: LineBreak = LineBreak(16);
pub const LineFeed: LineBreak = LineBreak(17);
pub const Nonstarter: LineBreak = LineBreak(18);
pub const Numeric: LineBreak = LineBreak(19);
pub const OpenPunctuation: LineBreak = LineBreak(20);
pub const PostfixNumeric: LineBreak = LineBreak(21);
pub const PrefixNumeric: LineBreak = LineBreak(22);
pub const Quotation: LineBreak = LineBreak(23);
pub const ComplexContext: LineBreak = LineBreak(24);
pub const Surrogate: LineBreak = LineBreak(25);
pub const Space: LineBreak = LineBreak(26);
pub const BreakSymbols: LineBreak = LineBreak(27);
pub const ZWSpace: LineBreak = LineBreak(28);
pub const NextLine: LineBreak = LineBreak(29);
pub const WordJoiner: LineBreak = LineBreak(30);
pub const H2: LineBreak = LineBreak(31);
pub const H3: LineBreak = LineBreak(32);
pub const JL: LineBreak = LineBreak(33);
pub const JT: LineBreak = LineBreak(34);
pub const JV: LineBreak = LineBreak(35);
pub const CloseParenthesis: LineBreak = LineBreak(36);
pub const ConditionalJapaneseStarter: LineBreak = LineBreak(37);
pub const HebrewLetter: LineBreak = LineBreak(38);
pub const RegionalIndicator: LineBreak = LineBreak(39);
pub const EBase: LineBreak = LineBreak(40);
pub const EModifier: LineBreak = LineBreak(41);
pub const ZWJ: LineBreak = LineBreak(42);
pub const Aksara: LineBreak = LineBreak(43);
pub const AksaraPrebase: LineBreak = LineBreak(44);
pub const AksaraStart: LineBreak = LineBreak(45);
pub const ViramaFinal: LineBreak = LineBreak(46);
pub const Virama: LineBreak = LineBreak(47);
pub const ALL_VALUES: &'static [LineBreak] =
&[LineBreak::Unknown, LineBreak::Ambiguous, LineBreak::Alphabetic,
LineBreak::BreakBoth, LineBreak::BreakAfter,
LineBreak::BreakBefore, LineBreak::MandatoryBreak,
LineBreak::ContingentBreak, LineBreak::ClosePunctuation,
LineBreak::CombiningMark, LineBreak::CarriageReturn,
LineBreak::Exclamation, LineBreak::Glue, LineBreak::Hyphen,
LineBreak::Ideographic, LineBreak::Inseparable,
LineBreak::InfixNumeric, LineBreak::LineFeed,
LineBreak::Nonstarter, LineBreak::Numeric,
LineBreak::OpenPunctuation, LineBreak::PostfixNumeric,
LineBreak::PrefixNumeric, LineBreak::Quotation,
LineBreak::ComplexContext, LineBreak::Surrogate,
LineBreak::Space, LineBreak::BreakSymbols,
LineBreak::ZWSpace, LineBreak::NextLine,
LineBreak::WordJoiner, LineBreak::H2, LineBreak::H3,
LineBreak::JL, LineBreak::JT, LineBreak::JV,
LineBreak::CloseParenthesis,
LineBreak::ConditionalJapaneseStarter,
LineBreak::HebrewLetter, LineBreak::RegionalIndicator,
LineBreak::EBase, LineBreak::EModifier, LineBreak::ZWJ,
LineBreak::Aksara, LineBreak::AksaraPrebase,
LineBreak::AksaraStart, LineBreak::ViramaFinal,
LineBreak::Virama];
}
impl From<LineBreak> for u16 {
fn from(other: LineBreak) -> Self { other.0 as u16 }
}create_const_array! {
1062#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1064impl LineBreak {
1065 pub const Unknown: LineBreak = LineBreak(0); pub const Ambiguous: LineBreak = LineBreak(1); pub const Alphabetic: LineBreak = LineBreak(2); pub const BreakBoth: LineBreak = LineBreak(3); pub const BreakAfter: LineBreak = LineBreak(4); pub const BreakBefore: LineBreak = LineBreak(5); pub const MandatoryBreak: LineBreak = LineBreak(6); pub const ContingentBreak: LineBreak = LineBreak(7); pub const ClosePunctuation: LineBreak = LineBreak(8); pub const CombiningMark: LineBreak = LineBreak(9); pub const CarriageReturn: LineBreak = LineBreak(10); pub const Exclamation: LineBreak = LineBreak(11); pub const Glue: LineBreak = LineBreak(12); pub const Hyphen: LineBreak = LineBreak(13); pub const Ideographic: LineBreak = LineBreak(14); pub const Inseparable: LineBreak = LineBreak(15); pub const InfixNumeric: LineBreak = LineBreak(16); pub const LineFeed: LineBreak = LineBreak(17); pub const Nonstarter: LineBreak = LineBreak(18); pub const Numeric: LineBreak = LineBreak(19); pub const OpenPunctuation: LineBreak = LineBreak(20); pub const PostfixNumeric: LineBreak = LineBreak(21); pub const PrefixNumeric: LineBreak = LineBreak(22); pub const Quotation: LineBreak = LineBreak(23); pub const ComplexContext: LineBreak = LineBreak(24); pub const Surrogate: LineBreak = LineBreak(25); pub const Space: LineBreak = LineBreak(26); pub const BreakSymbols: LineBreak = LineBreak(27); pub const ZWSpace: LineBreak = LineBreak(28); pub const NextLine: LineBreak = LineBreak(29); pub const WordJoiner: LineBreak = LineBreak(30); pub const H2: LineBreak = LineBreak(31); pub const H3: LineBreak = LineBreak(32); pub const JL: LineBreak = LineBreak(33); pub const JT: LineBreak = LineBreak(34); pub const JV: LineBreak = LineBreak(35); pub const CloseParenthesis: LineBreak = LineBreak(36); pub const ConditionalJapaneseStarter: LineBreak = LineBreak(37); pub const HebrewLetter: LineBreak = LineBreak(38); pub const RegionalIndicator: LineBreak = LineBreak(39); pub const EBase: LineBreak = LineBreak(40); pub const EModifier: LineBreak = LineBreak(41); pub const ZWJ: LineBreak = LineBreak(42); pub const Aksara: LineBreak = LineBreak(43); pub const AksaraPrebase: LineBreak = LineBreak(44); pub const AksaraStart: LineBreak = LineBreak(45); pub const ViramaFinal: LineBreak = LineBreak(46); pub const Virama: LineBreak = LineBreak(47); }
1116}
1117
1118impl crate::private::Sealed for LineBreak {}
impl EnumeratedProperty for LineBreak {
type DataMarker = crate::provider::PropertyEnumLineBreakV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_LINE_BREAK_V1;
const NAME: &'static [u8] = "Line_Break".as_bytes();
const SHORT_NAME: &'static [u8] = "lb".as_bytes();
}
impl zerovec::ule::AsULE for LineBreak {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
1119 name: "Line_Break";
1120 short_name: "lb";
1121 ident: LineBreak;
1122 data_marker: crate::provider::PropertyEnumLineBreakV1;
1123 singleton: SINGLETON_PROPERTY_ENUM_LINE_BREAK_V1;
1124 ule_ty: u8;
1125}
1126
1127)]
1150#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1151#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1153pub struct GraphemeClusterBreak(pub(crate) u8);
1154
1155impl GraphemeClusterBreak {
1156 pub const fn to_icu4c_value(self) -> u8 {
1158 self.0
1159 }
1160 pub const fn from_icu4c_value(value: u8) -> Self {
1162 Self(value)
1163 }
1164}
1165
1166#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl GraphemeClusterBreak {
pub const Other: GraphemeClusterBreak = GraphemeClusterBreak(0);
pub const Control: GraphemeClusterBreak = GraphemeClusterBreak(1);
pub const CR: GraphemeClusterBreak = GraphemeClusterBreak(2);
pub const Extend: GraphemeClusterBreak = GraphemeClusterBreak(3);
pub const L: GraphemeClusterBreak = GraphemeClusterBreak(4);
pub const LF: GraphemeClusterBreak = GraphemeClusterBreak(5);
pub const LV: GraphemeClusterBreak = GraphemeClusterBreak(6);
pub const LVT: GraphemeClusterBreak = GraphemeClusterBreak(7);
pub const T: GraphemeClusterBreak = GraphemeClusterBreak(8);
pub const V: GraphemeClusterBreak = GraphemeClusterBreak(9);
pub const SpacingMark: GraphemeClusterBreak = GraphemeClusterBreak(10);
pub const Prepend: GraphemeClusterBreak = GraphemeClusterBreak(11);
pub const RegionalIndicator: GraphemeClusterBreak =
GraphemeClusterBreak(12);
#[doc = r" This value is obsolete and unused."]
pub const EBase: GraphemeClusterBreak = GraphemeClusterBreak(13);
#[doc = r" This value is obsolete and unused."]
pub const EBaseGAZ: GraphemeClusterBreak = GraphemeClusterBreak(14);
#[doc = r" This value is obsolete and unused."]
pub const EModifier: GraphemeClusterBreak = GraphemeClusterBreak(15);
#[doc = r" This value is obsolete and unused."]
pub const GlueAfterZwj: GraphemeClusterBreak = GraphemeClusterBreak(16);
pub const ZWJ: GraphemeClusterBreak = GraphemeClusterBreak(17);
pub const ALL_VALUES: &'static [GraphemeClusterBreak] =
&[GraphemeClusterBreak::Other, GraphemeClusterBreak::Control,
GraphemeClusterBreak::CR, GraphemeClusterBreak::Extend,
GraphemeClusterBreak::L, GraphemeClusterBreak::LF,
GraphemeClusterBreak::LV, GraphemeClusterBreak::LVT,
GraphemeClusterBreak::T, GraphemeClusterBreak::V,
GraphemeClusterBreak::SpacingMark,
GraphemeClusterBreak::Prepend,
GraphemeClusterBreak::RegionalIndicator,
GraphemeClusterBreak::EBase, GraphemeClusterBreak::EBaseGAZ,
GraphemeClusterBreak::EModifier,
GraphemeClusterBreak::GlueAfterZwj,
GraphemeClusterBreak::ZWJ];
}
impl From<GraphemeClusterBreak> for u16 {
fn from(other: GraphemeClusterBreak) -> Self { other.0 as u16 }
}create_const_array! {
1167#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1169impl GraphemeClusterBreak {
1170 pub const Other: GraphemeClusterBreak = GraphemeClusterBreak(0); pub const Control: GraphemeClusterBreak = GraphemeClusterBreak(1); pub const CR: GraphemeClusterBreak = GraphemeClusterBreak(2); pub const Extend: GraphemeClusterBreak = GraphemeClusterBreak(3); pub const L: GraphemeClusterBreak = GraphemeClusterBreak(4); pub const LF: GraphemeClusterBreak = GraphemeClusterBreak(5); pub const LV: GraphemeClusterBreak = GraphemeClusterBreak(6); pub const LVT: GraphemeClusterBreak = GraphemeClusterBreak(7); pub const T: GraphemeClusterBreak = GraphemeClusterBreak(8); pub const V: GraphemeClusterBreak = GraphemeClusterBreak(9); pub const SpacingMark: GraphemeClusterBreak = GraphemeClusterBreak(10); pub const Prepend: GraphemeClusterBreak = GraphemeClusterBreak(11); pub const RegionalIndicator: GraphemeClusterBreak = GraphemeClusterBreak(12); pub const EBase: GraphemeClusterBreak = GraphemeClusterBreak(13); pub const EBaseGAZ: GraphemeClusterBreak = GraphemeClusterBreak(14); pub const EModifier: GraphemeClusterBreak = GraphemeClusterBreak(15); pub const GlueAfterZwj: GraphemeClusterBreak = GraphemeClusterBreak(16); pub const ZWJ: GraphemeClusterBreak = GraphemeClusterBreak(17); }
1193}
1194
1195impl crate::private::Sealed for GraphemeClusterBreak {}
impl EnumeratedProperty for GraphemeClusterBreak {
type DataMarker = crate::provider::PropertyEnumGraphemeClusterBreakV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_GRAPHEME_CLUSTER_BREAK_V1;
const NAME: &'static [u8] = "Grapheme_Cluster_Break".as_bytes();
const SHORT_NAME: &'static [u8] = "GCB".as_bytes();
}
impl zerovec::ule::AsULE for GraphemeClusterBreak {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
1196 name: "Grapheme_Cluster_Break";
1197 short_name: "GCB";
1198 ident: GraphemeClusterBreak;
1199 data_marker: crate::provider::PropertyEnumGraphemeClusterBreakV1;
1200 singleton: SINGLETON_PROPERTY_ENUM_GRAPHEME_CLUSTER_BREAK_V1;
1201 ule_ty: u8;
1202}
1203
1204)]
1227#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1228#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1230pub struct WordBreak(pub(crate) u8);
1231
1232impl WordBreak {
1233 pub const fn to_icu4c_value(self) -> u8 {
1235 self.0
1236 }
1237 pub const fn from_icu4c_value(value: u8) -> Self {
1239 Self(value)
1240 }
1241}
1242
1243#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl WordBreak {
pub const Other: WordBreak = WordBreak(0);
pub const ALetter: WordBreak = WordBreak(1);
pub const Format: WordBreak = WordBreak(2);
pub const Katakana: WordBreak = WordBreak(3);
pub const MidLetter: WordBreak = WordBreak(4);
pub const MidNum: WordBreak = WordBreak(5);
pub const Numeric: WordBreak = WordBreak(6);
pub const ExtendNumLet: WordBreak = WordBreak(7);
pub const CR: WordBreak = WordBreak(8);
pub const Extend: WordBreak = WordBreak(9);
pub const LF: WordBreak = WordBreak(10);
pub const MidNumLet: WordBreak = WordBreak(11);
pub const Newline: WordBreak = WordBreak(12);
pub const RegionalIndicator: WordBreak = WordBreak(13);
pub const HebrewLetter: WordBreak = WordBreak(14);
pub const SingleQuote: WordBreak = WordBreak(15);
pub const DoubleQuote: WordBreak = WordBreak(16);
#[doc = r" This value is obsolete and unused."]
pub const EBase: WordBreak = WordBreak(17);
#[doc = r" This value is obsolete and unused."]
pub const EBaseGAZ: WordBreak = WordBreak(18);
#[doc = r" This value is obsolete and unused."]
pub const EModifier: WordBreak = WordBreak(19);
#[doc = r" This value is obsolete and unused."]
pub const GlueAfterZwj: WordBreak = WordBreak(20);
pub const ZWJ: WordBreak = WordBreak(21);
pub const WSegSpace: WordBreak = WordBreak(22);
pub const ALL_VALUES: &'static [WordBreak] =
&[WordBreak::Other, WordBreak::ALetter, WordBreak::Format,
WordBreak::Katakana, WordBreak::MidLetter,
WordBreak::MidNum, WordBreak::Numeric,
WordBreak::ExtendNumLet, WordBreak::CR, WordBreak::Extend,
WordBreak::LF, WordBreak::MidNumLet, WordBreak::Newline,
WordBreak::RegionalIndicator, WordBreak::HebrewLetter,
WordBreak::SingleQuote, WordBreak::DoubleQuote,
WordBreak::EBase, WordBreak::EBaseGAZ, WordBreak::EModifier,
WordBreak::GlueAfterZwj, WordBreak::ZWJ,
WordBreak::WSegSpace];
}
impl From<WordBreak> for u16 {
fn from(other: WordBreak) -> Self { other.0 as u16 }
}create_const_array! {
1244#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1246impl WordBreak {
1247 pub const Other: WordBreak = WordBreak(0); pub const ALetter: WordBreak = WordBreak(1); pub const Format: WordBreak = WordBreak(2); pub const Katakana: WordBreak = WordBreak(3); pub const MidLetter: WordBreak = WordBreak(4); pub const MidNum: WordBreak = WordBreak(5); pub const Numeric: WordBreak = WordBreak(6); pub const ExtendNumLet: WordBreak = WordBreak(7); pub const CR: WordBreak = WordBreak(8); pub const Extend: WordBreak = WordBreak(9); pub const LF: WordBreak = WordBreak(10); pub const MidNumLet: WordBreak = WordBreak(11); pub const Newline: WordBreak = WordBreak(12); pub const RegionalIndicator: WordBreak = WordBreak(13); pub const HebrewLetter: WordBreak = WordBreak(14); pub const SingleQuote: WordBreak = WordBreak(15); pub const DoubleQuote: WordBreak = WordBreak(16); pub const EBase: WordBreak = WordBreak(17); pub const EBaseGAZ: WordBreak = WordBreak(18); pub const EModifier: WordBreak = WordBreak(19); pub const GlueAfterZwj: WordBreak = WordBreak(20); pub const ZWJ: WordBreak = WordBreak(21); pub const WSegSpace: WordBreak = WordBreak(22); }
1275}
1276
1277impl crate::private::Sealed for WordBreak {}
impl EnumeratedProperty for WordBreak {
type DataMarker = crate::provider::PropertyEnumWordBreakV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_WORD_BREAK_V1;
const NAME: &'static [u8] = "Word_Break".as_bytes();
const SHORT_NAME: &'static [u8] = "WB".as_bytes();
}
impl zerovec::ule::AsULE for WordBreak {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
1278 name: "Word_Break";
1279 short_name: "WB";
1280 ident: WordBreak;
1281 data_marker: crate::provider::PropertyEnumWordBreakV1;
1282 singleton: SINGLETON_PROPERTY_ENUM_WORD_BREAK_V1;
1283 ule_ty: u8;
1284}
1285
1286)]
1309#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1310#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1312pub struct SentenceBreak(pub(crate) u8);
1313
1314impl SentenceBreak {
1315 pub const fn to_icu4c_value(self) -> u8 {
1317 self.0
1318 }
1319 pub const fn from_icu4c_value(value: u8) -> Self {
1321 Self(value)
1322 }
1323}
1324
1325#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl SentenceBreak {
pub const Other: SentenceBreak = SentenceBreak(0);
pub const ATerm: SentenceBreak = SentenceBreak(1);
pub const Close: SentenceBreak = SentenceBreak(2);
pub const Format: SentenceBreak = SentenceBreak(3);
pub const Lower: SentenceBreak = SentenceBreak(4);
pub const Numeric: SentenceBreak = SentenceBreak(5);
pub const OLetter: SentenceBreak = SentenceBreak(6);
pub const Sep: SentenceBreak = SentenceBreak(7);
pub const Sp: SentenceBreak = SentenceBreak(8);
pub const STerm: SentenceBreak = SentenceBreak(9);
pub const Upper: SentenceBreak = SentenceBreak(10);
pub const CR: SentenceBreak = SentenceBreak(11);
pub const Extend: SentenceBreak = SentenceBreak(12);
pub const LF: SentenceBreak = SentenceBreak(13);
pub const SContinue: SentenceBreak = SentenceBreak(14);
pub const ALL_VALUES: &'static [SentenceBreak] =
&[SentenceBreak::Other, SentenceBreak::ATerm, SentenceBreak::Close,
SentenceBreak::Format, SentenceBreak::Lower,
SentenceBreak::Numeric, SentenceBreak::OLetter,
SentenceBreak::Sep, SentenceBreak::Sp, SentenceBreak::STerm,
SentenceBreak::Upper, SentenceBreak::CR,
SentenceBreak::Extend, SentenceBreak::LF,
SentenceBreak::SContinue];
}
impl From<SentenceBreak> for u16 {
fn from(other: SentenceBreak) -> Self { other.0 as u16 }
}create_const_array! {
1326#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1328impl SentenceBreak {
1329 pub const Other: SentenceBreak = SentenceBreak(0); pub const ATerm: SentenceBreak = SentenceBreak(1); pub const Close: SentenceBreak = SentenceBreak(2); pub const Format: SentenceBreak = SentenceBreak(3); pub const Lower: SentenceBreak = SentenceBreak(4); pub const Numeric: SentenceBreak = SentenceBreak(5); pub const OLetter: SentenceBreak = SentenceBreak(6); pub const Sep: SentenceBreak = SentenceBreak(7); pub const Sp: SentenceBreak = SentenceBreak(8); pub const STerm: SentenceBreak = SentenceBreak(9); pub const Upper: SentenceBreak = SentenceBreak(10); pub const CR: SentenceBreak = SentenceBreak(11); pub const Extend: SentenceBreak = SentenceBreak(12); pub const LF: SentenceBreak = SentenceBreak(13); pub const SContinue: SentenceBreak = SentenceBreak(14); }
1345}
1346
1347impl crate::private::Sealed for SentenceBreak {}
impl EnumeratedProperty for SentenceBreak {
type DataMarker = crate::provider::PropertyEnumSentenceBreakV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_SENTENCE_BREAK_V1;
const NAME: &'static [u8] = "Sentence_Break".as_bytes();
const SHORT_NAME: &'static [u8] = "SB".as_bytes();
}
impl zerovec::ule::AsULE for SentenceBreak {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
1348 name: "Sentence_Break";
1349 short_name: "SB";
1350 ident: SentenceBreak;
1351 data_marker: crate::provider::PropertyEnumSentenceBreakV1;
1352 singleton: SINGLETON_PROPERTY_ENUM_SENTENCE_BREAK_V1;
1353 ule_ty: u8;
1354}
1355
1356)]
1386#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1387#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1389pub struct CanonicalCombiningClass(pub(crate) u8);
1390
1391impl CanonicalCombiningClass {
1392 pub const fn to_icu4c_value(self) -> u8 {
1394 self.0
1395 }
1396 pub const fn from_icu4c_value(value: u8) -> Self {
1398 Self(value)
1399 }
1400}
1401
1402#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl CanonicalCombiningClass {
pub const NotReordered: CanonicalCombiningClass =
CanonicalCombiningClass(0);
pub const Overlay: CanonicalCombiningClass = CanonicalCombiningClass(1);
pub const HanReading: CanonicalCombiningClass =
CanonicalCombiningClass(6);
pub const Nukta: CanonicalCombiningClass = CanonicalCombiningClass(7);
pub const KanaVoicing: CanonicalCombiningClass =
CanonicalCombiningClass(8);
pub const Virama: CanonicalCombiningClass = CanonicalCombiningClass(9);
pub const CCC10: CanonicalCombiningClass = CanonicalCombiningClass(10);
pub const CCC11: CanonicalCombiningClass = CanonicalCombiningClass(11);
pub const CCC12: CanonicalCombiningClass = CanonicalCombiningClass(12);
pub const CCC13: CanonicalCombiningClass = CanonicalCombiningClass(13);
pub const CCC14: CanonicalCombiningClass = CanonicalCombiningClass(14);
pub const CCC15: CanonicalCombiningClass = CanonicalCombiningClass(15);
pub const CCC16: CanonicalCombiningClass = CanonicalCombiningClass(16);
pub const CCC17: CanonicalCombiningClass = CanonicalCombiningClass(17);
pub const CCC18: CanonicalCombiningClass = CanonicalCombiningClass(18);
pub const CCC19: CanonicalCombiningClass = CanonicalCombiningClass(19);
pub const CCC20: CanonicalCombiningClass = CanonicalCombiningClass(20);
pub const CCC21: CanonicalCombiningClass = CanonicalCombiningClass(21);
pub const CCC22: CanonicalCombiningClass = CanonicalCombiningClass(22);
pub const CCC23: CanonicalCombiningClass = CanonicalCombiningClass(23);
pub const CCC24: CanonicalCombiningClass = CanonicalCombiningClass(24);
pub const CCC25: CanonicalCombiningClass = CanonicalCombiningClass(25);
pub const CCC26: CanonicalCombiningClass = CanonicalCombiningClass(26);
pub const CCC27: CanonicalCombiningClass = CanonicalCombiningClass(27);
pub const CCC28: CanonicalCombiningClass = CanonicalCombiningClass(28);
pub const CCC29: CanonicalCombiningClass = CanonicalCombiningClass(29);
pub const CCC30: CanonicalCombiningClass = CanonicalCombiningClass(30);
pub const CCC31: CanonicalCombiningClass = CanonicalCombiningClass(31);
pub const CCC32: CanonicalCombiningClass = CanonicalCombiningClass(32);
pub const CCC33: CanonicalCombiningClass = CanonicalCombiningClass(33);
pub const CCC34: CanonicalCombiningClass = CanonicalCombiningClass(34);
pub const CCC35: CanonicalCombiningClass = CanonicalCombiningClass(35);
pub const CCC36: CanonicalCombiningClass = CanonicalCombiningClass(36);
pub const CCC84: CanonicalCombiningClass = CanonicalCombiningClass(84);
pub const CCC91: CanonicalCombiningClass = CanonicalCombiningClass(91);
pub const CCC103: CanonicalCombiningClass = CanonicalCombiningClass(103);
pub const CCC107: CanonicalCombiningClass = CanonicalCombiningClass(107);
pub const CCC118: CanonicalCombiningClass = CanonicalCombiningClass(118);
pub const CCC122: CanonicalCombiningClass = CanonicalCombiningClass(122);
pub const CCC129: CanonicalCombiningClass = CanonicalCombiningClass(129);
pub const CCC130: CanonicalCombiningClass = CanonicalCombiningClass(130);
pub const CCC132: CanonicalCombiningClass = CanonicalCombiningClass(132);
pub const CCC133: CanonicalCombiningClass = CanonicalCombiningClass(133);
pub const AttachedBelowLeft: CanonicalCombiningClass =
CanonicalCombiningClass(200);
pub const AttachedBelow: CanonicalCombiningClass =
CanonicalCombiningClass(202);
pub const AttachedAbove: CanonicalCombiningClass =
CanonicalCombiningClass(214);
pub const AttachedAboveRight: CanonicalCombiningClass =
CanonicalCombiningClass(216);
pub const BelowLeft: CanonicalCombiningClass =
CanonicalCombiningClass(218);
pub const Below: CanonicalCombiningClass = CanonicalCombiningClass(220);
pub const BelowRight: CanonicalCombiningClass =
CanonicalCombiningClass(222);
pub const Left: CanonicalCombiningClass = CanonicalCombiningClass(224);
pub const Right: CanonicalCombiningClass = CanonicalCombiningClass(226);
pub const AboveLeft: CanonicalCombiningClass =
CanonicalCombiningClass(228);
pub const Above: CanonicalCombiningClass = CanonicalCombiningClass(230);
pub const AboveRight: CanonicalCombiningClass =
CanonicalCombiningClass(232);
pub const DoubleBelow: CanonicalCombiningClass =
CanonicalCombiningClass(233);
pub const DoubleAbove: CanonicalCombiningClass =
CanonicalCombiningClass(234);
pub const IotaSubscript: CanonicalCombiningClass =
CanonicalCombiningClass(240);
pub const ALL_VALUES: &'static [CanonicalCombiningClass] =
&[CanonicalCombiningClass::NotReordered,
CanonicalCombiningClass::Overlay,
CanonicalCombiningClass::HanReading,
CanonicalCombiningClass::Nukta,
CanonicalCombiningClass::KanaVoicing,
CanonicalCombiningClass::Virama,
CanonicalCombiningClass::CCC10,
CanonicalCombiningClass::CCC11,
CanonicalCombiningClass::CCC12,
CanonicalCombiningClass::CCC13,
CanonicalCombiningClass::CCC14,
CanonicalCombiningClass::CCC15,
CanonicalCombiningClass::CCC16,
CanonicalCombiningClass::CCC17,
CanonicalCombiningClass::CCC18,
CanonicalCombiningClass::CCC19,
CanonicalCombiningClass::CCC20,
CanonicalCombiningClass::CCC21,
CanonicalCombiningClass::CCC22,
CanonicalCombiningClass::CCC23,
CanonicalCombiningClass::CCC24,
CanonicalCombiningClass::CCC25,
CanonicalCombiningClass::CCC26,
CanonicalCombiningClass::CCC27,
CanonicalCombiningClass::CCC28,
CanonicalCombiningClass::CCC29,
CanonicalCombiningClass::CCC30,
CanonicalCombiningClass::CCC31,
CanonicalCombiningClass::CCC32,
CanonicalCombiningClass::CCC33,
CanonicalCombiningClass::CCC34,
CanonicalCombiningClass::CCC35,
CanonicalCombiningClass::CCC36,
CanonicalCombiningClass::CCC84,
CanonicalCombiningClass::CCC91,
CanonicalCombiningClass::CCC103,
CanonicalCombiningClass::CCC107,
CanonicalCombiningClass::CCC118,
CanonicalCombiningClass::CCC122,
CanonicalCombiningClass::CCC129,
CanonicalCombiningClass::CCC130,
CanonicalCombiningClass::CCC132,
CanonicalCombiningClass::CCC133,
CanonicalCombiningClass::AttachedBelowLeft,
CanonicalCombiningClass::AttachedBelow,
CanonicalCombiningClass::AttachedAbove,
CanonicalCombiningClass::AttachedAboveRight,
CanonicalCombiningClass::BelowLeft,
CanonicalCombiningClass::Below,
CanonicalCombiningClass::BelowRight,
CanonicalCombiningClass::Left,
CanonicalCombiningClass::Right,
CanonicalCombiningClass::AboveLeft,
CanonicalCombiningClass::Above,
CanonicalCombiningClass::AboveRight,
CanonicalCombiningClass::DoubleBelow,
CanonicalCombiningClass::DoubleAbove,
CanonicalCombiningClass::IotaSubscript];
}
impl From<CanonicalCombiningClass> for u16 {
fn from(other: CanonicalCombiningClass) -> Self { other.0 as u16 }
}create_const_array! {
1403#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1406impl CanonicalCombiningClass {
1407 pub const NotReordered: CanonicalCombiningClass = CanonicalCombiningClass(0); pub const Overlay: CanonicalCombiningClass = CanonicalCombiningClass(1); pub const HanReading: CanonicalCombiningClass = CanonicalCombiningClass(6); pub const Nukta: CanonicalCombiningClass = CanonicalCombiningClass(7); pub const KanaVoicing: CanonicalCombiningClass = CanonicalCombiningClass(8); pub const Virama: CanonicalCombiningClass = CanonicalCombiningClass(9); pub const CCC10: CanonicalCombiningClass = CanonicalCombiningClass(10); pub const CCC11: CanonicalCombiningClass = CanonicalCombiningClass(11); pub const CCC12: CanonicalCombiningClass = CanonicalCombiningClass(12); pub const CCC13: CanonicalCombiningClass = CanonicalCombiningClass(13); pub const CCC14: CanonicalCombiningClass = CanonicalCombiningClass(14); pub const CCC15: CanonicalCombiningClass = CanonicalCombiningClass(15); pub const CCC16: CanonicalCombiningClass = CanonicalCombiningClass(16); pub const CCC17: CanonicalCombiningClass = CanonicalCombiningClass(17); pub const CCC18: CanonicalCombiningClass = CanonicalCombiningClass(18); pub const CCC19: CanonicalCombiningClass = CanonicalCombiningClass(19); pub const CCC20: CanonicalCombiningClass = CanonicalCombiningClass(20); pub const CCC21: CanonicalCombiningClass = CanonicalCombiningClass(21); pub const CCC22: CanonicalCombiningClass = CanonicalCombiningClass(22); pub const CCC23: CanonicalCombiningClass = CanonicalCombiningClass(23); pub const CCC24: CanonicalCombiningClass = CanonicalCombiningClass(24); pub const CCC25: CanonicalCombiningClass = CanonicalCombiningClass(25); pub const CCC26: CanonicalCombiningClass = CanonicalCombiningClass(26); pub const CCC27: CanonicalCombiningClass = CanonicalCombiningClass(27); pub const CCC28: CanonicalCombiningClass = CanonicalCombiningClass(28); pub const CCC29: CanonicalCombiningClass = CanonicalCombiningClass(29); pub const CCC30: CanonicalCombiningClass = CanonicalCombiningClass(30); pub const CCC31: CanonicalCombiningClass = CanonicalCombiningClass(31); pub const CCC32: CanonicalCombiningClass = CanonicalCombiningClass(32); pub const CCC33: CanonicalCombiningClass = CanonicalCombiningClass(33); pub const CCC34: CanonicalCombiningClass = CanonicalCombiningClass(34); pub const CCC35: CanonicalCombiningClass = CanonicalCombiningClass(35); pub const CCC36: CanonicalCombiningClass = CanonicalCombiningClass(36); pub const CCC84: CanonicalCombiningClass = CanonicalCombiningClass(84); pub const CCC91: CanonicalCombiningClass = CanonicalCombiningClass(91); pub const CCC103: CanonicalCombiningClass = CanonicalCombiningClass(103); pub const CCC107: CanonicalCombiningClass = CanonicalCombiningClass(107); pub const CCC118: CanonicalCombiningClass = CanonicalCombiningClass(118); pub const CCC122: CanonicalCombiningClass = CanonicalCombiningClass(122); pub const CCC129: CanonicalCombiningClass = CanonicalCombiningClass(129); pub const CCC130: CanonicalCombiningClass = CanonicalCombiningClass(130); pub const CCC132: CanonicalCombiningClass = CanonicalCombiningClass(132); pub const CCC133: CanonicalCombiningClass = CanonicalCombiningClass(133); pub const AttachedBelowLeft: CanonicalCombiningClass = CanonicalCombiningClass(200); pub const AttachedBelow: CanonicalCombiningClass = CanonicalCombiningClass(202); pub const AttachedAbove: CanonicalCombiningClass = CanonicalCombiningClass(214); pub const AttachedAboveRight: CanonicalCombiningClass = CanonicalCombiningClass(216); pub const BelowLeft: CanonicalCombiningClass = CanonicalCombiningClass(218); pub const Below: CanonicalCombiningClass = CanonicalCombiningClass(220); pub const BelowRight: CanonicalCombiningClass = CanonicalCombiningClass(222); pub const Left: CanonicalCombiningClass = CanonicalCombiningClass(224); pub const Right: CanonicalCombiningClass = CanonicalCombiningClass(226); pub const AboveLeft: CanonicalCombiningClass = CanonicalCombiningClass(228); pub const Above: CanonicalCombiningClass = CanonicalCombiningClass(230); pub const AboveRight: CanonicalCombiningClass = CanonicalCombiningClass(232); pub const DoubleBelow: CanonicalCombiningClass = CanonicalCombiningClass(233); pub const DoubleAbove: CanonicalCombiningClass = CanonicalCombiningClass(234); pub const IotaSubscript: CanonicalCombiningClass = CanonicalCombiningClass(240); }
1466}
1467
1468impl crate::private::Sealed for CanonicalCombiningClass {}
impl EnumeratedProperty for CanonicalCombiningClass {
type DataMarker = crate::provider::PropertyEnumCanonicalCombiningClassV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_CANONICAL_COMBINING_CLASS_V1;
const NAME: &'static [u8] = "Canonical_Combining_Class".as_bytes();
const SHORT_NAME: &'static [u8] = "ccc".as_bytes();
}
impl zerovec::ule::AsULE for CanonicalCombiningClass {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
1469 name: "Canonical_Combining_Class";
1470 short_name: "ccc";
1471 ident: CanonicalCombiningClass;
1472 data_marker: crate::provider::PropertyEnumCanonicalCombiningClassV1;
1473 singleton: SINGLETON_PROPERTY_ENUM_CANONICAL_COMBINING_CLASS_V1;
1474 ule_ty: u8;
1475}
1476
1477#[doc(hidden)] )]
1505#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1506#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1508pub struct IndicConjunctBreak(pub(crate) u8);
1509
1510impl IndicConjunctBreak {
1511 pub const fn to_icu4c_value(self) -> u8 {
1513 self.0
1514 }
1515 pub const fn from_icu4c_value(value: u8) -> Self {
1517 Self(value)
1518 }
1519}
1520
1521#[doc(hidden)]
#[allow(non_upper_case_globals)]
impl IndicConjunctBreak {
pub const None: IndicConjunctBreak = IndicConjunctBreak(0);
pub const Consonant: IndicConjunctBreak = IndicConjunctBreak(1);
pub const Extend: IndicConjunctBreak = IndicConjunctBreak(2);
pub const Linker: IndicConjunctBreak = IndicConjunctBreak(3);
pub const ALL_VALUES: &'static [IndicConjunctBreak] =
&[IndicConjunctBreak::None, IndicConjunctBreak::Consonant,
IndicConjunctBreak::Extend, IndicConjunctBreak::Linker];
}
impl From<IndicConjunctBreak> for u16 {
fn from(other: IndicConjunctBreak) -> Self { other.0 as u16 }
}create_const_array! {
1522#[doc(hidden)] #[allow(non_upper_case_globals)]
1524impl IndicConjunctBreak {
1525 pub const None: IndicConjunctBreak = IndicConjunctBreak(0);
1526 pub const Consonant: IndicConjunctBreak = IndicConjunctBreak(1);
1527 pub const Extend: IndicConjunctBreak = IndicConjunctBreak(2);
1528 pub const Linker: IndicConjunctBreak = IndicConjunctBreak(3);
1529}
1530}
1531
1532impl crate::private::Sealed for IndicConjunctBreak {}
impl EnumeratedProperty for IndicConjunctBreak {
type DataMarker = crate::provider::PropertyEnumIndicConjunctBreakV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_INDIC_CONJUNCT_BREAK_V1;
const NAME: &'static [u8] = "Indic_Conjunct_Break".as_bytes();
const SHORT_NAME: &'static [u8] = "InCB".as_bytes();
}
impl zerovec::ule::AsULE for IndicConjunctBreak {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
1533 name: "Indic_Conjunct_Break";
1534 short_name: "InCB";
1535 ident: IndicConjunctBreak;
1536 data_marker: crate::provider::PropertyEnumIndicConjunctBreakV1;
1537 singleton: SINGLETON_PROPERTY_ENUM_INDIC_CONJUNCT_BREAK_V1;
1538 ule_ty: u8;
1539}
1540
1541)]
1560#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1561#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1563pub struct IndicSyllabicCategory(pub(crate) u8);
1564
1565impl IndicSyllabicCategory {
1566 pub const fn to_icu4c_value(self) -> u8 {
1568 self.0
1569 }
1570 pub const fn from_icu4c_value(value: u8) -> Self {
1572 Self(value)
1573 }
1574}
1575
1576#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl IndicSyllabicCategory {
pub const Other: IndicSyllabicCategory = IndicSyllabicCategory(0);
pub const Avagraha: IndicSyllabicCategory = IndicSyllabicCategory(1);
pub const Bindu: IndicSyllabicCategory = IndicSyllabicCategory(2);
pub const BrahmiJoiningNumber: IndicSyllabicCategory =
IndicSyllabicCategory(3);
pub const CantillationMark: IndicSyllabicCategory =
IndicSyllabicCategory(4);
pub const Consonant: IndicSyllabicCategory = IndicSyllabicCategory(5);
pub const ConsonantDead: IndicSyllabicCategory = IndicSyllabicCategory(6);
pub const ConsonantFinal: IndicSyllabicCategory =
IndicSyllabicCategory(7);
pub const ConsonantHeadLetter: IndicSyllabicCategory =
IndicSyllabicCategory(8);
pub const ConsonantInitialPostfixed: IndicSyllabicCategory =
IndicSyllabicCategory(9);
pub const ConsonantKiller: IndicSyllabicCategory =
IndicSyllabicCategory(10);
pub const ConsonantMedial: IndicSyllabicCategory =
IndicSyllabicCategory(11);
pub const ConsonantPlaceholder: IndicSyllabicCategory =
IndicSyllabicCategory(12);
pub const ConsonantPrecedingRepha: IndicSyllabicCategory =
IndicSyllabicCategory(13);
pub const ConsonantPrefixed: IndicSyllabicCategory =
IndicSyllabicCategory(14);
pub const ConsonantSucceedingRepha: IndicSyllabicCategory =
IndicSyllabicCategory(15);
pub const ConsonantSubjoined: IndicSyllabicCategory =
IndicSyllabicCategory(16);
pub const ConsonantWithStacker: IndicSyllabicCategory =
IndicSyllabicCategory(17);
pub const GeminationMark: IndicSyllabicCategory =
IndicSyllabicCategory(18);
pub const InvisibleStacker: IndicSyllabicCategory =
IndicSyllabicCategory(19);
pub const Joiner: IndicSyllabicCategory = IndicSyllabicCategory(20);
pub const ModifyingLetter: IndicSyllabicCategory =
IndicSyllabicCategory(21);
pub const NonJoiner: IndicSyllabicCategory = IndicSyllabicCategory(22);
pub const Nukta: IndicSyllabicCategory = IndicSyllabicCategory(23);
pub const Number: IndicSyllabicCategory = IndicSyllabicCategory(24);
pub const NumberJoiner: IndicSyllabicCategory = IndicSyllabicCategory(25);
pub const PureKiller: IndicSyllabicCategory = IndicSyllabicCategory(26);
pub const RegisterShifter: IndicSyllabicCategory =
IndicSyllabicCategory(27);
pub const SyllableModifier: IndicSyllabicCategory =
IndicSyllabicCategory(28);
pub const ToneLetter: IndicSyllabicCategory = IndicSyllabicCategory(29);
pub const ToneMark: IndicSyllabicCategory = IndicSyllabicCategory(30);
pub const Virama: IndicSyllabicCategory = IndicSyllabicCategory(31);
pub const Visarga: IndicSyllabicCategory = IndicSyllabicCategory(32);
pub const Vowel: IndicSyllabicCategory = IndicSyllabicCategory(33);
pub const VowelDependent: IndicSyllabicCategory =
IndicSyllabicCategory(34);
pub const VowelIndependent: IndicSyllabicCategory =
IndicSyllabicCategory(35);
pub const ReorderingKiller: IndicSyllabicCategory =
IndicSyllabicCategory(36);
pub const ALL_VALUES: &'static [IndicSyllabicCategory] =
&[IndicSyllabicCategory::Other, IndicSyllabicCategory::Avagraha,
IndicSyllabicCategory::Bindu,
IndicSyllabicCategory::BrahmiJoiningNumber,
IndicSyllabicCategory::CantillationMark,
IndicSyllabicCategory::Consonant,
IndicSyllabicCategory::ConsonantDead,
IndicSyllabicCategory::ConsonantFinal,
IndicSyllabicCategory::ConsonantHeadLetter,
IndicSyllabicCategory::ConsonantInitialPostfixed,
IndicSyllabicCategory::ConsonantKiller,
IndicSyllabicCategory::ConsonantMedial,
IndicSyllabicCategory::ConsonantPlaceholder,
IndicSyllabicCategory::ConsonantPrecedingRepha,
IndicSyllabicCategory::ConsonantPrefixed,
IndicSyllabicCategory::ConsonantSucceedingRepha,
IndicSyllabicCategory::ConsonantSubjoined,
IndicSyllabicCategory::ConsonantWithStacker,
IndicSyllabicCategory::GeminationMark,
IndicSyllabicCategory::InvisibleStacker,
IndicSyllabicCategory::Joiner,
IndicSyllabicCategory::ModifyingLetter,
IndicSyllabicCategory::NonJoiner,
IndicSyllabicCategory::Nukta, IndicSyllabicCategory::Number,
IndicSyllabicCategory::NumberJoiner,
IndicSyllabicCategory::PureKiller,
IndicSyllabicCategory::RegisterShifter,
IndicSyllabicCategory::SyllableModifier,
IndicSyllabicCategory::ToneLetter,
IndicSyllabicCategory::ToneMark,
IndicSyllabicCategory::Virama,
IndicSyllabicCategory::Visarga,
IndicSyllabicCategory::Vowel,
IndicSyllabicCategory::VowelDependent,
IndicSyllabicCategory::VowelIndependent,
IndicSyllabicCategory::ReorderingKiller];
}
impl From<IndicSyllabicCategory> for u16 {
fn from(other: IndicSyllabicCategory) -> Self { other.0 as u16 }
}create_const_array! {
1577#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1579impl IndicSyllabicCategory {
1580 pub const Other: IndicSyllabicCategory = IndicSyllabicCategory(0);
1581 pub const Avagraha: IndicSyllabicCategory = IndicSyllabicCategory(1);
1582 pub const Bindu: IndicSyllabicCategory = IndicSyllabicCategory(2);
1583 pub const BrahmiJoiningNumber: IndicSyllabicCategory = IndicSyllabicCategory(3);
1584 pub const CantillationMark: IndicSyllabicCategory = IndicSyllabicCategory(4);
1585 pub const Consonant: IndicSyllabicCategory = IndicSyllabicCategory(5);
1586 pub const ConsonantDead: IndicSyllabicCategory = IndicSyllabicCategory(6);
1587 pub const ConsonantFinal: IndicSyllabicCategory = IndicSyllabicCategory(7);
1588 pub const ConsonantHeadLetter: IndicSyllabicCategory = IndicSyllabicCategory(8);
1589 pub const ConsonantInitialPostfixed: IndicSyllabicCategory = IndicSyllabicCategory(9);
1590 pub const ConsonantKiller: IndicSyllabicCategory = IndicSyllabicCategory(10);
1591 pub const ConsonantMedial: IndicSyllabicCategory = IndicSyllabicCategory(11);
1592 pub const ConsonantPlaceholder: IndicSyllabicCategory = IndicSyllabicCategory(12);
1593 pub const ConsonantPrecedingRepha: IndicSyllabicCategory = IndicSyllabicCategory(13);
1594 pub const ConsonantPrefixed: IndicSyllabicCategory = IndicSyllabicCategory(14);
1595 pub const ConsonantSucceedingRepha: IndicSyllabicCategory = IndicSyllabicCategory(15);
1596 pub const ConsonantSubjoined: IndicSyllabicCategory = IndicSyllabicCategory(16);
1597 pub const ConsonantWithStacker: IndicSyllabicCategory = IndicSyllabicCategory(17);
1598 pub const GeminationMark: IndicSyllabicCategory = IndicSyllabicCategory(18);
1599 pub const InvisibleStacker: IndicSyllabicCategory = IndicSyllabicCategory(19);
1600 pub const Joiner: IndicSyllabicCategory = IndicSyllabicCategory(20);
1601 pub const ModifyingLetter: IndicSyllabicCategory = IndicSyllabicCategory(21);
1602 pub const NonJoiner: IndicSyllabicCategory = IndicSyllabicCategory(22);
1603 pub const Nukta: IndicSyllabicCategory = IndicSyllabicCategory(23);
1604 pub const Number: IndicSyllabicCategory = IndicSyllabicCategory(24);
1605 pub const NumberJoiner: IndicSyllabicCategory = IndicSyllabicCategory(25);
1606 pub const PureKiller: IndicSyllabicCategory = IndicSyllabicCategory(26);
1607 pub const RegisterShifter: IndicSyllabicCategory = IndicSyllabicCategory(27);
1608 pub const SyllableModifier: IndicSyllabicCategory = IndicSyllabicCategory(28);
1609 pub const ToneLetter: IndicSyllabicCategory = IndicSyllabicCategory(29);
1610 pub const ToneMark: IndicSyllabicCategory = IndicSyllabicCategory(30);
1611 pub const Virama: IndicSyllabicCategory = IndicSyllabicCategory(31);
1612 pub const Visarga: IndicSyllabicCategory = IndicSyllabicCategory(32);
1613 pub const Vowel: IndicSyllabicCategory = IndicSyllabicCategory(33);
1614 pub const VowelDependent: IndicSyllabicCategory = IndicSyllabicCategory(34);
1615 pub const VowelIndependent: IndicSyllabicCategory = IndicSyllabicCategory(35);
1616 pub const ReorderingKiller: IndicSyllabicCategory = IndicSyllabicCategory(36);
1617}
1618}
1619
1620impl crate::private::Sealed for IndicSyllabicCategory {}
impl EnumeratedProperty for IndicSyllabicCategory {
type DataMarker = crate::provider::PropertyEnumIndicSyllabicCategoryV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_INDIC_SYLLABIC_CATEGORY_V1;
const NAME: &'static [u8] = "Indic_Syllabic_Category".as_bytes();
const SHORT_NAME: &'static [u8] = "InSC".as_bytes();
}
impl zerovec::ule::AsULE for IndicSyllabicCategory {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
1621 name: "Indic_Syllabic_Category";
1622 short_name: "InSC";
1623 ident: IndicSyllabicCategory;
1624 data_marker: crate::provider::PropertyEnumIndicSyllabicCategoryV1;
1625 singleton: SINGLETON_PROPERTY_ENUM_INDIC_SYLLABIC_CATEGORY_V1;
1626 ule_ty: u8;
1627}
1628
1629)]
1649#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1650#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1652pub struct JoiningType(pub(crate) u8);
1653
1654impl JoiningType {
1655 pub const fn to_icu4c_value(self) -> u8 {
1657 self.0
1658 }
1659 pub const fn from_icu4c_value(value: u8) -> Self {
1661 Self(value)
1662 }
1663}
1664
1665#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl JoiningType {
pub const NonJoining: JoiningType = JoiningType(0);
pub const JoinCausing: JoiningType = JoiningType(1);
pub const DualJoining: JoiningType = JoiningType(2);
pub const LeftJoining: JoiningType = JoiningType(3);
pub const RightJoining: JoiningType = JoiningType(4);
pub const Transparent: JoiningType = JoiningType(5);
pub const ALL_VALUES: &'static [JoiningType] =
&[JoiningType::NonJoining, JoiningType::JoinCausing,
JoiningType::DualJoining, JoiningType::LeftJoining,
JoiningType::RightJoining, JoiningType::Transparent];
}
impl From<JoiningType> for u16 {
fn from(other: JoiningType) -> Self { other.0 as u16 }
}create_const_array! {
1666#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1668impl JoiningType {
1669 pub const NonJoining: JoiningType = JoiningType(0); pub const JoinCausing: JoiningType = JoiningType(1); pub const DualJoining: JoiningType = JoiningType(2); pub const LeftJoining: JoiningType = JoiningType(3); pub const RightJoining: JoiningType = JoiningType(4); pub const Transparent: JoiningType = JoiningType(5); }
1676}
1677
1678impl crate::private::Sealed for JoiningType {}
impl EnumeratedProperty for JoiningType {
type DataMarker = crate::provider::PropertyEnumJoiningTypeV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_JOINING_TYPE_V1;
const NAME: &'static [u8] = "Joining_Type".as_bytes();
const SHORT_NAME: &'static [u8] = "jt".as_bytes();
}
impl zerovec::ule::AsULE for JoiningType {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
1679 name: "Joining_Type";
1680 short_name: "jt";
1681 ident: JoiningType;
1682 data_marker: crate::provider::PropertyEnumJoiningTypeV1;
1683 singleton: SINGLETON_PROPERTY_ENUM_JOINING_TYPE_V1;
1684 ule_ty: u8;
1685}
1686
1687)]
1715#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1716#[allow(clippy::exhaustive_structs)] #[repr(transparent)]
1718pub struct VerticalOrientation(pub(crate) u8);
1719
1720impl VerticalOrientation {
1721 pub const fn to_icu4c_value(self) -> u8 {
1723 self.0
1724 }
1725 pub const fn from_icu4c_value(value: u8) -> Self {
1727 Self(value)
1728 }
1729}
1730
1731#[allow(missing_docs)]
#[allow(non_upper_case_globals)]
impl VerticalOrientation {
pub const Rotated: VerticalOrientation = VerticalOrientation(0);
pub const TransformedRotated: VerticalOrientation =
VerticalOrientation(1);
pub const TransformedUpright: VerticalOrientation =
VerticalOrientation(2);
pub const Upright: VerticalOrientation = VerticalOrientation(3);
pub const ALL_VALUES: &'static [VerticalOrientation] =
&[VerticalOrientation::Rotated,
VerticalOrientation::TransformedRotated,
VerticalOrientation::TransformedUpright,
VerticalOrientation::Upright];
}
impl From<VerticalOrientation> for u16 {
fn from(other: VerticalOrientation) -> Self { other.0 as u16 }
}create_const_array! {
1732#[allow(missing_docs)] #[allow(non_upper_case_globals)]
1734impl VerticalOrientation {
1735 pub const Rotated: VerticalOrientation = VerticalOrientation(0); pub const TransformedRotated: VerticalOrientation = VerticalOrientation(1); pub const TransformedUpright: VerticalOrientation = VerticalOrientation(2); pub const Upright: VerticalOrientation = VerticalOrientation(3); }
1740}
1741
1742impl crate::private::Sealed for VerticalOrientation {}
impl EnumeratedProperty for VerticalOrientation {
type DataMarker = crate::provider::PropertyEnumVerticalOrientationV1;
const SINGLETON:
&'static crate::provider::PropertyCodePointMap<'static, Self> =
crate::provider::Baked::SINGLETON_PROPERTY_ENUM_VERTICAL_ORIENTATION_V1;
const NAME: &'static [u8] = "Vertical_Orientation".as_bytes();
const SHORT_NAME: &'static [u8] = "vo".as_bytes();
}
impl zerovec::ule::AsULE for VerticalOrientation {
type ULE = u8;
fn to_unaligned(self) -> Self::ULE { self.0.to_unaligned() }
fn from_unaligned(unaligned: Self::ULE) -> Self {
Self(zerovec::ule::AsULE::from_unaligned(unaligned))
}
}make_enumerated_property! {
1743 name: "Vertical_Orientation";
1744 short_name: "vo";
1745 ident: VerticalOrientation;
1746 data_marker: crate::provider::PropertyEnumVerticalOrientationV1;
1747 singleton: SINGLETON_PROPERTY_ENUM_VERTICAL_ORIENTATION_V1;
1748 ule_ty: u8;
1749}
1750
1751pub use crate::code_point_set::BinaryProperty;
1752
1753macro_rules! make_binary_property {
1754 (
1755 name: $name:literal;
1756 short_name: $short_name:literal;
1757 ident: $ident:ident;
1758 data_marker: $data_marker:ty;
1759 singleton: $singleton:ident;
1760 $(#[$doc:meta])+
1761 ) => {
1762 $(#[$doc])+
1763 #[derive(Debug)]
1764 #[non_exhaustive]
1765 pub struct $ident;
1766
1767 impl crate::private::Sealed for $ident {}
1768
1769 impl BinaryProperty for $ident {
1770 type DataMarker = $data_marker;
1771 #[cfg(feature = "compiled_data")]
1772 const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
1773 &crate::provider::Baked::$singleton;
1774 const NAME: &'static [u8] = $name.as_bytes();
1775 const SHORT_NAME: &'static [u8] = $short_name.as_bytes();
1776 }
1777 };
1778}
1779
1780#[doc =
r" ASCII characters commonly used for the representation of hexadecimal numbers."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::AsciiHexDigit;"]
#[doc = r""]
#[doc = r" let ascii_hex_digit = CodePointSetData::new::<AsciiHexDigit>();"]
#[doc = r""]
#[doc = r" assert!(ascii_hex_digit.contains('3'));"]
#[doc =
r" assert!(!ascii_hex_digit.contains('੩')); // U+0A69 GURMUKHI DIGIT THREE"]
#[doc = r" assert!(ascii_hex_digit.contains('A'));"]
#[doc =
r" assert!(!ascii_hex_digit.contains('Ä')); // U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct AsciiHexDigit;
#[automatically_derived]
impl ::core::fmt::Debug for AsciiHexDigit {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "AsciiHexDigit")
}
}
impl crate::private::Sealed for AsciiHexDigit {}
impl BinaryProperty for AsciiHexDigit {
type DataMarker = crate::provider::PropertyBinaryAsciiHexDigitV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_ASCII_HEX_DIGIT_V1;
const NAME: &'static [u8] = "ASCII_Hex_Digit".as_bytes();
const SHORT_NAME: &'static [u8] = "AHex".as_bytes();
}make_binary_property! {
1781 name: "ASCII_Hex_Digit";
1782 short_name: "AHex";
1783 ident: AsciiHexDigit;
1784 data_marker: crate::provider::PropertyBinaryAsciiHexDigitV1;
1785 singleton: SINGLETON_PROPERTY_BINARY_ASCII_HEX_DIGIT_V1;
1786 }
1802
1803#[doc = r" Characters with the `Alphabetic` or `Decimal_Number` property."]
#[doc = r""]
#[doc = r" This is defined for POSIX compatibility."]
#[non_exhaustive]
pub struct Alnum;
#[automatically_derived]
impl ::core::fmt::Debug for Alnum {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Alnum")
}
}
impl crate::private::Sealed for Alnum {}
impl BinaryProperty for Alnum {
type DataMarker = crate::provider::PropertyBinaryAlnumV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_ALNUM_V1;
const NAME: &'static [u8] = "Alnum".as_bytes();
const SHORT_NAME: &'static [u8] = "Alnum".as_bytes();
}make_binary_property! {
1804 name: "Alnum";
1805 short_name: "Alnum";
1806 ident: Alnum;
1807 data_marker: crate::provider::PropertyBinaryAlnumV1;
1808 singleton: SINGLETON_PROPERTY_BINARY_ALNUM_V1;
1809 }
1813
1814#[doc = r" Alphabetic characters."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Alphabetic;"]
#[doc = r""]
#[doc = r" let alphabetic = CodePointSetData::new::<Alphabetic>();"]
#[doc = r""]
#[doc = r" assert!(!alphabetic.contains('3'));"]
#[doc =
r" assert!(!alphabetic.contains('੩')); // U+0A69 GURMUKHI DIGIT THREE"]
#[doc = r" assert!(alphabetic.contains('A'));"]
#[doc =
r" assert!(alphabetic.contains('Ä')); // U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Alphabetic;
#[automatically_derived]
impl ::core::fmt::Debug for Alphabetic {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Alphabetic")
}
}
impl crate::private::Sealed for Alphabetic {}
impl BinaryProperty for Alphabetic {
type DataMarker = crate::provider::PropertyBinaryAlphabeticV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_ALPHABETIC_V1;
const NAME: &'static [u8] = "Alphabetic".as_bytes();
const SHORT_NAME: &'static [u8] = "Alpha".as_bytes();
}make_binary_property! {
1815 name: "Alphabetic";
1816 short_name: "Alpha";
1817 ident: Alphabetic;
1818 data_marker: crate::provider::PropertyBinaryAlphabeticV1;
1819 singleton: SINGLETON_PROPERTY_BINARY_ALPHABETIC_V1;
1820 }
1837
1838#[doc =
r" Format control characters which have specific functions in the Unicode Bidirectional"]
#[doc = r" Algorithm."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::BidiControl;"]
#[doc = r""]
#[doc = r" let bidi_control = CodePointSetData::new::<BidiControl>();"]
#[doc = r""]
#[doc =
r" assert!(bidi_control.contains('\u{200F}')); // RIGHT-TO-LEFT MARK"]
#[doc =
r" assert!(!bidi_control.contains('ش')); // U+0634 ARABIC LETTER SHEEN"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct BidiControl;
#[automatically_derived]
impl ::core::fmt::Debug for BidiControl {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "BidiControl")
}
}
impl crate::private::Sealed for BidiControl {}
impl BinaryProperty for BidiControl {
type DataMarker = crate::provider::PropertyBinaryBidiControlV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_BIDI_CONTROL_V1;
const NAME: &'static [u8] = "Bidi_Control".as_bytes();
const SHORT_NAME: &'static [u8] = "Bidi_C".as_bytes();
}make_binary_property! {
1839 name: "Bidi_Control";
1840 short_name: "Bidi_C";
1841 ident: BidiControl;
1842 data_marker: crate::provider::PropertyBinaryBidiControlV1;
1843 singleton: SINGLETON_PROPERTY_BINARY_BIDI_CONTROL_V1;
1844 }
1860
1861#[doc = r" Characters that are mirrored in bidirectional text."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::BidiMirrored;"]
#[doc = r""]
#[doc = r" let bidi_mirrored = CodePointSetData::new::<BidiMirrored>();"]
#[doc = r""]
#[doc = r" assert!(bidi_mirrored.contains('['));"]
#[doc = r" assert!(bidi_mirrored.contains(']'));"]
#[doc =
r" assert!(bidi_mirrored.contains('∑')); // U+2211 N-ARY SUMMATION"]
#[doc =
r" assert!(!bidi_mirrored.contains('ཉ')); // U+0F49 TIBETAN LETTER NYA"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct BidiMirrored;
#[automatically_derived]
impl ::core::fmt::Debug for BidiMirrored {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "BidiMirrored")
}
}
impl crate::private::Sealed for BidiMirrored {}
impl BinaryProperty for BidiMirrored {
type DataMarker = crate::provider::PropertyBinaryBidiMirroredV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_BIDI_MIRRORED_V1;
const NAME: &'static [u8] = "Bidi_Mirrored".as_bytes();
const SHORT_NAME: &'static [u8] = "Bidi_M".as_bytes();
}make_binary_property! {
1862 name: "Bidi_Mirrored";
1863 short_name: "Bidi_M";
1864 ident: BidiMirrored;
1865 data_marker: crate::provider::PropertyBinaryBidiMirroredV1;
1866 singleton: SINGLETON_PROPERTY_BINARY_BIDI_MIRRORED_V1;
1867 }
1884
1885#[doc = r" Horizontal whitespace characters"]
#[non_exhaustive]
pub struct Blank;
#[automatically_derived]
impl ::core::fmt::Debug for Blank {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Blank")
}
}
impl crate::private::Sealed for Blank {}
impl BinaryProperty for Blank {
type DataMarker = crate::provider::PropertyBinaryBlankV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_BLANK_V1;
const NAME: &'static [u8] = "Blank".as_bytes();
const SHORT_NAME: &'static [u8] = "Blank".as_bytes();
}make_binary_property! {
1886 name: "Blank";
1887 short_name: "Blank";
1888 ident: Blank;
1889 data_marker: crate::provider::PropertyBinaryBlankV1;
1890 singleton: SINGLETON_PROPERTY_BINARY_BLANK_V1;
1891 }
1894
1895#[doc = r" Uppercase, lowercase, and titlecase characters."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Cased;"]
#[doc = r""]
#[doc = r" let cased = CodePointSetData::new::<Cased>();"]
#[doc = r""]
#[doc =
r" assert!(cased.contains('Ꙡ')); // U+A660 CYRILLIC CAPITAL LETTER REVERSED TSE"]
#[doc = r" assert!(!cased.contains('ދ')); // U+078B THAANA LETTER DHAALU"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Cased;
#[automatically_derived]
impl ::core::fmt::Debug for Cased {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Cased")
}
}
impl crate::private::Sealed for Cased {}
impl BinaryProperty for Cased {
type DataMarker = crate::provider::PropertyBinaryCasedV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_CASED_V1;
const NAME: &'static [u8] = "Cased".as_bytes();
const SHORT_NAME: &'static [u8] = "Cased".as_bytes();
}make_binary_property! {
1896 name: "Cased";
1897 short_name: "Cased";
1898 ident: Cased;
1899 data_marker: crate::provider::PropertyBinaryCasedV1;
1900 singleton: SINGLETON_PROPERTY_BINARY_CASED_V1;
1901 }
1916
1917#[doc = r" Characters which are ignored for casing purposes."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::CaseIgnorable;"]
#[doc = r""]
#[doc = r" let case_ignorable = CodePointSetData::new::<CaseIgnorable>();"]
#[doc = r""]
#[doc = r" assert!(case_ignorable.contains(':'));"]
#[doc =
r" assert!(!case_ignorable.contains('λ')); // U+03BB GREEK SMALL LETTER LAMBDA"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct CaseIgnorable;
#[automatically_derived]
impl ::core::fmt::Debug for CaseIgnorable {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "CaseIgnorable")
}
}
impl crate::private::Sealed for CaseIgnorable {}
impl BinaryProperty for CaseIgnorable {
type DataMarker = crate::provider::PropertyBinaryCaseIgnorableV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_CASE_IGNORABLE_V1;
const NAME: &'static [u8] = "Case_Ignorable".as_bytes();
const SHORT_NAME: &'static [u8] = "CI".as_bytes();
}make_binary_property! {
1918 name: "Case_Ignorable";
1919 short_name: "CI";
1920 ident: CaseIgnorable;
1921 data_marker: crate::provider::PropertyBinaryCaseIgnorableV1;
1922 singleton: SINGLETON_PROPERTY_BINARY_CASE_IGNORABLE_V1;
1923 }
1938
1939#[doc = r" Characters that are excluded from composition."]
#[doc = r""]
#[doc =
r" See <https://unicode.org/Public/UNIDATA/CompositionExclusions.txt>"]
#[non_exhaustive]
pub struct FullCompositionExclusion;
#[automatically_derived]
impl ::core::fmt::Debug for FullCompositionExclusion {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "FullCompositionExclusion")
}
}
impl crate::private::Sealed for FullCompositionExclusion {}
impl BinaryProperty for FullCompositionExclusion {
type DataMarker =
crate::provider::PropertyBinaryFullCompositionExclusionV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_FULL_COMPOSITION_EXCLUSION_V1;
const NAME: &'static [u8] = "Full_Composition_Exclusion".as_bytes();
const SHORT_NAME: &'static [u8] = "Comp_Ex".as_bytes();
}make_binary_property! {
1940 name: "Full_Composition_Exclusion";
1941 short_name: "Comp_Ex";
1942 ident: FullCompositionExclusion;
1943 data_marker: crate::provider::PropertyBinaryFullCompositionExclusionV1;
1944 singleton: SINGLETON_PROPERTY_BINARY_FULL_COMPOSITION_EXCLUSION_V1;
1945 }
1950
1951#[doc =
r" Characters whose normalized forms are not stable under case folding."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::ChangesWhenCasefolded;"]
#[doc = r""]
#[doc =
r" let changes_when_casefolded = CodePointSetData::new::<ChangesWhenCasefolded>();"]
#[doc = r""]
#[doc =
r" assert!(changes_when_casefolded.contains('ß')); // U+00DF LATIN SMALL LETTER SHARP S"]
#[doc =
r" assert!(!changes_when_casefolded.contains('ᜉ')); // U+1709 TAGALOG LETTER PA"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct ChangesWhenCasefolded;
#[automatically_derived]
impl ::core::fmt::Debug for ChangesWhenCasefolded {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "ChangesWhenCasefolded")
}
}
impl crate::private::Sealed for ChangesWhenCasefolded {}
impl BinaryProperty for ChangesWhenCasefolded {
type DataMarker = crate::provider::PropertyBinaryChangesWhenCasefoldedV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEFOLDED_V1;
const NAME: &'static [u8] = "Changes_When_Casefolded".as_bytes();
const SHORT_NAME: &'static [u8] = "CWCF".as_bytes();
}make_binary_property! {
1952 name: "Changes_When_Casefolded";
1953 short_name: "CWCF";
1954 ident: ChangesWhenCasefolded;
1955 data_marker: crate::provider::PropertyBinaryChangesWhenCasefoldedV1;
1956 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEFOLDED_V1;
1957 }
1972
1973#[doc = r" Characters which may change when they undergo case mapping."]
#[non_exhaustive]
pub struct ChangesWhenCasemapped;
#[automatically_derived]
impl ::core::fmt::Debug for ChangesWhenCasemapped {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "ChangesWhenCasemapped")
}
}
impl crate::private::Sealed for ChangesWhenCasemapped {}
impl BinaryProperty for ChangesWhenCasemapped {
type DataMarker = crate::provider::PropertyBinaryChangesWhenCasemappedV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEMAPPED_V1;
const NAME: &'static [u8] = "Changes_When_Casemapped".as_bytes();
const SHORT_NAME: &'static [u8] = "CWCM".as_bytes();
}make_binary_property! {
1974 name: "Changes_When_Casemapped";
1975 short_name: "CWCM";
1976 ident: ChangesWhenCasemapped;
1977 data_marker: crate::provider::PropertyBinaryChangesWhenCasemappedV1;
1978 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEMAPPED_V1;
1979 }
1982
1983#[doc =
r" Characters which are not identical to their `NFKC_Casefold` mapping."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::ChangesWhenNfkcCasefolded;"]
#[doc = r""]
#[doc =
r" let changes_when_nfkc_casefolded = CodePointSetData::new::<ChangesWhenNfkcCasefolded>();"]
#[doc = r""]
#[doc =
r" assert!(changes_when_nfkc_casefolded.contains('🄵')); // U+1F135 SQUARED LATIN CAPITAL LETTER F"]
#[doc = r" assert!(!changes_when_nfkc_casefolded.contains('f'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct ChangesWhenNfkcCasefolded;
#[automatically_derived]
impl ::core::fmt::Debug for ChangesWhenNfkcCasefolded {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "ChangesWhenNfkcCasefolded")
}
}
impl crate::private::Sealed for ChangesWhenNfkcCasefolded {}
impl BinaryProperty for ChangesWhenNfkcCasefolded {
type DataMarker =
crate::provider::PropertyBinaryChangesWhenNfkcCasefoldedV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_NFKC_CASEFOLDED_V1;
const NAME: &'static [u8] = "Changes_When_NFKC_Casefolded".as_bytes();
const SHORT_NAME: &'static [u8] = "CWKCF".as_bytes();
}make_binary_property! {
1984 name: "Changes_When_NFKC_Casefolded";
1985 short_name: "CWKCF";
1986 ident: ChangesWhenNfkcCasefolded;
1987 data_marker: crate::provider::PropertyBinaryChangesWhenNfkcCasefoldedV1;
1988 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_NFKC_CASEFOLDED_V1;
1989 }
2004
2005#[doc =
r" Characters whose normalized forms are not stable under a `toLowercase` mapping."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::ChangesWhenLowercased;"]
#[doc = r""]
#[doc =
r" let changes_when_lowercased = CodePointSetData::new::<ChangesWhenLowercased>();"]
#[doc = r""]
#[doc =
r" assert!(changes_when_lowercased.contains('Ⴔ')); // U+10B4 GEORGIAN CAPITAL LETTER PHAR"]
#[doc =
r" assert!(!changes_when_lowercased.contains('ფ')); // U+10E4 GEORGIAN LETTER PHAR"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct ChangesWhenLowercased;
#[automatically_derived]
impl ::core::fmt::Debug for ChangesWhenLowercased {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "ChangesWhenLowercased")
}
}
impl crate::private::Sealed for ChangesWhenLowercased {}
impl BinaryProperty for ChangesWhenLowercased {
type DataMarker = crate::provider::PropertyBinaryChangesWhenLowercasedV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_LOWERCASED_V1;
const NAME: &'static [u8] = "Changes_When_Lowercased".as_bytes();
const SHORT_NAME: &'static [u8] = "CWL".as_bytes();
}make_binary_property! {
2006 name: "Changes_When_Lowercased";
2007 short_name: "CWL";
2008 ident: ChangesWhenLowercased;
2009 data_marker: crate::provider::PropertyBinaryChangesWhenLowercasedV1;
2010 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_LOWERCASED_V1;
2011 }
2026
2027#[doc =
r" Characters whose normalized forms are not stable under a `toTitlecase` mapping."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::ChangesWhenTitlecased;"]
#[doc = r""]
#[doc =
r" let changes_when_titlecased = CodePointSetData::new::<ChangesWhenTitlecased>();"]
#[doc = r""]
#[doc =
r" assert!(changes_when_titlecased.contains('æ')); // U+00E6 LATIN SMALL LETTER AE"]
#[doc =
r" assert!(!changes_when_titlecased.contains('Æ')); // U+00E6 LATIN CAPITAL LETTER AE"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct ChangesWhenTitlecased;
#[automatically_derived]
impl ::core::fmt::Debug for ChangesWhenTitlecased {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "ChangesWhenTitlecased")
}
}
impl crate::private::Sealed for ChangesWhenTitlecased {}
impl BinaryProperty for ChangesWhenTitlecased {
type DataMarker = crate::provider::PropertyBinaryChangesWhenTitlecasedV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_TITLECASED_V1;
const NAME: &'static [u8] = "Changes_When_Titlecased".as_bytes();
const SHORT_NAME: &'static [u8] = "CWT".as_bytes();
}make_binary_property! {
2028 name: "Changes_When_Titlecased";
2029 short_name: "CWT";
2030 ident: ChangesWhenTitlecased;
2031 data_marker: crate::provider::PropertyBinaryChangesWhenTitlecasedV1;
2032 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_TITLECASED_V1;
2033 }
2048
2049#[doc =
r" Characters whose normalized forms are not stable under a `toUppercase` mapping."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::ChangesWhenUppercased;"]
#[doc = r""]
#[doc =
r" let changes_when_uppercased = CodePointSetData::new::<ChangesWhenUppercased>();"]
#[doc = r""]
#[doc =
r" assert!(changes_when_uppercased.contains('ւ')); // U+0582 ARMENIAN SMALL LETTER YIWN"]
#[doc =
r" assert!(!changes_when_uppercased.contains('Ւ')); // U+0552 ARMENIAN CAPITAL LETTER YIWN"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct ChangesWhenUppercased;
#[automatically_derived]
impl ::core::fmt::Debug for ChangesWhenUppercased {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "ChangesWhenUppercased")
}
}
impl crate::private::Sealed for ChangesWhenUppercased {}
impl BinaryProperty for ChangesWhenUppercased {
type DataMarker = crate::provider::PropertyBinaryChangesWhenUppercasedV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_UPPERCASED_V1;
const NAME: &'static [u8] = "Changes_When_Uppercased".as_bytes();
const SHORT_NAME: &'static [u8] = "CWU".as_bytes();
}make_binary_property! {
2050 name: "Changes_When_Uppercased";
2051 short_name: "CWU";
2052 ident: ChangesWhenUppercased;
2053 data_marker: crate::provider::PropertyBinaryChangesWhenUppercasedV1;
2054 singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_UPPERCASED_V1;
2055 }
2070
2071#[doc =
r" Punctuation characters explicitly called out as dashes in the Unicode Standard, plus"]
#[doc = r" their compatibility equivalents."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Dash;"]
#[doc = r""]
#[doc = r" let dash = CodePointSetData::new::<Dash>();"]
#[doc = r""]
#[doc = r" assert!(dash.contains('⸺')); // U+2E3A TWO-EM DASH"]
#[doc = r" assert!(dash.contains('-')); // U+002D"]
#[doc = r" assert!(!dash.contains('=')); // U+003D"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Dash;
#[automatically_derived]
impl ::core::fmt::Debug for Dash {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Dash")
}
}
impl crate::private::Sealed for Dash {}
impl BinaryProperty for Dash {
type DataMarker = crate::provider::PropertyBinaryDashV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_DASH_V1;
const NAME: &'static [u8] = "Dash".as_bytes();
const SHORT_NAME: &'static [u8] = "Dash".as_bytes();
}make_binary_property! {
2072 name: "Dash";
2073 short_name: "Dash";
2074 ident: Dash;
2075 data_marker: crate::provider::PropertyBinaryDashV1;
2076 singleton: SINGLETON_PROPERTY_BINARY_DASH_V1;
2077 }
2094
2095#[doc = r" Deprecated characters."]
#[doc = r""]
#[doc = r" No characters will ever be removed from the standard, but the"]
#[doc = r" usage of deprecated characters is strongly discouraged."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Deprecated;"]
#[doc = r""]
#[doc = r" let deprecated = CodePointSetData::new::<Deprecated>();"]
#[doc = r""]
#[doc =
r" assert!(deprecated.contains('ឣ')); // U+17A3 KHMER INDEPENDENT VOWEL QAQ"]
#[doc = r" assert!(!deprecated.contains('A'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Deprecated;
#[automatically_derived]
impl ::core::fmt::Debug for Deprecated {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Deprecated")
}
}
impl crate::private::Sealed for Deprecated {}
impl BinaryProperty for Deprecated {
type DataMarker = crate::provider::PropertyBinaryDeprecatedV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_DEPRECATED_V1;
const NAME: &'static [u8] = "Deprecated".as_bytes();
const SHORT_NAME: &'static [u8] = "Dep".as_bytes();
}make_binary_property! {
2096 name: "Deprecated";
2097 short_name: "Dep";
2098 ident: Deprecated;
2099 data_marker: crate::provider::PropertyBinaryDeprecatedV1;
2100 singleton: SINGLETON_PROPERTY_BINARY_DEPRECATED_V1;
2101 }
2119
2120#[doc = r" For programmatic determination of default ignorable code points."]
#[doc = r""]
#[doc = r" New characters that"]
#[doc =
r" should be ignored in rendering (unless explicitly supported) will be assigned in these"]
#[doc =
r" ranges, permitting programs to correctly handle the default rendering of such"]
#[doc = r" characters when not otherwise supported."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::DefaultIgnorableCodePoint;"]
#[doc = r""]
#[doc =
r" let default_ignorable_code_point = CodePointSetData::new::<DefaultIgnorableCodePoint>();"]
#[doc = r""]
#[doc =
r" assert!(default_ignorable_code_point.contains('\u{180B}')); // MONGOLIAN FREE VARIATION SELECTOR ONE"]
#[doc = r" assert!(!default_ignorable_code_point.contains('E'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct DefaultIgnorableCodePoint;
#[automatically_derived]
impl ::core::fmt::Debug for DefaultIgnorableCodePoint {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "DefaultIgnorableCodePoint")
}
}
impl crate::private::Sealed for DefaultIgnorableCodePoint {}
impl BinaryProperty for DefaultIgnorableCodePoint {
type DataMarker =
crate::provider::PropertyBinaryDefaultIgnorableCodePointV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_DEFAULT_IGNORABLE_CODE_POINT_V1;
const NAME: &'static [u8] = "Default_Ignorable_Code_Point".as_bytes();
const SHORT_NAME: &'static [u8] = "DI".as_bytes();
}make_binary_property! {
2121 name: "Default_Ignorable_Code_Point";
2122 short_name: "DI";
2123 ident: DefaultIgnorableCodePoint;
2124 data_marker: crate::provider::PropertyBinaryDefaultIgnorableCodePointV1;
2125 singleton: SINGLETON_PROPERTY_BINARY_DEFAULT_IGNORABLE_CODE_POINT_V1;
2126 }
2146
2147#[doc =
r" Characters that linguistically modify the meaning of another character to which they apply."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Diacritic;"]
#[doc = r""]
#[doc = r" let diacritic = CodePointSetData::new::<Diacritic>();"]
#[doc = r""]
#[doc =
r" assert!(diacritic.contains('\u{05B3}')); // HEBREW POINT HATAF QAMATS"]
#[doc = r" assert!(!diacritic.contains('א')); // U+05D0 HEBREW LETTER ALEF"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Diacritic;
#[automatically_derived]
impl ::core::fmt::Debug for Diacritic {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Diacritic")
}
}
impl crate::private::Sealed for Diacritic {}
impl BinaryProperty for Diacritic {
type DataMarker = crate::provider::PropertyBinaryDiacriticV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_DIACRITIC_V1;
const NAME: &'static [u8] = "Diacritic".as_bytes();
const SHORT_NAME: &'static [u8] = "Dia".as_bytes();
}make_binary_property! {
2148 name: "Diacritic";
2149 short_name: "Dia";
2150 ident: Diacritic;
2151 data_marker: crate::provider::PropertyBinaryDiacriticV1;
2152 singleton: SINGLETON_PROPERTY_BINARY_DIACRITIC_V1;
2153 }
2168
2169#[doc = r" Characters that can serve as a base for emoji modifiers."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::EmojiModifierBase;"]
#[doc = r""]
#[doc =
r" let emoji_modifier_base = CodePointSetData::new::<EmojiModifierBase>();"]
#[doc = r""]
#[doc =
r" assert!(emoji_modifier_base.contains('✊')); // U+270A RAISED FIST"]
#[doc =
r" assert!(!emoji_modifier_base.contains('⛰')); // U+26F0 MOUNTAIN"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct EmojiModifierBase;
#[automatically_derived]
impl ::core::fmt::Debug for EmojiModifierBase {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "EmojiModifierBase")
}
}
impl crate::private::Sealed for EmojiModifierBase {}
impl BinaryProperty for EmojiModifierBase {
type DataMarker = crate::provider::PropertyBinaryEmojiModifierBaseV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_BASE_V1;
const NAME: &'static [u8] = "Emoji_Modifier_Base".as_bytes();
const SHORT_NAME: &'static [u8] = "EBase".as_bytes();
}make_binary_property! {
2170 name: "Emoji_Modifier_Base";
2171 short_name: "EBase";
2172 ident: EmojiModifierBase;
2173 data_marker: crate::provider::PropertyBinaryEmojiModifierBaseV1;
2174 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_BASE_V1;
2175 }
2190
2191#[doc =
r" Characters used in emoji sequences that normally do not appear on emoji keyboards as"]
#[doc = r" separate choices, such as base characters for emoji keycaps."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::EmojiComponent;"]
#[doc = r""]
#[doc = r" let emoji_component = CodePointSetData::new::<EmojiComponent>();"]
#[doc = r""]
#[doc =
r" assert!(emoji_component.contains('🇹')); // U+1F1F9 REGIONAL INDICATOR SYMBOL LETTER T"]
#[doc =
r" assert!(emoji_component.contains('\u{20E3}')); // COMBINING ENCLOSING KEYCAP"]
#[doc = r" assert!(emoji_component.contains('7'));"]
#[doc = r" assert!(!emoji_component.contains('T'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct EmojiComponent;
#[automatically_derived]
impl ::core::fmt::Debug for EmojiComponent {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "EmojiComponent")
}
}
impl crate::private::Sealed for EmojiComponent {}
impl BinaryProperty for EmojiComponent {
type DataMarker = crate::provider::PropertyBinaryEmojiComponentV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_EMOJI_COMPONENT_V1;
const NAME: &'static [u8] = "Emoji_Component".as_bytes();
const SHORT_NAME: &'static [u8] = "EComp".as_bytes();
}make_binary_property! {
2192 name: "Emoji_Component";
2193 short_name: "EComp";
2194 ident: EmojiComponent;
2195 data_marker: crate::provider::PropertyBinaryEmojiComponentV1;
2196 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_COMPONENT_V1;
2197 }
2215
2216#[doc = r" Characters that are emoji modifiers."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::EmojiModifier;"]
#[doc = r""]
#[doc = r" let emoji_modifier = CodePointSetData::new::<EmojiModifier>();"]
#[doc = r""]
#[doc =
r" assert!(emoji_modifier.contains('\u{1F3FD}')); // EMOJI MODIFIER FITZPATRICK TYPE-4"]
#[doc =
r" assert!(!emoji_modifier.contains('\u{200C}')); // ZERO WIDTH NON-JOINER"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct EmojiModifier;
#[automatically_derived]
impl ::core::fmt::Debug for EmojiModifier {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "EmojiModifier")
}
}
impl crate::private::Sealed for EmojiModifier {}
impl BinaryProperty for EmojiModifier {
type DataMarker = crate::provider::PropertyBinaryEmojiModifierV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_V1;
const NAME: &'static [u8] = "Emoji_Modifier".as_bytes();
const SHORT_NAME: &'static [u8] = "EMod".as_bytes();
}make_binary_property! {
2217 name: "Emoji_Modifier";
2218 short_name: "EMod";
2219 ident: EmojiModifier;
2220 data_marker: crate::provider::PropertyBinaryEmojiModifierV1;
2221 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_V1;
2222 }
2237
2238#[doc = r" Characters that are emoji."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Emoji;"]
#[doc = r""]
#[doc = r" let emoji = CodePointSetData::new::<Emoji>();"]
#[doc = r""]
#[doc = r" assert!(emoji.contains('🔥')); // U+1F525 FIRE"]
#[doc = r" assert!(!emoji.contains('V'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Emoji;
#[automatically_derived]
impl ::core::fmt::Debug for Emoji {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Emoji")
}
}
impl crate::private::Sealed for Emoji {}
impl BinaryProperty for Emoji {
type DataMarker = crate::provider::PropertyBinaryEmojiV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_EMOJI_V1;
const NAME: &'static [u8] = "Emoji".as_bytes();
const SHORT_NAME: &'static [u8] = "Emoji".as_bytes();
}make_binary_property! {
2239 name: "Emoji";
2240 short_name: "Emoji";
2241 ident: Emoji;
2242 data_marker: crate::provider::PropertyBinaryEmojiV1;
2243 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_V1;
2244 }
2259
2260#[doc = r" Characters that have emoji presentation by default."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::EmojiPresentation;"]
#[doc = r""]
#[doc =
r" let emoji_presentation = CodePointSetData::new::<EmojiPresentation>();"]
#[doc = r""]
#[doc = r" assert!(emoji_presentation.contains('🦬')); // U+1F9AC BISON"]
#[doc =
r" assert!(!emoji_presentation.contains('♻')); // U+267B BLACK UNIVERSAL RECYCLING SYMBOL"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct EmojiPresentation;
#[automatically_derived]
impl ::core::fmt::Debug for EmojiPresentation {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "EmojiPresentation")
}
}
impl crate::private::Sealed for EmojiPresentation {}
impl BinaryProperty for EmojiPresentation {
type DataMarker = crate::provider::PropertyBinaryEmojiPresentationV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_EMOJI_PRESENTATION_V1;
const NAME: &'static [u8] = "Emoji_Presentation".as_bytes();
const SHORT_NAME: &'static [u8] = "EPres".as_bytes();
}make_binary_property! {
2261 name: "Emoji_Presentation";
2262 short_name: "EPres";
2263 ident: EmojiPresentation;
2264 data_marker: crate::provider::PropertyBinaryEmojiPresentationV1;
2265 singleton: SINGLETON_PROPERTY_BINARY_EMOJI_PRESENTATION_V1;
2266 }
2281
2282#[doc =
r" Characters whose principal function is to extend the value of a preceding alphabetic"]
#[doc = r" character or to extend the shape of adjacent characters."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Extender;"]
#[doc = r""]
#[doc = r" let extender = CodePointSetData::new::<Extender>();"]
#[doc = r""]
#[doc =
r" assert!(extender.contains('ヾ')); // U+30FE KATAKANA VOICED ITERATION MARK"]
#[doc =
r" assert!(extender.contains('ー')); // U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK"]
#[doc =
r" assert!(!extender.contains('・')); // U+30FB KATAKANA MIDDLE DOT"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Extender;
#[automatically_derived]
impl ::core::fmt::Debug for Extender {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Extender")
}
}
impl crate::private::Sealed for Extender {}
impl BinaryProperty for Extender {
type DataMarker = crate::provider::PropertyBinaryExtenderV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_EXTENDER_V1;
const NAME: &'static [u8] = "Extender".as_bytes();
const SHORT_NAME: &'static [u8] = "Ext".as_bytes();
}make_binary_property! {
2283 name: "Extender";
2284 short_name: "Ext";
2285 ident: Extender;
2286 data_marker: crate::provider::PropertyBinaryExtenderV1;
2287 singleton: SINGLETON_PROPERTY_BINARY_EXTENDER_V1;
2288 }
2305
2306#[doc =
r" Pictographic symbols, as well as reserved ranges in blocks largely associated with"]
#[doc = r" emoji characters"]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::ExtendedPictographic;"]
#[doc = r""]
#[doc =
r" let extended_pictographic = CodePointSetData::new::<ExtendedPictographic>();"]
#[doc = r""]
#[doc =
r" assert!(extended_pictographic.contains('🥳')); // U+1F973 FACE WITH PARTY HORN AND PARTY HAT"]
#[doc =
r" assert!(!extended_pictographic.contains('🇪')); // U+1F1EA REGIONAL INDICATOR SYMBOL LETTER E"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct ExtendedPictographic;
#[automatically_derived]
impl ::core::fmt::Debug for ExtendedPictographic {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "ExtendedPictographic")
}
}
impl crate::private::Sealed for ExtendedPictographic {}
impl BinaryProperty for ExtendedPictographic {
type DataMarker = crate::provider::PropertyBinaryExtendedPictographicV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_EXTENDED_PICTOGRAPHIC_V1;
const NAME: &'static [u8] = "Extended_Pictographic".as_bytes();
const SHORT_NAME: &'static [u8] = "ExtPict".as_bytes();
}make_binary_property! {
2307 name: "Extended_Pictographic";
2308 short_name: "ExtPict";
2309 ident: ExtendedPictographic;
2310 data_marker: crate::provider::PropertyBinaryExtendedPictographicV1;
2311 singleton: SINGLETON_PROPERTY_BINARY_EXTENDED_PICTOGRAPHIC_V1;
2312 }
2328
2329#[doc = r" Invisible characters."]
#[doc = r""]
#[doc = r" This is defined for POSIX compatibility."]
#[non_exhaustive]
pub struct Graph;
#[automatically_derived]
impl ::core::fmt::Debug for Graph {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Graph")
}
}
impl crate::private::Sealed for Graph {}
impl BinaryProperty for Graph {
type DataMarker = crate::provider::PropertyBinaryGraphV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_GRAPH_V1;
const NAME: &'static [u8] = "Graph".as_bytes();
const SHORT_NAME: &'static [u8] = "Graph".as_bytes();
}make_binary_property! {
2330 name: "Graph";
2331 short_name: "Graph";
2332 ident: Graph;
2333 data_marker: crate::provider::PropertyBinaryGraphV1;
2334 singleton: SINGLETON_PROPERTY_BINARY_GRAPH_V1;
2335 }
2340
2341#[doc =
r" Property used together with the definition of Standard Korean Syllable Block to define"]
#[doc = r#" "Grapheme base"."#]
#[doc = r""]
#[doc = r" See D58 in Chapter 3, Conformance in the Unicode Standard."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::GraphemeBase;"]
#[doc = r""]
#[doc = r" let grapheme_base = CodePointSetData::new::<GraphemeBase>();"]
#[doc = r""]
#[doc =
r" assert!(grapheme_base.contains('ക')); // U+0D15 MALAYALAM LETTER KA"]
#[doc =
r" assert!(grapheme_base.contains('\u{0D3F}')); // U+0D3F MALAYALAM VOWEL SIGN I"]
#[doc =
r" assert!(!grapheme_base.contains('\u{0D3E}')); // U+0D3E MALAYALAM VOWEL SIGN AA"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct GraphemeBase;
#[automatically_derived]
impl ::core::fmt::Debug for GraphemeBase {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "GraphemeBase")
}
}
impl crate::private::Sealed for GraphemeBase {}
impl BinaryProperty for GraphemeBase {
type DataMarker = crate::provider::PropertyBinaryGraphemeBaseV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_GRAPHEME_BASE_V1;
const NAME: &'static [u8] = "Grapheme_Base".as_bytes();
const SHORT_NAME: &'static [u8] = "Gr_Base".as_bytes();
}make_binary_property! {
2342 name: "Grapheme_Base";
2343 short_name: "Gr_Base";
2344 ident: GraphemeBase;
2345 data_marker: crate::provider::PropertyBinaryGraphemeBaseV1;
2346 singleton: SINGLETON_PROPERTY_BINARY_GRAPHEME_BASE_V1;
2347 }
2366
2367#[doc = r#" Property used to define "Grapheme extender"."#]
#[doc = r""]
#[doc = r" See D59 in Chapter 3, Conformance in the"]
#[doc = r" Unicode Standard."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::GraphemeExtend;"]
#[doc = r""]
#[doc = r" let grapheme_extend = CodePointSetData::new::<GraphemeExtend>();"]
#[doc = r""]
#[doc =
r" assert!(!grapheme_extend.contains('ക')); // U+0D15 MALAYALAM LETTER KA"]
#[doc =
r" assert!(!grapheme_extend.contains('\u{0D3F}')); // U+0D3F MALAYALAM VOWEL SIGN I"]
#[doc =
r" assert!(grapheme_extend.contains('\u{0D3E}')); // U+0D3E MALAYALAM VOWEL SIGN AA"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct GraphemeExtend;
#[automatically_derived]
impl ::core::fmt::Debug for GraphemeExtend {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "GraphemeExtend")
}
}
impl crate::private::Sealed for GraphemeExtend {}
impl BinaryProperty for GraphemeExtend {
type DataMarker = crate::provider::PropertyBinaryGraphemeExtendV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_GRAPHEME_EXTEND_V1;
const NAME: &'static [u8] = "Grapheme_Extend".as_bytes();
const SHORT_NAME: &'static [u8] = "Gr_Ext".as_bytes();
}make_binary_property! {
2368 name: "Grapheme_Extend";
2369 short_name: "Gr_Ext";
2370 ident: GraphemeExtend;
2371 data_marker: crate::provider::PropertyBinaryGraphemeExtendV1;
2372 singleton: SINGLETON_PROPERTY_BINARY_GRAPHEME_EXTEND_V1;
2373 }
2392
2393#[doc = r" Deprecated property."]
#[doc = r""]
#[doc = r" Formerly proposed for programmatic determination of grapheme"]
#[doc = r" cluster boundaries."]
#[non_exhaustive]
pub struct GraphemeLink;
#[automatically_derived]
impl ::core::fmt::Debug for GraphemeLink {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "GraphemeLink")
}
}
impl crate::private::Sealed for GraphemeLink {}
impl BinaryProperty for GraphemeLink {
type DataMarker = crate::provider::PropertyBinaryGraphemeLinkV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_GRAPHEME_LINK_V1;
const NAME: &'static [u8] = "Grapheme_Link".as_bytes();
const SHORT_NAME: &'static [u8] = "Gr_Link".as_bytes();
}make_binary_property! {
2394 name: "Grapheme_Link";
2395 short_name: "Gr_Link";
2396 ident: GraphemeLink;
2397 data_marker: crate::provider::PropertyBinaryGraphemeLinkV1;
2398 singleton: SINGLETON_PROPERTY_BINARY_GRAPHEME_LINK_V1;
2399 }
2404
2405#[doc =
r" Characters commonly used for the representation of hexadecimal numbers, plus their"]
#[doc = r" compatibility equivalents."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::HexDigit;"]
#[doc = r""]
#[doc = r" let hex_digit = CodePointSetData::new::<HexDigit>();"]
#[doc = r""]
#[doc = r" assert!(hex_digit.contains('0'));"]
#[doc =
r" assert!(!hex_digit.contains('੩')); // U+0A69 GURMUKHI DIGIT THREE"]
#[doc = r" assert!(hex_digit.contains('f'));"]
#[doc =
r" assert!(hex_digit.contains('f')); // U+FF46 FULLWIDTH LATIN SMALL LETTER F"]
#[doc =
r" assert!(hex_digit.contains('F')); // U+FF26 FULLWIDTH LATIN CAPITAL LETTER F"]
#[doc =
r" assert!(!hex_digit.contains('Ä')); // U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct HexDigit;
#[automatically_derived]
impl ::core::fmt::Debug for HexDigit {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "HexDigit")
}
}
impl crate::private::Sealed for HexDigit {}
impl BinaryProperty for HexDigit {
type DataMarker = crate::provider::PropertyBinaryHexDigitV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_HEX_DIGIT_V1;
const NAME: &'static [u8] = "Hex_Digit".as_bytes();
const SHORT_NAME: &'static [u8] = "Hex".as_bytes();
}make_binary_property! {
2406 name: "Hex_Digit";
2407 short_name: "Hex";
2408 ident: HexDigit;
2409 data_marker: crate::provider::PropertyBinaryHexDigitV1;
2410 singleton: SINGLETON_PROPERTY_BINARY_HEX_DIGIT_V1;
2411 }
2430
2431#[doc = r" Deprecated property."]
#[doc = r""]
#[doc = r" Dashes which are used to mark connections between pieces of"]
#[doc = r" words, plus the Katakana middle dot."]
#[non_exhaustive]
pub struct Hyphen;
#[automatically_derived]
impl ::core::fmt::Debug for Hyphen {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Hyphen")
}
}
impl crate::private::Sealed for Hyphen {}
impl BinaryProperty for Hyphen {
type DataMarker = crate::provider::PropertyBinaryHyphenV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_HYPHEN_V1;
const NAME: &'static [u8] = "Hyphen".as_bytes();
const SHORT_NAME: &'static [u8] = "Hyphen".as_bytes();
}make_binary_property! {
2432 name: "Hyphen";
2433 short_name: "Hyphen";
2434 ident: Hyphen;
2435 data_marker: crate::provider::PropertyBinaryHyphenV1;
2436 singleton: SINGLETON_PROPERTY_BINARY_HYPHEN_V1;
2437 }
2442
2443#[doc =
r" Characters that can come after the first character in an identifier."]
#[doc = r""]
#[doc = r" If using NFKC to"]
#[doc =
r" fold differences between characters, use [`XidContinue`] instead. See"]
#[doc =
r" [`Unicode Standard Annex #31`](https://www.unicode.org/reports/tr31/tr31-35.html) for"]
#[doc = r" more details."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::IdContinue;"]
#[doc = r""]
#[doc = r" let id_continue = CodePointSetData::new::<IdContinue>();"]
#[doc = r""]
#[doc = r" assert!(id_continue.contains('x'));"]
#[doc = r" assert!(id_continue.contains('1'));"]
#[doc = r" assert!(id_continue.contains('_'));"]
#[doc = r" assert!(id_continue.contains('ߝ')); // U+07DD NKO LETTER FA"]
#[doc =
r" assert!(!id_continue.contains('ⓧ')); // U+24E7 CIRCLED LATIN SMALL LETTER X"]
#[doc =
r" assert!(id_continue.contains('\u{FC5E}')); // ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct IdContinue;
#[automatically_derived]
impl ::core::fmt::Debug for IdContinue {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "IdContinue")
}
}
impl crate::private::Sealed for IdContinue {}
impl BinaryProperty for IdContinue {
type DataMarker = crate::provider::PropertyBinaryIdContinueV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_ID_CONTINUE_V1;
const NAME: &'static [u8] = "Id_Continue".as_bytes();
const SHORT_NAME: &'static [u8] = "IDC".as_bytes();
}make_binary_property! {
2444 name: "Id_Continue";
2445 short_name: "IDC";
2446 ident: IdContinue;
2447 data_marker: crate::provider::PropertyBinaryIdContinueV1;
2448 singleton: SINGLETON_PROPERTY_BINARY_ID_CONTINUE_V1;
2449 }
2472
2473#[doc =
r" Characters considered to be CJKV (Chinese, Japanese, Korean, and Vietnamese)"]
#[doc = r" ideographs, or related siniform ideographs"]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Ideographic;"]
#[doc = r""]
#[doc = r" let ideographic = CodePointSetData::new::<Ideographic>();"]
#[doc = r""]
#[doc =
r" assert!(ideographic.contains('川')); // U+5DDD CJK UNIFIED IDEOGRAPH-5DDD"]
#[doc =
r" assert!(!ideographic.contains('밥')); // U+BC25 HANGUL SYLLABLE BAB"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Ideographic;
#[automatically_derived]
impl ::core::fmt::Debug for Ideographic {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Ideographic")
}
}
impl crate::private::Sealed for Ideographic {}
impl BinaryProperty for Ideographic {
type DataMarker = crate::provider::PropertyBinaryIdeographicV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_IDEOGRAPHIC_V1;
const NAME: &'static [u8] = "Ideographic".as_bytes();
const SHORT_NAME: &'static [u8] = "Ideo".as_bytes();
}make_binary_property! {
2474 name: "Ideographic";
2475 short_name: "Ideo";
2476 ident: Ideographic;
2477 data_marker: crate::provider::PropertyBinaryIdeographicV1;
2478 singleton: SINGLETON_PROPERTY_BINARY_IDEOGRAPHIC_V1;
2479 }
2494
2495#[doc = r" Characters that can begin an identifier."]
#[doc = r""]
#[doc = r" If using NFKC to fold differences between"]
#[doc =
r" characters, use [`XidStart`] instead. See [`Unicode Standard Annex"]
#[doc =
r" #31`](https://www.unicode.org/reports/tr31/tr31-35.html) for more details."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::IdStart;"]
#[doc = r""]
#[doc = r" let id_start = CodePointSetData::new::<IdStart>();"]
#[doc = r""]
#[doc = r" assert!(id_start.contains('x'));"]
#[doc = r" assert!(!id_start.contains('1'));"]
#[doc = r" assert!(!id_start.contains('_'));"]
#[doc = r" assert!(id_start.contains('ߝ')); // U+07DD NKO LETTER FA"]
#[doc =
r" assert!(!id_start.contains('ⓧ')); // U+24E7 CIRCLED LATIN SMALL LETTER X"]
#[doc =
r" assert!(id_start.contains('\u{FC5E}')); // ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct IdStart;
#[automatically_derived]
impl ::core::fmt::Debug for IdStart {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "IdStart")
}
}
impl crate::private::Sealed for IdStart {}
impl BinaryProperty for IdStart {
type DataMarker = crate::provider::PropertyBinaryIdStartV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_ID_START_V1;
const NAME: &'static [u8] = "Id_Start".as_bytes();
const SHORT_NAME: &'static [u8] = "IDS".as_bytes();
}make_binary_property! {
2496 name: "Id_Start";
2497 short_name: "IDS";
2498 ident: IdStart;
2499 data_marker: crate::provider::PropertyBinaryIdStartV1;
2500 singleton: SINGLETON_PROPERTY_BINARY_ID_START_V1;
2501 }
2523
2524#[doc = r" Characters used in Ideographic Description Sequences."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::IdsBinaryOperator;"]
#[doc = r""]
#[doc =
r" let ids_binary_operator = CodePointSetData::new::<IdsBinaryOperator>();"]
#[doc = r""]
#[doc =
r" assert!(ids_binary_operator.contains('\u{2FF5}')); // IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE"]
#[doc =
r" assert!(!ids_binary_operator.contains('\u{3006}')); // IDEOGRAPHIC CLOSING MARK"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct IdsBinaryOperator;
#[automatically_derived]
impl ::core::fmt::Debug for IdsBinaryOperator {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "IdsBinaryOperator")
}
}
impl crate::private::Sealed for IdsBinaryOperator {}
impl BinaryProperty for IdsBinaryOperator {
type DataMarker = crate::provider::PropertyBinaryIdsBinaryOperatorV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_IDS_BINARY_OPERATOR_V1;
const NAME: &'static [u8] = "Ids_Binary_Operator".as_bytes();
const SHORT_NAME: &'static [u8] = "IDSB".as_bytes();
}make_binary_property! {
2525 name: "Ids_Binary_Operator";
2526 short_name: "IDSB";
2527 ident: IdsBinaryOperator;
2528 data_marker: crate::provider::PropertyBinaryIdsBinaryOperatorV1;
2529 singleton: SINGLETON_PROPERTY_BINARY_IDS_BINARY_OPERATOR_V1;
2530 }
2544
2545#[doc = r" Characters used in Ideographic Description Sequences."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::IdsTrinaryOperator;"]
#[doc = r""]
#[doc =
r" let ids_trinary_operator = CodePointSetData::new::<IdsTrinaryOperator>();"]
#[doc = r""]
#[doc =
r" assert!(ids_trinary_operator.contains('\u{2FF2}')); // IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT"]
#[doc =
r" assert!(ids_trinary_operator.contains('\u{2FF3}')); // IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW"]
#[doc = r" assert!(!ids_trinary_operator.contains('\u{2FF4}'));"]
#[doc =
r" assert!(!ids_trinary_operator.contains('\u{2FF5}')); // IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE"]
#[doc =
r" assert!(!ids_trinary_operator.contains('\u{3006}')); // IDEOGRAPHIC CLOSING MARK"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct IdsTrinaryOperator;
#[automatically_derived]
impl ::core::fmt::Debug for IdsTrinaryOperator {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "IdsTrinaryOperator")
}
}
impl crate::private::Sealed for IdsTrinaryOperator {}
impl BinaryProperty for IdsTrinaryOperator {
type DataMarker = crate::provider::PropertyBinaryIdsTrinaryOperatorV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_IDS_TRINARY_OPERATOR_V1;
const NAME: &'static [u8] = "Ids_Trinary_Operator".as_bytes();
const SHORT_NAME: &'static [u8] = "IDST".as_bytes();
}make_binary_property! {
2546 name: "Ids_Trinary_Operator";
2547 short_name: "IDST";
2548 ident: IdsTrinaryOperator;
2549 data_marker: crate::provider::PropertyBinaryIdsTrinaryOperatorV1;
2550 singleton: SINGLETON_PROPERTY_BINARY_IDS_TRINARY_OPERATOR_V1;
2551 }
2568
2569#[doc =
r" Format control characters which have specific functions for control of cursive joining"]
#[doc = r" and ligation."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::JoinControl;"]
#[doc = r""]
#[doc = r" let join_control = CodePointSetData::new::<JoinControl>();"]
#[doc = r""]
#[doc =
r" assert!(join_control.contains('\u{200C}')); // ZERO WIDTH NON-JOINER"]
#[doc = r" assert!(join_control.contains('\u{200D}')); // ZERO WIDTH JOINER"]
#[doc = r" assert!(!join_control.contains('\u{200E}'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct JoinControl;
#[automatically_derived]
impl ::core::fmt::Debug for JoinControl {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "JoinControl")
}
}
impl crate::private::Sealed for JoinControl {}
impl BinaryProperty for JoinControl {
type DataMarker = crate::provider::PropertyBinaryJoinControlV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_JOIN_CONTROL_V1;
const NAME: &'static [u8] = "Join_Control".as_bytes();
const SHORT_NAME: &'static [u8] = "Join_C".as_bytes();
}make_binary_property! {
2570 name: "Join_Control";
2571 short_name: "Join_C";
2572 ident: JoinControl;
2573 data_marker: crate::provider::PropertyBinaryJoinControlV1;
2574 singleton: SINGLETON_PROPERTY_BINARY_JOIN_CONTROL_V1;
2575 }
2591
2592#[doc =
r" A small number of spacing vowel letters occurring in certain Southeast Asian scripts such as Thai and Lao."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::LogicalOrderException;"]
#[doc = r""]
#[doc =
r" let logical_order_exception = CodePointSetData::new::<LogicalOrderException>();"]
#[doc = r""]
#[doc =
r" assert!(logical_order_exception.contains('ແ')); // U+0EC1 LAO VOWEL SIGN EI"]
#[doc =
r" assert!(!logical_order_exception.contains('ະ')); // U+0EB0 LAO VOWEL SIGN A"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct LogicalOrderException;
#[automatically_derived]
impl ::core::fmt::Debug for LogicalOrderException {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "LogicalOrderException")
}
}
impl crate::private::Sealed for LogicalOrderException {}
impl BinaryProperty for LogicalOrderException {
type DataMarker = crate::provider::PropertyBinaryLogicalOrderExceptionV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_LOGICAL_ORDER_EXCEPTION_V1;
const NAME: &'static [u8] = "Logical_Order_Exception".as_bytes();
const SHORT_NAME: &'static [u8] = "LOE".as_bytes();
}make_binary_property! {
2593 name: "Logical_Order_Exception";
2594 short_name: "LOE";
2595 ident: LogicalOrderException;
2596 data_marker: crate::provider::PropertyBinaryLogicalOrderExceptionV1;
2597 singleton: SINGLETON_PROPERTY_BINARY_LOGICAL_ORDER_EXCEPTION_V1;
2598 }
2612
2613#[doc = r" Lowercase characters."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Lowercase;"]
#[doc = r""]
#[doc = r" let lowercase = CodePointSetData::new::<Lowercase>();"]
#[doc = r""]
#[doc = r" assert!(lowercase.contains('a'));"]
#[doc = r" assert!(!lowercase.contains('A'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Lowercase;
#[automatically_derived]
impl ::core::fmt::Debug for Lowercase {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Lowercase")
}
}
impl crate::private::Sealed for Lowercase {}
impl BinaryProperty for Lowercase {
type DataMarker = crate::provider::PropertyBinaryLowercaseV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_LOWERCASE_V1;
const NAME: &'static [u8] = "Lowercase".as_bytes();
const SHORT_NAME: &'static [u8] = "Lower".as_bytes();
}make_binary_property! {
2614 name: "Lowercase";
2615 short_name: "Lower";
2616 ident: Lowercase;
2617 data_marker: crate::provider::PropertyBinaryLowercaseV1;
2618 singleton: SINGLETON_PROPERTY_BINARY_LOWERCASE_V1;
2619 }
2633
2634#[doc = r" Characters used in mathematical notation."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Math;"]
#[doc = r""]
#[doc = r" let math = CodePointSetData::new::<Math>();"]
#[doc = r""]
#[doc = r" assert!(math.contains('='));"]
#[doc = r" assert!(math.contains('+'));"]
#[doc = r" assert!(!math.contains('-'));"]
#[doc = r" assert!(math.contains('−')); // U+2212 MINUS SIGN"]
#[doc = r" assert!(!math.contains('/'));"]
#[doc = r" assert!(math.contains('∕')); // U+2215 DIVISION SLASH"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Math;
#[automatically_derived]
impl ::core::fmt::Debug for Math {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Math")
}
}
impl crate::private::Sealed for Math {}
impl BinaryProperty for Math {
type DataMarker = crate::provider::PropertyBinaryMathV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_MATH_V1;
const NAME: &'static [u8] = "Math".as_bytes();
const SHORT_NAME: &'static [u8] = "Math".as_bytes();
}make_binary_property! {
2635 name: "Math";
2636 short_name: "Math";
2637 ident: Math;
2638 data_marker: crate::provider::PropertyBinaryMathV1;
2639 singleton: SINGLETON_PROPERTY_BINARY_MATH_V1;
2640 }
2658
2659#[doc = r" Code points permanently reserved for internal use."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::NoncharacterCodePoint;"]
#[doc = r""]
#[doc =
r" let noncharacter_code_point = CodePointSetData::new::<NoncharacterCodePoint>();"]
#[doc = r""]
#[doc = r" assert!(noncharacter_code_point.contains('\u{FDD0}'));"]
#[doc = r" assert!(noncharacter_code_point.contains('\u{FFFF}'));"]
#[doc = r" assert!(!noncharacter_code_point.contains('\u{10000}'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct NoncharacterCodePoint;
#[automatically_derived]
impl ::core::fmt::Debug for NoncharacterCodePoint {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "NoncharacterCodePoint")
}
}
impl crate::private::Sealed for NoncharacterCodePoint {}
impl BinaryProperty for NoncharacterCodePoint {
type DataMarker = crate::provider::PropertyBinaryNoncharacterCodePointV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_NONCHARACTER_CODE_POINT_V1;
const NAME: &'static [u8] = "Noncharacter_Code_Point".as_bytes();
const SHORT_NAME: &'static [u8] = "NChar".as_bytes();
}make_binary_property! {
2660 name: "Noncharacter_Code_Point";
2661 short_name: "NChar";
2662 ident: NoncharacterCodePoint;
2663 data_marker: crate::provider::PropertyBinaryNoncharacterCodePointV1;
2664 singleton: SINGLETON_PROPERTY_BINARY_NONCHARACTER_CODE_POINT_V1;
2665 }
2680
2681#[doc =
r" Characters that are inert under NFC, i.e., they do not interact with adjacent characters."]
#[non_exhaustive]
pub struct NfcInert;
#[automatically_derived]
impl ::core::fmt::Debug for NfcInert {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "NfcInert")
}
}
impl crate::private::Sealed for NfcInert {}
impl BinaryProperty for NfcInert {
type DataMarker = crate::provider::PropertyBinaryNfcInertV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_NFC_INERT_V1;
const NAME: &'static [u8] = "NFC_Inert".as_bytes();
const SHORT_NAME: &'static [u8] = "NFC_Inert".as_bytes();
}make_binary_property! {
2682 name: "NFC_Inert";
2683 short_name: "NFC_Inert";
2684 ident: NfcInert;
2685 data_marker: crate::provider::PropertyBinaryNfcInertV1;
2686 singleton: SINGLETON_PROPERTY_BINARY_NFC_INERT_V1;
2687 }
2689
2690#[doc =
r" Characters that are inert under NFD, i.e., they do not interact with adjacent characters."]
#[non_exhaustive]
pub struct NfdInert;
#[automatically_derived]
impl ::core::fmt::Debug for NfdInert {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "NfdInert")
}
}
impl crate::private::Sealed for NfdInert {}
impl BinaryProperty for NfdInert {
type DataMarker = crate::provider::PropertyBinaryNfdInertV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_NFD_INERT_V1;
const NAME: &'static [u8] = "NFD_Inert".as_bytes();
const SHORT_NAME: &'static [u8] = "NFD_Inert".as_bytes();
}make_binary_property! {
2691 name: "NFD_Inert";
2692 short_name: "NFD_Inert";
2693 ident: NfdInert;
2694 data_marker: crate::provider::PropertyBinaryNfdInertV1;
2695 singleton: SINGLETON_PROPERTY_BINARY_NFD_INERT_V1;
2696 }
2698
2699#[doc =
r" Characters that are inert under NFKC, i.e., they do not interact with adjacent characters."]
#[non_exhaustive]
pub struct NfkcInert;
#[automatically_derived]
impl ::core::fmt::Debug for NfkcInert {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "NfkcInert")
}
}
impl crate::private::Sealed for NfkcInert {}
impl BinaryProperty for NfkcInert {
type DataMarker = crate::provider::PropertyBinaryNfkcInertV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_NFKC_INERT_V1;
const NAME: &'static [u8] = "NFKC_Inert".as_bytes();
const SHORT_NAME: &'static [u8] = "NFKC_Inert".as_bytes();
}make_binary_property! {
2700 name: "NFKC_Inert";
2701 short_name: "NFKC_Inert";
2702 ident: NfkcInert;
2703 data_marker: crate::provider::PropertyBinaryNfkcInertV1;
2704 singleton: SINGLETON_PROPERTY_BINARY_NFKC_INERT_V1;
2705 }
2707
2708#[doc =
r" Characters that are inert under NFKD, i.e., they do not interact with adjacent characters."]
#[non_exhaustive]
pub struct NfkdInert;
#[automatically_derived]
impl ::core::fmt::Debug for NfkdInert {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "NfkdInert")
}
}
impl crate::private::Sealed for NfkdInert {}
impl BinaryProperty for NfkdInert {
type DataMarker = crate::provider::PropertyBinaryNfkdInertV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_NFKD_INERT_V1;
const NAME: &'static [u8] = "NFKD_Inert".as_bytes();
const SHORT_NAME: &'static [u8] = "NFKD_Inert".as_bytes();
}make_binary_property! {
2709 name: "NFKD_Inert";
2710 short_name: "NFKD_Inert";
2711 ident: NfkdInert;
2712 data_marker: crate::provider::PropertyBinaryNfkdInertV1;
2713 singleton: SINGLETON_PROPERTY_BINARY_NFKD_INERT_V1;
2714 }
2716
2717#[doc =
r" Characters used as syntax in patterns (such as regular expressions)."]
#[doc = r""]
#[doc = r" See [`Unicode"]
#[doc =
r" Standard Annex #31`](https://www.unicode.org/reports/tr31/tr31-35.html) for more"]
#[doc = r" details."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::PatternSyntax;"]
#[doc = r""]
#[doc = r" let pattern_syntax = CodePointSetData::new::<PatternSyntax>();"]
#[doc = r""]
#[doc = r" assert!(pattern_syntax.contains('{'));"]
#[doc =
r" assert!(pattern_syntax.contains('⇒')); // U+21D2 RIGHTWARDS DOUBLE ARROW"]
#[doc = r" assert!(!pattern_syntax.contains('0'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct PatternSyntax;
#[automatically_derived]
impl ::core::fmt::Debug for PatternSyntax {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "PatternSyntax")
}
}
impl crate::private::Sealed for PatternSyntax {}
impl BinaryProperty for PatternSyntax {
type DataMarker = crate::provider::PropertyBinaryPatternSyntaxV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_PATTERN_SYNTAX_V1;
const NAME: &'static [u8] = "Pattern_Syntax".as_bytes();
const SHORT_NAME: &'static [u8] = "Pat_Syn".as_bytes();
}make_binary_property! {
2718 name: "Pattern_Syntax";
2719 short_name: "Pat_Syn";
2720 ident: PatternSyntax;
2721 data_marker: crate::provider::PropertyBinaryPatternSyntaxV1;
2722 singleton: SINGLETON_PROPERTY_BINARY_PATTERN_SYNTAX_V1;
2723 }
2742
2743#[doc =
r" Characters used as whitespace in patterns (such as regular expressions)."]
#[doc = r""]
#[doc = r" See"]
#[doc =
r" [`Unicode Standard Annex #31`](https://www.unicode.org/reports/tr31/tr31-35.html) for"]
#[doc = r" more details."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::PatternWhiteSpace;"]
#[doc = r""]
#[doc =
r" let pattern_white_space = CodePointSetData::new::<PatternWhiteSpace>();"]
#[doc = r""]
#[doc = r" assert!(pattern_white_space.contains(' '));"]
#[doc =
r" assert!(pattern_white_space.contains('\u{2029}')); // PARAGRAPH SEPARATOR"]
#[doc = r" assert!(pattern_white_space.contains('\u{000A}')); // NEW LINE"]
#[doc =
r" assert!(!pattern_white_space.contains('\u{00A0}')); // NO-BREAK SPACE"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct PatternWhiteSpace;
#[automatically_derived]
impl ::core::fmt::Debug for PatternWhiteSpace {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "PatternWhiteSpace")
}
}
impl crate::private::Sealed for PatternWhiteSpace {}
impl BinaryProperty for PatternWhiteSpace {
type DataMarker = crate::provider::PropertyBinaryPatternWhiteSpaceV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_PATTERN_WHITE_SPACE_V1;
const NAME: &'static [u8] = "Pattern_White_Space".as_bytes();
const SHORT_NAME: &'static [u8] = "Pat_WS".as_bytes();
}make_binary_property! {
2744 name: "Pattern_White_Space";
2745 short_name: "Pat_WS";
2746 ident: PatternWhiteSpace;
2747 data_marker: crate::provider::PropertyBinaryPatternWhiteSpaceV1;
2748 singleton: SINGLETON_PROPERTY_BINARY_PATTERN_WHITE_SPACE_V1;
2749 }
2769
2770#[doc =
r" A small class of visible format controls, which precede and then span a sequence of"]
#[doc = r" other characters, usually digits."]
#[non_exhaustive]
pub struct PrependedConcatenationMark;
#[automatically_derived]
impl ::core::fmt::Debug for PrependedConcatenationMark {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "PrependedConcatenationMark")
}
}
impl crate::private::Sealed for PrependedConcatenationMark {}
impl BinaryProperty for PrependedConcatenationMark {
type DataMarker =
crate::provider::PropertyBinaryPrependedConcatenationMarkV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_PREPENDED_CONCATENATION_MARK_V1;
const NAME: &'static [u8] = "Prepended_Concatenation_Mark".as_bytes();
const SHORT_NAME: &'static [u8] = "PCM".as_bytes();
}make_binary_property! {
2771 name: "Prepended_Concatenation_Mark";
2772 short_name: "PCM";
2773 ident: PrependedConcatenationMark;
2774 data_marker: crate::provider::PropertyBinaryPrependedConcatenationMarkV1;
2775 singleton: SINGLETON_PROPERTY_BINARY_PREPENDED_CONCATENATION_MARK_V1;
2776 }
2779
2780#[doc = r" Printable characters (visible characters and whitespace)."]
#[doc = r""]
#[doc = r" This is defined for POSIX compatibility."]
#[non_exhaustive]
pub struct Print;
#[automatically_derived]
impl ::core::fmt::Debug for Print {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Print")
}
}
impl crate::private::Sealed for Print {}
impl BinaryProperty for Print {
type DataMarker = crate::provider::PropertyBinaryPrintV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_PRINT_V1;
const NAME: &'static [u8] = "Print".as_bytes();
const SHORT_NAME: &'static [u8] = "Print".as_bytes();
}make_binary_property! {
2781 name: "Print";
2782 short_name: "Print";
2783 ident: Print;
2784 data_marker: crate::provider::PropertyBinaryPrintV1;
2785 singleton: SINGLETON_PROPERTY_BINARY_PRINT_V1;
2786 }
2790
2791#[doc = r" Punctuation characters that function as quotation marks."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::QuotationMark;"]
#[doc = r""]
#[doc = r" let quotation_mark = CodePointSetData::new::<QuotationMark>();"]
#[doc = r""]
#[doc = r" assert!(quotation_mark.contains('\''));"]
#[doc =
r" assert!(quotation_mark.contains('„')); // U+201E DOUBLE LOW-9 QUOTATION MARK"]
#[doc = r" assert!(!quotation_mark.contains('<'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct QuotationMark;
#[automatically_derived]
impl ::core::fmt::Debug for QuotationMark {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "QuotationMark")
}
}
impl crate::private::Sealed for QuotationMark {}
impl BinaryProperty for QuotationMark {
type DataMarker = crate::provider::PropertyBinaryQuotationMarkV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_QUOTATION_MARK_V1;
const NAME: &'static [u8] = "Quotation_Mark".as_bytes();
const SHORT_NAME: &'static [u8] = "QMark".as_bytes();
}make_binary_property! {
2792 name: "Quotation_Mark";
2793 short_name: "QMark";
2794 ident: QuotationMark;
2795 data_marker: crate::provider::PropertyBinaryQuotationMarkV1;
2796 singleton: SINGLETON_PROPERTY_BINARY_QUOTATION_MARK_V1;
2797 }
2812
2813#[doc =
r" Characters used in the definition of Ideographic Description Sequences."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Radical;"]
#[doc = r""]
#[doc = r" let radical = CodePointSetData::new::<Radical>();"]
#[doc = r""]
#[doc = r" assert!(radical.contains('⺆')); // U+2E86 CJK RADICAL BOX"]
#[doc =
r" assert!(!radical.contains('丹')); // U+F95E CJK COMPATIBILITY IDEOGRAPH-F95E"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Radical;
#[automatically_derived]
impl ::core::fmt::Debug for Radical {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Radical")
}
}
impl crate::private::Sealed for Radical {}
impl BinaryProperty for Radical {
type DataMarker = crate::provider::PropertyBinaryRadicalV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_RADICAL_V1;
const NAME: &'static [u8] = "Radical".as_bytes();
const SHORT_NAME: &'static [u8] = "Radical".as_bytes();
}make_binary_property! {
2814 name: "Radical";
2815 short_name: "Radical";
2816 ident: Radical;
2817 data_marker: crate::provider::PropertyBinaryRadicalV1;
2818 singleton: SINGLETON_PROPERTY_BINARY_RADICAL_V1;
2819 }
2833
2834#[doc = r" Regional indicator characters, `U+1F1E6..U+1F1FF`."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::RegionalIndicator;"]
#[doc = r""]
#[doc =
r" let regional_indicator = CodePointSetData::new::<RegionalIndicator>();"]
#[doc = r""]
#[doc =
r" assert!(regional_indicator.contains('🇹')); // U+1F1F9 REGIONAL INDICATOR SYMBOL LETTER T"]
#[doc =
r" assert!(!regional_indicator.contains('Ⓣ')); // U+24C9 CIRCLED LATIN CAPITAL LETTER T"]
#[doc = r" assert!(!regional_indicator.contains('T'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct RegionalIndicator;
#[automatically_derived]
impl ::core::fmt::Debug for RegionalIndicator {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "RegionalIndicator")
}
}
impl crate::private::Sealed for RegionalIndicator {}
impl BinaryProperty for RegionalIndicator {
type DataMarker = crate::provider::PropertyBinaryRegionalIndicatorV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_REGIONAL_INDICATOR_V1;
const NAME: &'static [u8] = "Regional_Indicator".as_bytes();
const SHORT_NAME: &'static [u8] = "RI".as_bytes();
}make_binary_property! {
2835 name: "Regional_Indicator";
2836 short_name: "RI";
2837 ident: RegionalIndicator;
2838 data_marker: crate::provider::PropertyBinaryRegionalIndicatorV1;
2839 singleton: SINGLETON_PROPERTY_BINARY_REGIONAL_INDICATOR_V1;
2840 }
2855
2856#[doc = r#" Characters with a "soft dot", like i or j."#]
#[doc = r""]
#[doc = r" An accent placed on these characters causes"]
#[doc = r" the dot to disappear."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::SoftDotted;"]
#[doc = r""]
#[doc = r" let soft_dotted = CodePointSetData::new::<SoftDotted>();"]
#[doc = r""]
#[doc =
r" assert!(soft_dotted.contains('і')); //U+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I"]
#[doc =
r" assert!(!soft_dotted.contains('ı')); // U+0131 LATIN SMALL LETTER DOTLESS I"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct SoftDotted;
#[automatically_derived]
impl ::core::fmt::Debug for SoftDotted {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "SoftDotted")
}
}
impl crate::private::Sealed for SoftDotted {}
impl BinaryProperty for SoftDotted {
type DataMarker = crate::provider::PropertyBinarySoftDottedV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_SOFT_DOTTED_V1;
const NAME: &'static [u8] = "Soft_Dotted".as_bytes();
const SHORT_NAME: &'static [u8] = "SD".as_bytes();
}make_binary_property! {
2857 name: "Soft_Dotted";
2858 short_name: "SD";
2859 ident: SoftDotted;
2860 data_marker: crate::provider::PropertyBinarySoftDottedV1;
2861 singleton: SINGLETON_PROPERTY_BINARY_SOFT_DOTTED_V1;
2862 }
2879
2880#[doc =
r" Characters that are starters in terms of Unicode normalization and combining character"]
#[doc = r" sequences."]
#[non_exhaustive]
pub struct SegmentStarter;
#[automatically_derived]
impl ::core::fmt::Debug for SegmentStarter {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "SegmentStarter")
}
}
impl crate::private::Sealed for SegmentStarter {}
impl BinaryProperty for SegmentStarter {
type DataMarker = crate::provider::PropertyBinarySegmentStarterV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_SEGMENT_STARTER_V1;
const NAME: &'static [u8] = "Segment_Starter".as_bytes();
const SHORT_NAME: &'static [u8] = "Segment_Starter".as_bytes();
}make_binary_property! {
2881 name: "Segment_Starter";
2882 short_name: "Segment_Starter";
2883 ident: SegmentStarter;
2884 data_marker: crate::provider::PropertyBinarySegmentStarterV1;
2885 singleton: SINGLETON_PROPERTY_BINARY_SEGMENT_STARTER_V1;
2886 }
2889
2890#[doc =
r" Characters that are either the source of a case mapping or in the target of a case"]
#[doc = r" mapping."]
#[non_exhaustive]
pub struct CaseSensitive;
#[automatically_derived]
impl ::core::fmt::Debug for CaseSensitive {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "CaseSensitive")
}
}
impl crate::private::Sealed for CaseSensitive {}
impl BinaryProperty for CaseSensitive {
type DataMarker = crate::provider::PropertyBinaryCaseSensitiveV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_CASE_SENSITIVE_V1;
const NAME: &'static [u8] = "Case_Sensitive".as_bytes();
const SHORT_NAME: &'static [u8] = "Case_Sensitive".as_bytes();
}make_binary_property! {
2891 name: "Case_Sensitive";
2892 short_name: "Case_Sensitive";
2893 ident: CaseSensitive;
2894 data_marker: crate::provider::PropertyBinaryCaseSensitiveV1;
2895 singleton: SINGLETON_PROPERTY_BINARY_CASE_SENSITIVE_V1;
2896 }
2899
2900#[doc = r" Punctuation characters that generally mark the end of sentences."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::SentenceTerminal;"]
#[doc = r""]
#[doc =
r" let sentence_terminal = CodePointSetData::new::<SentenceTerminal>();"]
#[doc = r""]
#[doc = r" assert!(sentence_terminal.contains('.'));"]
#[doc = r" assert!(sentence_terminal.contains('?'));"]
#[doc =
r" assert!(sentence_terminal.contains('᪨')); // U+1AA8 TAI THAM SIGN KAAN"]
#[doc = r" assert!(!sentence_terminal.contains(','));"]
#[doc =
r" assert!(!sentence_terminal.contains('¿')); // U+00BF INVERTED QUESTION MARK"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct SentenceTerminal;
#[automatically_derived]
impl ::core::fmt::Debug for SentenceTerminal {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "SentenceTerminal")
}
}
impl crate::private::Sealed for SentenceTerminal {}
impl BinaryProperty for SentenceTerminal {
type DataMarker = crate::provider::PropertyBinarySentenceTerminalV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_SENTENCE_TERMINAL_V1;
const NAME: &'static [u8] = "Sentence_Terminal".as_bytes();
const SHORT_NAME: &'static [u8] = "STerm".as_bytes();
}make_binary_property! {
2901 name: "Sentence_Terminal";
2902 short_name: "STerm";
2903 ident: SentenceTerminal;
2904 data_marker: crate::provider::PropertyBinarySentenceTerminalV1;
2905 singleton: SINGLETON_PROPERTY_BINARY_SENTENCE_TERMINAL_V1;
2906 }
2923
2924#[doc =
r" Punctuation characters that generally mark the end of textual units."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::TerminalPunctuation;"]
#[doc = r""]
#[doc =
r" let terminal_punctuation = CodePointSetData::new::<TerminalPunctuation>();"]
#[doc = r""]
#[doc = r" assert!(terminal_punctuation.contains('.'));"]
#[doc = r" assert!(terminal_punctuation.contains('?'));"]
#[doc =
r" assert!(terminal_punctuation.contains('᪨')); // U+1AA8 TAI THAM SIGN KAAN"]
#[doc = r" assert!(terminal_punctuation.contains(','));"]
#[doc =
r" assert!(!terminal_punctuation.contains('¿')); // U+00BF INVERTED QUESTION MARK"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct TerminalPunctuation;
#[automatically_derived]
impl ::core::fmt::Debug for TerminalPunctuation {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "TerminalPunctuation")
}
}
impl crate::private::Sealed for TerminalPunctuation {}
impl BinaryProperty for TerminalPunctuation {
type DataMarker = crate::provider::PropertyBinaryTerminalPunctuationV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_TERMINAL_PUNCTUATION_V1;
const NAME: &'static [u8] = "Terminal_Punctuation".as_bytes();
const SHORT_NAME: &'static [u8] = "Term".as_bytes();
}make_binary_property! {
2925 name: "Terminal_Punctuation";
2926 short_name: "Term";
2927 ident: TerminalPunctuation;
2928 data_marker: crate::provider::PropertyBinaryTerminalPunctuationV1;
2929 singleton: SINGLETON_PROPERTY_BINARY_TERMINAL_PUNCTUATION_V1;
2930 }
2947
2948#[doc =
r" A property which specifies the exact set of Unified CJK Ideographs in the standard."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::UnifiedIdeograph;"]
#[doc = r""]
#[doc =
r" let unified_ideograph = CodePointSetData::new::<UnifiedIdeograph>();"]
#[doc = r""]
#[doc =
r" assert!(unified_ideograph.contains('川')); // U+5DDD CJK UNIFIED IDEOGRAPH-5DDD"]
#[doc =
r" assert!(unified_ideograph.contains('木')); // U+6728 CJK UNIFIED IDEOGRAPH-6728"]
#[doc =
r" assert!(!unified_ideograph.contains('𛅸')); // U+1B178 NUSHU CHARACTER-1B178"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct UnifiedIdeograph;
#[automatically_derived]
impl ::core::fmt::Debug for UnifiedIdeograph {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "UnifiedIdeograph")
}
}
impl crate::private::Sealed for UnifiedIdeograph {}
impl BinaryProperty for UnifiedIdeograph {
type DataMarker = crate::provider::PropertyBinaryUnifiedIdeographV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_UNIFIED_IDEOGRAPH_V1;
const NAME: &'static [u8] = "Unified_Ideograph".as_bytes();
const SHORT_NAME: &'static [u8] = "UIdeo".as_bytes();
}make_binary_property! {
2949 name: "Unified_Ideograph";
2950 short_name: "UIdeo";
2951 ident: UnifiedIdeograph;
2952 data_marker: crate::provider::PropertyBinaryUnifiedIdeographV1;
2953 singleton: SINGLETON_PROPERTY_BINARY_UNIFIED_IDEOGRAPH_V1;
2954 }
2969
2970#[doc = r" Uppercase characters."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::Uppercase;"]
#[doc = r""]
#[doc = r" let uppercase = CodePointSetData::new::<Uppercase>();"]
#[doc = r""]
#[doc = r" assert!(uppercase.contains('U'));"]
#[doc = r" assert!(!uppercase.contains('u'));"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct Uppercase;
#[automatically_derived]
impl ::core::fmt::Debug for Uppercase {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Uppercase")
}
}
impl crate::private::Sealed for Uppercase {}
impl BinaryProperty for Uppercase {
type DataMarker = crate::provider::PropertyBinaryUppercaseV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_UPPERCASE_V1;
const NAME: &'static [u8] = "Uppercase".as_bytes();
const SHORT_NAME: &'static [u8] = "Upper".as_bytes();
}make_binary_property! {
2971 name: "Uppercase";
2972 short_name: "Upper";
2973 ident: Uppercase;
2974 data_marker: crate::provider::PropertyBinaryUppercaseV1;
2975 singleton: SINGLETON_PROPERTY_BINARY_UPPERCASE_V1;
2976 }
2990
2991#[doc = r" Characters that are Variation Selectors."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::VariationSelector;"]
#[doc = r""]
#[doc =
r" let variation_selector = CodePointSetData::new::<VariationSelector>();"]
#[doc = r""]
#[doc =
r" assert!(variation_selector.contains('\u{180D}')); // MONGOLIAN FREE VARIATION SELECTOR THREE"]
#[doc =
r" assert!(!variation_selector.contains('\u{303E}')); // IDEOGRAPHIC VARIATION INDICATOR"]
#[doc =
r" assert!(variation_selector.contains('\u{FE0F}')); // VARIATION SELECTOR-16"]
#[doc =
r" assert!(!variation_selector.contains('\u{FE10}')); // PRESENTATION FORM FOR VERTICAL COMMA"]
#[doc =
r" assert!(variation_selector.contains('\u{E01EF}')); // VARIATION SELECTOR-256"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct VariationSelector;
#[automatically_derived]
impl ::core::fmt::Debug for VariationSelector {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "VariationSelector")
}
}
impl crate::private::Sealed for VariationSelector {}
impl BinaryProperty for VariationSelector {
type DataMarker = crate::provider::PropertyBinaryVariationSelectorV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_VARIATION_SELECTOR_V1;
const NAME: &'static [u8] = "Variation_Selector".as_bytes();
const SHORT_NAME: &'static [u8] = "VS".as_bytes();
}make_binary_property! {
2992 name: "Variation_Selector";
2993 short_name: "VS";
2994 ident: VariationSelector;
2995 data_marker: crate::provider::PropertyBinaryVariationSelectorV1;
2996 singleton: SINGLETON_PROPERTY_BINARY_VARIATION_SELECTOR_V1;
2997 }
3014
3015#[doc =
r" Spaces, separator characters and other control characters which should be treated by"]
#[doc =
r#" programming languages as "white space" for the purpose of parsing elements."#]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::WhiteSpace;"]
#[doc = r""]
#[doc = r" let white_space = CodePointSetData::new::<WhiteSpace>();"]
#[doc = r""]
#[doc = r" assert!(white_space.contains(' '));"]
#[doc = r" assert!(white_space.contains('\u{000A}')); // NEW LINE"]
#[doc = r" assert!(white_space.contains('\u{00A0}')); // NO-BREAK SPACE"]
#[doc = r" assert!(!white_space.contains('\u{200B}')); // ZERO WIDTH SPACE"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct WhiteSpace;
#[automatically_derived]
impl ::core::fmt::Debug for WhiteSpace {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "WhiteSpace")
}
}
impl crate::private::Sealed for WhiteSpace {}
impl BinaryProperty for WhiteSpace {
type DataMarker = crate::provider::PropertyBinaryWhiteSpaceV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_WHITE_SPACE_V1;
const NAME: &'static [u8] = "White_Space".as_bytes();
const SHORT_NAME: &'static [u8] = "space".as_bytes();
}make_binary_property! {
3016 name: "White_Space";
3017 short_name: "space";
3018 ident: WhiteSpace;
3019 data_marker: crate::provider::PropertyBinaryWhiteSpaceV1;
3020 singleton: SINGLETON_PROPERTY_BINARY_WHITE_SPACE_V1;
3021 }
3038
3039#[doc = r" Hexadecimal digits"]
#[doc = r""]
#[doc = r" This is defined for POSIX compatibility."]
#[non_exhaustive]
pub struct Xdigit;
#[automatically_derived]
impl ::core::fmt::Debug for Xdigit {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "Xdigit")
}
}
impl crate::private::Sealed for Xdigit {}
impl BinaryProperty for Xdigit {
type DataMarker = crate::provider::PropertyBinaryXdigitV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_XDIGIT_V1;
const NAME: &'static [u8] = "Xdigit".as_bytes();
const SHORT_NAME: &'static [u8] = "Xdigit".as_bytes();
}make_binary_property! {
3040 name: "Xdigit";
3041 short_name: "Xdigit";
3042 ident: Xdigit;
3043 data_marker: crate::provider::PropertyBinaryXdigitV1;
3044 singleton: SINGLETON_PROPERTY_BINARY_XDIGIT_V1;
3045 }
3049
3050#[doc =
r" Characters that can come after the first character in an identifier."]
#[doc = r""]
#[doc = r" See [`Unicode Standard Annex"]
#[doc =
r" #31`](https://www.unicode.org/reports/tr31/tr31-35.html) for more details."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::XidContinue;"]
#[doc = r""]
#[doc = r" let xid_continue = CodePointSetData::new::<XidContinue>();"]
#[doc = r""]
#[doc = r" assert!(xid_continue.contains('x'));"]
#[doc = r" assert!(xid_continue.contains('1'));"]
#[doc = r" assert!(xid_continue.contains('_'));"]
#[doc = r" assert!(xid_continue.contains('ߝ')); // U+07DD NKO LETTER FA"]
#[doc =
r" assert!(!xid_continue.contains('ⓧ')); // U+24E7 CIRCLED LATIN SMALL LETTER X"]
#[doc =
r" assert!(!xid_continue.contains('\u{FC5E}')); // ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct XidContinue;
#[automatically_derived]
impl ::core::fmt::Debug for XidContinue {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "XidContinue")
}
}
impl crate::private::Sealed for XidContinue {}
impl BinaryProperty for XidContinue {
type DataMarker = crate::provider::PropertyBinaryXidContinueV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_XID_CONTINUE_V1;
const NAME: &'static [u8] = "XID_Continue".as_bytes();
const SHORT_NAME: &'static [u8] = "XIDC".as_bytes();
}make_binary_property! {
3051 name: "XID_Continue";
3052 short_name: "XIDC";
3053 ident: XidContinue;
3054 data_marker: crate::provider::PropertyBinaryXidContinueV1;
3055 singleton: SINGLETON_PROPERTY_BINARY_XID_CONTINUE_V1;
3056 }
3077
3078#[doc = r" Characters that can begin an identifier."]
#[doc = r""]
#[doc = r" See [`Unicode"]
#[doc =
r" Standard Annex #31`](https://www.unicode.org/reports/tr31/tr31-35.html) for more"]
#[doc = r" details."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::CodePointSetData;"]
#[doc = r" use icu::properties::props::XidStart;"]
#[doc = r""]
#[doc = r" let xid_start = CodePointSetData::new::<XidStart>();"]
#[doc = r""]
#[doc = r" assert!(xid_start.contains('x'));"]
#[doc = r" assert!(!xid_start.contains('1'));"]
#[doc = r" assert!(!xid_start.contains('_'));"]
#[doc = r" assert!(xid_start.contains('ߝ')); // U+07DD NKO LETTER FA"]
#[doc =
r" assert!(!xid_start.contains('ⓧ')); // U+24E7 CIRCLED LATIN SMALL LETTER X"]
#[doc =
r" assert!(!xid_start.contains('\u{FC5E}')); // ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM"]
#[doc = r" ```"]
#[non_exhaustive]
pub struct XidStart;
#[automatically_derived]
impl ::core::fmt::Debug for XidStart {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "XidStart")
}
}
impl crate::private::Sealed for XidStart {}
impl BinaryProperty for XidStart {
type DataMarker = crate::provider::PropertyBinaryXidStartV1;
const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_XID_START_V1;
const NAME: &'static [u8] = "XID_Start".as_bytes();
const SHORT_NAME: &'static [u8] = "XIDS".as_bytes();
}make_binary_property! {
3079 name: "XID_Start";
3080 short_name: "XIDS";
3081 ident: XidStart;
3082 data_marker: crate::provider::PropertyBinaryXidStartV1;
3083 singleton: SINGLETON_PROPERTY_BINARY_XID_START_V1;
3084 }
3106
3107pub use crate::emoji::EmojiSet;
3108
3109macro_rules! make_emoji_set {
3110 (
3111 ident: $ident:ident;
3112 data_marker: $data_marker:ty;
3113 singleton: $singleton:ident;
3114 $(#[$doc:meta])+
3115 ) => {
3116 $(#[$doc])+
3117 #[derive(Debug)]
3118 #[non_exhaustive]
3119 pub struct $ident;
3120
3121 impl crate::private::Sealed for $ident {}
3122
3123 impl EmojiSet for $ident {
3124 type DataMarker = $data_marker;
3125 #[cfg(feature = "compiled_data")]
3126 const SINGLETON: &'static crate::provider::PropertyUnicodeSet<'static> =
3127 &crate::provider::Baked::$singleton;
3128 }
3129 }
3130}
3131
3132#[doc =
r" Characters and character sequences intended for general-purpose, independent, direct input."]
#[doc = r""]
#[doc =
r" See [`Unicode Technical Standard #51`](https://unicode.org/reports/tr51/) for more"]
#[doc = r" details."]
#[doc = r""]
#[doc = r" # Example"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use icu::properties::EmojiSetData;"]
#[doc = r" use icu::properties::props::BasicEmoji;"]
#[doc = r""]
#[doc = r" let basic_emoji = EmojiSetData::new::<BasicEmoji>();"]
#[doc = r""]
#[doc = r" assert!(!basic_emoji.contains('\u{0020}'));"]
#[doc = r" assert!(!basic_emoji.contains('\n'));"]
#[doc = r" assert!(basic_emoji.contains('🦃')); // U+1F983 TURKEY"]
#[doc = r#" assert!(basic_emoji.contains_str("\u{1F983}"));"#]
#[doc =
r#" assert!(basic_emoji.contains_str("\u{1F6E4}\u{FE0F}")); // railway track"#]
#[doc =
r#" assert!(!basic_emoji.contains_str("\u{0033}\u{FE0F}\u{20E3}")); // Emoji_Keycap_Sequence, keycap 3"#]
#[doc = r" ```"]
#[non_exhaustive]
pub struct BasicEmoji;
#[automatically_derived]
impl ::core::fmt::Debug for BasicEmoji {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "BasicEmoji")
}
}
impl crate::private::Sealed for BasicEmoji {}
impl EmojiSet for BasicEmoji {
type DataMarker = crate::provider::PropertyBinaryBasicEmojiV1;
const SINGLETON: &'static crate::provider::PropertyUnicodeSet<'static> =
&crate::provider::Baked::SINGLETON_PROPERTY_BINARY_BASIC_EMOJI_V1;
}make_emoji_set! {
3133 ident: BasicEmoji;
3134 data_marker: crate::provider::PropertyBinaryBasicEmojiV1;
3135 singleton: SINGLETON_PROPERTY_BINARY_BASIC_EMOJI_V1;
3136 }
3157
3158#[cfg(test)]
3159mod test_enumerated_property_completeness {
3160 use super::*;
3161 use std::collections::BTreeMap;
3162
3163 fn check_enum<'a, T: NamedEnumeratedProperty>(
3164 lookup: &crate::provider::names::PropertyValueNameToEnumMap<'static>,
3165 consts: impl IntoIterator<Item = &'a T>,
3166 ) where
3167 u16: From<T>,
3168 {
3169 let mut data: BTreeMap<_, _> = lookup
3170 .map
3171 .iter()
3172 .map(|(name, value)| (value, (name, "Data")))
3173 .collect();
3174
3175 let names = crate::PropertyNamesLong::<T>::new();
3176 let consts = consts.into_iter().map(|value| {
3177 (
3178 u16::from(*value) as usize,
3179 (
3180 names.get(*value).unwrap_or("<unknown>").to_string(),
3181 "Consts",
3182 ),
3183 )
3184 });
3185
3186 let mut diff = Vec::new();
3187 for t @ (value, _) in consts {
3188 if data.remove(&value).is_none() {
3189 diff.push(t);
3190 }
3191 }
3192 diff.extend(data);
3193
3194 let mut fmt_diff = String::new();
3195 for (value, (name, source)) in diff {
3196 fmt_diff.push_str(&format!("{source}:\t{name} = {value:?}\n"));
3197 }
3198
3199 assert!(
3200 fmt_diff.is_empty(),
3201 "Values defined in data do not match values defined in consts. Difference:\n{}",
3202 fmt_diff
3203 );
3204 }
3205
3206 #[test]
3207 fn test_ea() {
3208 check_enum(
3209 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_EAST_ASIAN_WIDTH_V1,
3210 EastAsianWidth::ALL_VALUES,
3211 );
3212 }
3213
3214 #[test]
3215 fn test_ccc() {
3216 check_enum(
3217 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_CANONICAL_COMBINING_CLASS_V1,
3218 CanonicalCombiningClass::ALL_VALUES,
3219 );
3220 }
3221
3222 #[test]
3223 fn test_jt() {
3224 check_enum(
3225 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_JOINING_TYPE_V1,
3226 JoiningType::ALL_VALUES,
3227 );
3228 }
3229
3230 #[test]
3231 fn test_insc() {
3232 check_enum(
3233 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_INDIC_SYLLABIC_CATEGORY_V1,
3234 IndicSyllabicCategory::ALL_VALUES,
3235 );
3236 }
3237
3238 #[test]
3239 fn test_sb() {
3240 check_enum(
3241 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_SENTENCE_BREAK_V1,
3242 SentenceBreak::ALL_VALUES,
3243 );
3244 }
3245
3246 #[test]
3247 fn test_wb() {
3248 check_enum(
3249 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_WORD_BREAK_V1,
3250 WordBreak::ALL_VALUES,
3251 );
3252 }
3253
3254 #[test]
3255 fn test_bc() {
3256 check_enum(
3257 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_BIDI_CLASS_V1,
3258 BidiClass::ALL_VALUES,
3259 );
3260 }
3261
3262 #[test]
3263 fn test_hst() {
3264 check_enum(
3265 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_HANGUL_SYLLABLE_TYPE_V1,
3266 HangulSyllableType::ALL_VALUES,
3267 );
3268 }
3269
3270 #[test]
3271 fn test_vo() {
3272 check_enum(
3273 crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_VERTICAL_ORIENTATION_V1,
3274 VerticalOrientation::ALL_VALUES,
3275 );
3276 }
3277}