1#![allow(clippy::exhaustive_structs, clippy::exhaustive_enums)]
7
8pub mod names;
19
20#[cfg(feature = "alloc")]
21pub use names::{
22 PropertyNameLongCanonicalCombiningClassV1, PropertyNameShortCanonicalCombiningClassV1,
23};
24
25pub use names::{
26 PropertyNameLongBidiClassV1, PropertyNameLongEastAsianWidthV1,
27 PropertyNameLongGeneralCategoryV1, PropertyNameLongGraphemeClusterBreakV1,
28 PropertyNameLongHangulSyllableTypeV1, PropertyNameLongIndicConjunctBreakV1,
29 PropertyNameLongIndicSyllabicCategoryV1, PropertyNameLongJoiningTypeV1,
30 PropertyNameLongLineBreakV1, PropertyNameLongScriptV1, PropertyNameLongSentenceBreakV1,
31 PropertyNameLongVerticalOrientationV1, PropertyNameLongWordBreakV1,
32 PropertyNameParseBidiClassV1, PropertyNameParseCanonicalCombiningClassV1,
33 PropertyNameParseEastAsianWidthV1, PropertyNameParseGeneralCategoryMaskV1,
34 PropertyNameParseGeneralCategoryV1, PropertyNameParseGraphemeClusterBreakV1,
35 PropertyNameParseHangulSyllableTypeV1, PropertyNameParseIndicConjunctBreakV1,
36 PropertyNameParseIndicSyllabicCategoryV1, PropertyNameParseJoiningTypeV1,
37 PropertyNameParseLineBreakV1, PropertyNameParseScriptV1, PropertyNameParseSentenceBreakV1,
38 PropertyNameParseVerticalOrientationV1, PropertyNameParseWordBreakV1,
39 PropertyNameShortBidiClassV1, PropertyNameShortEastAsianWidthV1,
40 PropertyNameShortGeneralCategoryV1, PropertyNameShortGraphemeClusterBreakV1,
41 PropertyNameShortHangulSyllableTypeV1, PropertyNameShortIndicConjunctBreakV1,
42 PropertyNameShortIndicSyllabicCategoryV1, PropertyNameShortJoiningTypeV1,
43 PropertyNameShortLineBreakV1, PropertyNameShortScriptV1, PropertyNameShortSentenceBreakV1,
44 PropertyNameShortVerticalOrientationV1, PropertyNameShortWordBreakV1,
45};
46
47pub use crate::props::gc::GeneralCategoryULE;
48use crate::props::*;
49use crate::script::ScriptWithExt;
50use core::ops::RangeInclusive;
51use icu_collections::codepointinvlist::CodePointInversionList;
52use icu_collections::codepointinvliststringlist::CodePointInversionListAndStringList;
53use icu_collections::codepointtrie::{CodePointMapRange, CodePointTrie, TrieValue};
54use icu_provider::prelude::*;
55use zerofrom::ZeroFrom;
56use zerovec::{VarZeroVec, ZeroSlice};
57
58#[cfg(feature = "compiled_data")]
59#[derive(Debug)]
60pub struct Baked;
68
69#[cfg(feature = "compiled_data")]
70#[allow(unused_imports)]
71const _: () = {
72 use icu_properties_data::*;
73 pub mod icu {
74 pub use crate as properties;
75 pub use icu_collections as collections;
76 }
77 make_provider!(Baked);
78 impl_property_binary_alnum_v1!(Baked);
79 impl_property_binary_alphabetic_v1!(Baked);
80 impl_property_binary_ascii_hex_digit_v1!(Baked);
81 impl_property_binary_basic_emoji_v1!(Baked);
82 impl_property_binary_bidi_control_v1!(Baked);
83 impl_property_binary_bidi_mirrored_v1!(Baked);
84 impl_property_binary_blank_v1!(Baked);
85 impl_property_binary_case_ignorable_v1!(Baked);
86 impl_property_binary_case_sensitive_v1!(Baked);
87 impl_property_binary_cased_v1!(Baked);
88 impl_property_binary_changes_when_casefolded_v1!(Baked);
89 impl_property_binary_changes_when_casemapped_v1!(Baked);
90 impl_property_binary_changes_when_lowercased_v1!(Baked);
91 impl_property_binary_changes_when_nfkc_casefolded_v1!(Baked);
92 impl_property_binary_changes_when_titlecased_v1!(Baked);
93 impl_property_binary_changes_when_uppercased_v1!(Baked);
94 impl_property_binary_dash_v1!(Baked);
95 impl_property_binary_default_ignorable_code_point_v1!(Baked);
96 impl_property_binary_deprecated_v1!(Baked);
97 impl_property_binary_diacritic_v1!(Baked);
98 impl_property_binary_emoji_component_v1!(Baked);
99 impl_property_binary_emoji_modifier_base_v1!(Baked);
100 impl_property_binary_emoji_modifier_v1!(Baked);
101 impl_property_binary_emoji_presentation_v1!(Baked);
102 impl_property_binary_emoji_v1!(Baked);
103 impl_property_binary_extended_pictographic_v1!(Baked);
104 impl_property_binary_extender_v1!(Baked);
105 impl_property_binary_full_composition_exclusion_v1!(Baked);
106 impl_property_binary_graph_v1!(Baked);
107 impl_property_binary_grapheme_base_v1!(Baked);
108 impl_property_binary_grapheme_extend_v1!(Baked);
109 impl_property_binary_grapheme_link_v1!(Baked);
110 impl_property_binary_hex_digit_v1!(Baked);
111 impl_property_binary_hyphen_v1!(Baked);
112 impl_property_binary_id_compat_math_continue_v1!(Baked);
113 impl_property_binary_id_compat_math_start_v1!(Baked);
114 impl_property_binary_id_continue_v1!(Baked);
115 impl_property_binary_id_start_v1!(Baked);
116 impl_property_binary_ideographic_v1!(Baked);
117 impl_property_binary_ids_binary_operator_v1!(Baked);
118 impl_property_binary_ids_trinary_operator_v1!(Baked);
119 impl_property_binary_ids_unary_operator_v1!(Baked);
120 impl_property_binary_join_control_v1!(Baked);
121 impl_property_binary_logical_order_exception_v1!(Baked);
122 impl_property_binary_lowercase_v1!(Baked);
123 impl_property_binary_math_v1!(Baked);
124 impl_property_binary_modifier_combining_mark_v1!(Baked);
125 impl_property_binary_nfc_inert_v1!(Baked);
126 impl_property_binary_nfd_inert_v1!(Baked);
127 impl_property_binary_nfkc_inert_v1!(Baked);
128 impl_property_binary_nfkd_inert_v1!(Baked);
129 impl_property_binary_noncharacter_code_point_v1!(Baked);
130 impl_property_binary_pattern_syntax_v1!(Baked);
131 impl_property_binary_pattern_white_space_v1!(Baked);
132 impl_property_binary_prepended_concatenation_mark_v1!(Baked);
133 impl_property_binary_print_v1!(Baked);
134 impl_property_binary_quotation_mark_v1!(Baked);
135 impl_property_binary_radical_v1!(Baked);
136 impl_property_binary_regional_indicator_v1!(Baked);
137 impl_property_binary_segment_starter_v1!(Baked);
138 impl_property_binary_sentence_terminal_v1!(Baked);
139 impl_property_binary_soft_dotted_v1!(Baked);
140 impl_property_binary_terminal_punctuation_v1!(Baked);
141 impl_property_binary_unified_ideograph_v1!(Baked);
142 impl_property_binary_uppercase_v1!(Baked);
143 impl_property_binary_variation_selector_v1!(Baked);
144 impl_property_binary_white_space_v1!(Baked);
145 impl_property_binary_xdigit_v1!(Baked);
146 impl_property_binary_xid_continue_v1!(Baked);
147 impl_property_binary_xid_start_v1!(Baked);
148 impl_property_enum_bidi_class_v1!(Baked);
149 impl_property_enum_bidi_mirroring_glyph_v1!(Baked);
150 impl_property_enum_canonical_combining_class_v1!(Baked);
151 impl_property_enum_east_asian_width_v1!(Baked);
152 impl_property_enum_general_category_v1!(Baked);
153 impl_property_enum_grapheme_cluster_break_v1!(Baked);
154 impl_property_enum_hangul_syllable_type_v1!(Baked);
155 impl_property_enum_indic_conjunct_break_v1!(Baked);
156 impl_property_enum_indic_syllabic_category_v1!(Baked);
157 impl_property_enum_joining_type_v1!(Baked);
158 impl_property_enum_line_break_v1!(Baked);
159 impl_property_enum_script_v1!(Baked);
160 impl_property_enum_sentence_break_v1!(Baked);
161 impl_property_enum_vertical_orientation_v1!(Baked);
162 impl_property_enum_word_break_v1!(Baked);
163 impl_property_name_long_bidi_class_v1!(Baked);
164 #[cfg(feature = "alloc")]
165 impl_property_name_long_canonical_combining_class_v1!(Baked);
166 impl_property_name_long_east_asian_width_v1!(Baked);
167 impl_property_name_long_general_category_v1!(Baked);
168 impl_property_name_long_grapheme_cluster_break_v1!(Baked);
169 impl_property_name_long_hangul_syllable_type_v1!(Baked);
170 impl_property_name_long_indic_syllabic_category_v1!(Baked);
171 impl_property_name_long_indic_conjunct_break_v1!(Baked);
172 impl_property_name_long_joining_type_v1!(Baked);
173 impl_property_name_long_line_break_v1!(Baked);
174 impl_property_name_long_script_v1!(Baked);
175 impl_property_name_long_sentence_break_v1!(Baked);
176 impl_property_name_long_vertical_orientation_v1!(Baked);
177 impl_property_name_long_word_break_v1!(Baked);
178 impl_property_name_parse_bidi_class_v1!(Baked);
179 impl_property_name_parse_canonical_combining_class_v1!(Baked);
180 impl_property_name_parse_east_asian_width_v1!(Baked);
181 impl_property_name_parse_general_category_mask_v1!(Baked);
182 impl_property_name_parse_general_category_v1!(Baked);
183 impl_property_name_parse_grapheme_cluster_break_v1!(Baked);
184 impl_property_name_parse_hangul_syllable_type_v1!(Baked);
185 impl_property_name_parse_indic_syllabic_category_v1!(Baked);
186 impl_property_name_parse_indic_conjunct_break_v1!(Baked);
187 impl_property_name_parse_joining_type_v1!(Baked);
188 impl_property_name_parse_line_break_v1!(Baked);
189 impl_property_name_parse_script_v1!(Baked);
190 impl_property_name_parse_sentence_break_v1!(Baked);
191 impl_property_name_parse_vertical_orientation_v1!(Baked);
192 impl_property_name_parse_word_break_v1!(Baked);
193 impl_property_name_short_bidi_class_v1!(Baked);
194 #[cfg(feature = "alloc")]
195 impl_property_name_short_canonical_combining_class_v1!(Baked);
196 impl_property_name_short_east_asian_width_v1!(Baked);
197 impl_property_name_short_general_category_v1!(Baked);
198 impl_property_name_short_grapheme_cluster_break_v1!(Baked);
199 impl_property_name_short_hangul_syllable_type_v1!(Baked);
200 impl_property_name_short_indic_syllabic_category_v1!(Baked);
201 impl_property_name_short_indic_conjunct_break_v1!(Baked);
202 impl_property_name_short_joining_type_v1!(Baked);
203 impl_property_name_short_line_break_v1!(Baked);
204 impl_property_name_short_script_v1!(Baked);
205 impl_property_name_short_sentence_break_v1!(Baked);
206 impl_property_name_short_vertical_orientation_v1!(Baked);
207 impl_property_name_short_word_break_v1!(Baked);
208 impl_property_script_with_extensions_v1!(Baked);
209};
210
211icu_provider::data_marker!(
212 PropertyBinaryAlnumV1,
214 PropertyCodePointSet<'static>,
215 is_singleton = true
216);
217icu_provider::data_marker!(
218 PropertyBinaryAlphabeticV1,
220 PropertyCodePointSet<'static>,
221 is_singleton = true
222);
223icu_provider::data_marker!(
224 PropertyBinaryAsciiHexDigitV1,
226 PropertyCodePointSet<'static>,
227 is_singleton = true
228);
229icu_provider::data_marker!(
230 PropertyBinaryBidiControlV1,
232 PropertyCodePointSet<'static>,
233 is_singleton = true
234);
235icu_provider::data_marker!(
236 PropertyBinaryBidiMirroredV1,
238 PropertyCodePointSet<'static>,
239 is_singleton = true
240);
241icu_provider::data_marker!(
242 PropertyBinaryBlankV1,
244 PropertyCodePointSet<'static>,
245 is_singleton = true
246);
247icu_provider::data_marker!(
248 PropertyBinaryCasedV1,
250 PropertyCodePointSet<'static>,
251 is_singleton = true
252);
253icu_provider::data_marker!(
254 PropertyBinaryCaseIgnorableV1,
256 PropertyCodePointSet<'static>,
257 is_singleton = true
258);
259icu_provider::data_marker!(
260 PropertyBinaryCaseSensitiveV1,
262 PropertyCodePointSet<'static>,
263 is_singleton = true
264);
265icu_provider::data_marker!(
266 PropertyBinaryChangesWhenCasefoldedV1,
268 PropertyCodePointSet<'static>,
269 is_singleton = true
270);
271icu_provider::data_marker!(
272 PropertyBinaryChangesWhenCasemappedV1,
274 PropertyCodePointSet<'static>,
275 is_singleton = true
276);
277icu_provider::data_marker!(
278 PropertyBinaryChangesWhenLowercasedV1,
280 PropertyCodePointSet<'static>,
281 is_singleton = true
282);
283icu_provider::data_marker!(
284 PropertyBinaryChangesWhenNfkcCasefoldedV1,
286 PropertyCodePointSet<'static>,
287 is_singleton = true
288);
289icu_provider::data_marker!(
290 PropertyBinaryChangesWhenTitlecasedV1,
292 PropertyCodePointSet<'static>,
293 is_singleton = true
294);
295icu_provider::data_marker!(
296 PropertyBinaryChangesWhenUppercasedV1,
298 PropertyCodePointSet<'static>,
299 is_singleton = true
300);
301icu_provider::data_marker!(
302 PropertyBinaryDashV1,
304 PropertyCodePointSet<'static>,
305 is_singleton = true
306);
307icu_provider::data_marker!(
308 PropertyBinaryDefaultIgnorableCodePointV1,
310 PropertyCodePointSet<'static>,
311 is_singleton = true
312);
313icu_provider::data_marker!(
314 PropertyBinaryDeprecatedV1,
316 PropertyCodePointSet<'static>,
317 is_singleton = true
318);
319icu_provider::data_marker!(
320 PropertyBinaryDiacriticV1,
322 PropertyCodePointSet<'static>,
323 is_singleton = true
324);
325icu_provider::data_marker!(
326 PropertyBinaryEmojiComponentV1,
328 PropertyCodePointSet<'static>,
329 is_singleton = true
330);
331icu_provider::data_marker!(
332 PropertyBinaryEmojiModifierBaseV1,
334 PropertyCodePointSet<'static>,
335 is_singleton = true
336);
337icu_provider::data_marker!(
338 PropertyBinaryEmojiModifierV1,
340 PropertyCodePointSet<'static>,
341 is_singleton = true
342);
343icu_provider::data_marker!(
344 PropertyBinaryEmojiPresentationV1,
346 PropertyCodePointSet<'static>,
347 is_singleton = true
348);
349icu_provider::data_marker!(
350 PropertyBinaryEmojiV1,
352 PropertyCodePointSet<'static>,
353 is_singleton = true
354);
355icu_provider::data_marker!(
356 PropertyBinaryExtendedPictographicV1,
358 PropertyCodePointSet<'static>,
359 is_singleton = true
360);
361icu_provider::data_marker!(
362 PropertyBinaryExtenderV1,
364 PropertyCodePointSet<'static>,
365 is_singleton = true
366);
367icu_provider::data_marker!(
368 PropertyBinaryFullCompositionExclusionV1,
370 PropertyCodePointSet<'static>,
371 is_singleton = true
372);
373icu_provider::data_marker!(
374 PropertyBinaryGraphemeBaseV1,
376 PropertyCodePointSet<'static>,
377 is_singleton = true
378);
379icu_provider::data_marker!(
380 PropertyBinaryGraphemeExtendV1,
382 PropertyCodePointSet<'static>,
383 is_singleton = true
384);
385icu_provider::data_marker!(
386 PropertyBinaryGraphemeLinkV1,
388 PropertyCodePointSet<'static>,
389 is_singleton = true
390);
391icu_provider::data_marker!(
392 PropertyBinaryGraphV1,
394 PropertyCodePointSet<'static>,
395 is_singleton = true
396);
397icu_provider::data_marker!(
398 PropertyBinaryHexDigitV1,
400 PropertyCodePointSet<'static>,
401 is_singleton = true
402);
403icu_provider::data_marker!(
404 PropertyBinaryHyphenV1,
406 PropertyCodePointSet<'static>,
407 is_singleton = true
408);
409icu_provider::data_marker!(
410 PropertyBinaryIdCompatMathContinueV1,
412 PropertyCodePointSet<'static>,
413 is_singleton = true
414);
415icu_provider::data_marker!(
416 PropertyBinaryIdCompatMathStartV1,
418 PropertyCodePointSet<'static>,
419 is_singleton = true
420);
421icu_provider::data_marker!(
422 PropertyBinaryIdContinueV1,
424 PropertyCodePointSet<'static>,
425 is_singleton = true
426);
427icu_provider::data_marker!(
428 PropertyBinaryIdeographicV1,
430 PropertyCodePointSet<'static>,
431 is_singleton = true
432);
433icu_provider::data_marker!(
434 PropertyBinaryIdsBinaryOperatorV1,
436 PropertyCodePointSet<'static>,
437 is_singleton = true
438);
439icu_provider::data_marker!(
440 PropertyBinaryIdStartV1,
442 PropertyCodePointSet<'static>,
443 is_singleton = true
444);
445icu_provider::data_marker!(
446 PropertyBinaryIdsTrinaryOperatorV1,
448 PropertyCodePointSet<'static>,
449 is_singleton = true
450);
451icu_provider::data_marker!(
452 PropertyBinaryIdsUnaryOperatorV1,
454 PropertyCodePointSet<'static>,
455 is_singleton = true
456);
457icu_provider::data_marker!(
458 PropertyBinaryJoinControlV1,
460 PropertyCodePointSet<'static>,
461 is_singleton = true
462);
463icu_provider::data_marker!(
464 PropertyBinaryLogicalOrderExceptionV1,
466 PropertyCodePointSet<'static>,
467 is_singleton = true
468);
469icu_provider::data_marker!(
470 PropertyBinaryLowercaseV1,
472 PropertyCodePointSet<'static>,
473 is_singleton = true
474);
475icu_provider::data_marker!(
476 PropertyBinaryMathV1,
478 PropertyCodePointSet<'static>,
479 is_singleton = true
480);
481icu_provider::data_marker!(
482 PropertyBinaryModifierCombiningMarkV1,
484 PropertyCodePointSet<'static>,
485 is_singleton = true
486);
487icu_provider::data_marker!(
488 PropertyBinaryNfcInertV1,
490 PropertyCodePointSet<'static>,
491 is_singleton = true
492);
493icu_provider::data_marker!(
494 PropertyBinaryNfdInertV1,
496 PropertyCodePointSet<'static>,
497 is_singleton = true
498);
499icu_provider::data_marker!(
500 PropertyBinaryNfkcInertV1,
502 PropertyCodePointSet<'static>,
503 is_singleton = true
504);
505icu_provider::data_marker!(
506 PropertyBinaryNfkdInertV1,
508 PropertyCodePointSet<'static>,
509 is_singleton = true
510);
511icu_provider::data_marker!(
512 PropertyBinaryNoncharacterCodePointV1,
514 PropertyCodePointSet<'static>,
515 is_singleton = true
516);
517icu_provider::data_marker!(
518 PropertyBinaryPatternSyntaxV1,
520 PropertyCodePointSet<'static>,
521 is_singleton = true
522);
523icu_provider::data_marker!(
524 PropertyBinaryPatternWhiteSpaceV1,
526 PropertyCodePointSet<'static>,
527 is_singleton = true
528);
529icu_provider::data_marker!(
530 PropertyBinaryPrependedConcatenationMarkV1,
532 PropertyCodePointSet<'static>,
533 is_singleton = true
534);
535icu_provider::data_marker!(
536 PropertyBinaryPrintV1,
538 PropertyCodePointSet<'static>,
539 is_singleton = true
540);
541icu_provider::data_marker!(
542 PropertyBinaryQuotationMarkV1,
544 PropertyCodePointSet<'static>,
545 is_singleton = true
546);
547icu_provider::data_marker!(
548 PropertyBinaryRadicalV1,
550 PropertyCodePointSet<'static>,
551 is_singleton = true
552);
553icu_provider::data_marker!(
554 PropertyBinaryRegionalIndicatorV1,
556 PropertyCodePointSet<'static>,
557 is_singleton = true
558);
559icu_provider::data_marker!(
560 PropertyBinarySegmentStarterV1,
562 PropertyCodePointSet<'static>,
563 is_singleton = true
564);
565icu_provider::data_marker!(
566 PropertyBinarySentenceTerminalV1,
568 PropertyCodePointSet<'static>,
569 is_singleton = true
570);
571icu_provider::data_marker!(
572 PropertyBinarySoftDottedV1,
574 PropertyCodePointSet<'static>,
575 is_singleton = true
576);
577icu_provider::data_marker!(
578 PropertyBinaryTerminalPunctuationV1,
580 PropertyCodePointSet<'static>,
581 is_singleton = true
582);
583icu_provider::data_marker!(
584 PropertyBinaryUnifiedIdeographV1,
586 PropertyCodePointSet<'static>,
587 is_singleton = true
588);
589icu_provider::data_marker!(
590 PropertyBinaryUppercaseV1,
592 PropertyCodePointSet<'static>,
593 is_singleton = true
594);
595icu_provider::data_marker!(
596 PropertyBinaryVariationSelectorV1,
598 PropertyCodePointSet<'static>,
599 is_singleton = true
600);
601icu_provider::data_marker!(
602 PropertyBinaryWhiteSpaceV1,
604 PropertyCodePointSet<'static>,
605 is_singleton = true
606);
607icu_provider::data_marker!(
608 PropertyBinaryXdigitV1,
610 PropertyCodePointSet<'static>,
611 is_singleton = true
612);
613icu_provider::data_marker!(
614 PropertyBinaryXidContinueV1,
616 PropertyCodePointSet<'static>,
617 is_singleton = true
618);
619icu_provider::data_marker!(
620 PropertyBinaryXidStartV1,
622 PropertyCodePointSet<'static>,
623 is_singleton = true
624);
625icu_provider::data_marker!(
626 PropertyEnumBidiClassV1,
628 PropertyCodePointMap<'static, crate::props::BidiClass>,
629 is_singleton = true,
630);
631icu_provider::data_marker!(
632 PropertyEnumCanonicalCombiningClassV1,
634 PropertyCodePointMap<'static, crate::props::CanonicalCombiningClass>,
635 is_singleton = true,
636);
637icu_provider::data_marker!(
638 PropertyEnumEastAsianWidthV1,
640 PropertyCodePointMap<'static, crate::props::EastAsianWidth>,
641 is_singleton = true,
642);
643icu_provider::data_marker!(
644 PropertyEnumGeneralCategoryV1,
646 PropertyCodePointMap<'static, crate::props::GeneralCategory>,
647 is_singleton = true,
648);
649icu_provider::data_marker!(
650 PropertyEnumGraphemeClusterBreakV1,
652 PropertyCodePointMap<'static, crate::props::GraphemeClusterBreak>,
653 is_singleton = true,
654);
655icu_provider::data_marker!(
656 PropertyEnumHangulSyllableTypeV1,
658 PropertyCodePointMap<'static, crate::props::HangulSyllableType>,
659 is_singleton = true,
660);
661icu_provider::data_marker!(
662 PropertyEnumIndicConjunctBreakV1,
664 PropertyCodePointMap<'static, crate::props::IndicConjunctBreak>,
665 is_singleton = true,
666);
667icu_provider::data_marker!(
668 PropertyEnumIndicSyllabicCategoryV1,
670 PropertyCodePointMap<'static, crate::props::IndicSyllabicCategory>,
671 is_singleton = true,
672);
673icu_provider::data_marker!(
674 PropertyEnumJoiningTypeV1,
676 PropertyCodePointMap<'static, crate::props::JoiningType>,
677 is_singleton = true,
678);
679icu_provider::data_marker!(
680 PropertyEnumLineBreakV1,
682 PropertyCodePointMap<'static, crate::props::LineBreak>,
683 is_singleton = true,
684);
685icu_provider::data_marker!(
686 PropertyEnumScriptV1,
688 PropertyCodePointMap<'static, crate::props::Script>,
689 is_singleton = true,
690);
691icu_provider::data_marker!(
692 PropertyEnumSentenceBreakV1,
694 PropertyCodePointMap<'static, crate::props::SentenceBreak>,
695 is_singleton = true,
696);
697icu_provider::data_marker!(
698 PropertyEnumVerticalOrientationV1,
700 PropertyCodePointMap<'static, crate::props::VerticalOrientation>,
701 is_singleton = true,
702);
703icu_provider::data_marker!(
704 PropertyEnumWordBreakV1,
706 PropertyCodePointMap<'static, crate::props::WordBreak>,
707 is_singleton = true,
708);
709icu_provider::data_marker!(
710 PropertyEnumBidiMirroringGlyphV1,
712 PropertyCodePointMap<'static, crate::bidi::BidiMirroringGlyph>,
713 is_singleton = true,
714);
715icu_provider::data_marker!(
716 PropertyBinaryBasicEmojiV1,
718 PropertyUnicodeSet<'static>,
719 is_singleton = true
720);
721icu_provider::data_marker!(
722 PropertyScriptWithExtensionsV1,
724 ScriptWithExtensionsProperty<'static>,
725 is_singleton = true
726);
727
728pub const MARKERS: &[DataMarkerInfo] = &[
730 PropertyNameLongBidiClassV1::INFO,
731 #[cfg(feature = "alloc")]
732 PropertyNameLongCanonicalCombiningClassV1::INFO,
733 PropertyNameLongEastAsianWidthV1::INFO,
734 PropertyNameLongGeneralCategoryV1::INFO,
735 PropertyNameLongGraphemeClusterBreakV1::INFO,
736 PropertyNameLongHangulSyllableTypeV1::INFO,
737 PropertyNameLongIndicSyllabicCategoryV1::INFO,
738 PropertyNameLongIndicConjunctBreakV1::INFO,
739 PropertyNameLongJoiningTypeV1::INFO,
740 PropertyNameLongLineBreakV1::INFO,
741 PropertyNameLongScriptV1::INFO,
742 PropertyNameLongSentenceBreakV1::INFO,
743 PropertyNameLongVerticalOrientationV1::INFO,
744 PropertyNameLongWordBreakV1::INFO,
745 PropertyNameParseBidiClassV1::INFO,
746 PropertyNameParseCanonicalCombiningClassV1::INFO,
747 PropertyNameParseEastAsianWidthV1::INFO,
748 PropertyNameParseGeneralCategoryMaskV1::INFO,
749 PropertyNameParseGeneralCategoryV1::INFO,
750 PropertyNameParseGraphemeClusterBreakV1::INFO,
751 PropertyNameParseHangulSyllableTypeV1::INFO,
752 PropertyNameParseIndicSyllabicCategoryV1::INFO,
753 PropertyNameParseIndicConjunctBreakV1::INFO,
754 PropertyNameParseJoiningTypeV1::INFO,
755 PropertyNameParseLineBreakV1::INFO,
756 PropertyNameParseScriptV1::INFO,
757 PropertyNameParseSentenceBreakV1::INFO,
758 PropertyNameParseVerticalOrientationV1::INFO,
759 PropertyNameParseWordBreakV1::INFO,
760 PropertyNameShortBidiClassV1::INFO,
761 #[cfg(feature = "alloc")]
762 PropertyNameShortCanonicalCombiningClassV1::INFO,
763 PropertyNameShortEastAsianWidthV1::INFO,
764 PropertyNameShortGeneralCategoryV1::INFO,
765 PropertyNameShortGraphemeClusterBreakV1::INFO,
766 PropertyNameShortHangulSyllableTypeV1::INFO,
767 PropertyNameShortIndicSyllabicCategoryV1::INFO,
768 PropertyNameShortIndicConjunctBreakV1::INFO,
769 PropertyNameShortJoiningTypeV1::INFO,
770 PropertyNameShortLineBreakV1::INFO,
771 PropertyNameShortScriptV1::INFO,
772 PropertyNameShortSentenceBreakV1::INFO,
773 PropertyNameShortVerticalOrientationV1::INFO,
774 PropertyNameShortWordBreakV1::INFO,
775 PropertyBinaryAlnumV1::INFO,
776 PropertyBinaryAlphabeticV1::INFO,
777 PropertyBinaryAsciiHexDigitV1::INFO,
778 PropertyBinaryBidiControlV1::INFO,
779 PropertyBinaryBidiMirroredV1::INFO,
780 PropertyBinaryBlankV1::INFO,
781 PropertyBinaryCasedV1::INFO,
782 PropertyBinaryCaseIgnorableV1::INFO,
783 PropertyBinaryCaseSensitiveV1::INFO,
784 PropertyBinaryChangesWhenCasefoldedV1::INFO,
785 PropertyBinaryChangesWhenCasemappedV1::INFO,
786 PropertyBinaryChangesWhenLowercasedV1::INFO,
787 PropertyBinaryChangesWhenNfkcCasefoldedV1::INFO,
788 PropertyBinaryChangesWhenTitlecasedV1::INFO,
789 PropertyBinaryChangesWhenUppercasedV1::INFO,
790 PropertyBinaryDashV1::INFO,
791 PropertyBinaryDefaultIgnorableCodePointV1::INFO,
792 PropertyBinaryDeprecatedV1::INFO,
793 PropertyBinaryDiacriticV1::INFO,
794 PropertyBinaryEmojiComponentV1::INFO,
795 PropertyBinaryEmojiModifierBaseV1::INFO,
796 PropertyBinaryEmojiModifierV1::INFO,
797 PropertyBinaryEmojiPresentationV1::INFO,
798 PropertyBinaryEmojiV1::INFO,
799 PropertyBinaryExtendedPictographicV1::INFO,
800 PropertyBinaryExtenderV1::INFO,
801 PropertyBinaryFullCompositionExclusionV1::INFO,
802 PropertyBinaryGraphemeBaseV1::INFO,
803 PropertyBinaryGraphemeExtendV1::INFO,
804 PropertyBinaryGraphemeLinkV1::INFO,
805 PropertyBinaryGraphV1::INFO,
806 PropertyBinaryHexDigitV1::INFO,
807 PropertyBinaryHyphenV1::INFO,
808 PropertyBinaryIdCompatMathContinueV1::INFO,
809 PropertyBinaryIdCompatMathStartV1::INFO,
810 PropertyBinaryIdContinueV1::INFO,
811 PropertyBinaryIdeographicV1::INFO,
812 PropertyBinaryIdsBinaryOperatorV1::INFO,
813 PropertyBinaryIdStartV1::INFO,
814 PropertyBinaryIdsTrinaryOperatorV1::INFO,
815 PropertyBinaryIdsUnaryOperatorV1::INFO,
816 PropertyBinaryJoinControlV1::INFO,
817 PropertyBinaryLogicalOrderExceptionV1::INFO,
818 PropertyBinaryLowercaseV1::INFO,
819 PropertyBinaryMathV1::INFO,
820 PropertyBinaryModifierCombiningMarkV1::INFO,
821 PropertyBinaryNfcInertV1::INFO,
822 PropertyBinaryNfdInertV1::INFO,
823 PropertyBinaryNfkcInertV1::INFO,
824 PropertyBinaryNfkdInertV1::INFO,
825 PropertyBinaryNoncharacterCodePointV1::INFO,
826 PropertyBinaryPatternSyntaxV1::INFO,
827 PropertyBinaryPatternWhiteSpaceV1::INFO,
828 PropertyBinaryPrependedConcatenationMarkV1::INFO,
829 PropertyBinaryPrintV1::INFO,
830 PropertyBinaryQuotationMarkV1::INFO,
831 PropertyBinaryRadicalV1::INFO,
832 PropertyBinaryRegionalIndicatorV1::INFO,
833 PropertyBinarySegmentStarterV1::INFO,
834 PropertyBinarySentenceTerminalV1::INFO,
835 PropertyBinarySoftDottedV1::INFO,
836 PropertyBinaryTerminalPunctuationV1::INFO,
837 PropertyBinaryUnifiedIdeographV1::INFO,
838 PropertyBinaryUppercaseV1::INFO,
839 PropertyBinaryVariationSelectorV1::INFO,
840 PropertyBinaryWhiteSpaceV1::INFO,
841 PropertyBinaryXdigitV1::INFO,
842 PropertyBinaryXidContinueV1::INFO,
843 PropertyBinaryXidStartV1::INFO,
844 PropertyEnumBidiClassV1::INFO,
845 PropertyEnumCanonicalCombiningClassV1::INFO,
846 PropertyEnumEastAsianWidthV1::INFO,
847 PropertyEnumGeneralCategoryV1::INFO,
848 PropertyEnumGraphemeClusterBreakV1::INFO,
849 PropertyEnumHangulSyllableTypeV1::INFO,
850 PropertyEnumIndicConjunctBreakV1::INFO,
851 PropertyEnumIndicSyllabicCategoryV1::INFO,
852 PropertyEnumJoiningTypeV1::INFO,
853 PropertyEnumLineBreakV1::INFO,
854 PropertyEnumScriptV1::INFO,
855 PropertyEnumSentenceBreakV1::INFO,
856 PropertyEnumVerticalOrientationV1::INFO,
857 PropertyEnumWordBreakV1::INFO,
858 PropertyEnumBidiMirroringGlyphV1::INFO,
859 PropertyBinaryBasicEmojiV1::INFO,
860 PropertyScriptWithExtensionsV1::INFO,
861];
862
863#[derive(Debug, Eq, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
874#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
875#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider))]
876#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
877#[non_exhaustive]
878pub enum PropertyCodePointSet<'data> {
879 InversionList(#[cfg_attr(feature = "serde", serde(borrow))] CodePointInversionList<'data>),
881 }
885
886icu_provider::data_struct!(
887 PropertyCodePointSet<'_>,
888 #[cfg(feature = "datagen")]
889);
890
891impl<'data> PropertyCodePointSet<'data> {
893 #[inline]
894 pub(crate) fn contains(&self, ch: char) -> bool {
895 match *self {
896 Self::InversionList(ref l) => l.contains(ch),
897 }
898 }
899
900 #[inline]
901 pub(crate) fn contains32(&self, ch: u32) -> bool {
902 match *self {
903 Self::InversionList(ref l) => l.contains32(ch),
904 }
905 }
906
907 #[inline]
908 pub(crate) fn iter_ranges(&self) -> impl Iterator<Item = RangeInclusive<u32>> + '_ {
909 match *self {
910 Self::InversionList(ref l) => l.iter_ranges(),
911 }
912 }
913
914 #[inline]
915 pub(crate) fn iter_ranges_complemented(
916 &self,
917 ) -> impl Iterator<Item = RangeInclusive<u32>> + '_ {
918 match *self {
919 Self::InversionList(ref l) => l.iter_ranges_complemented(),
920 }
921 }
922
923 #[inline]
924 pub(crate) fn from_code_point_inversion_list(l: CodePointInversionList<'static>) -> Self {
925 Self::InversionList(l)
926 }
927
928 #[inline]
929 pub(crate) fn as_code_point_inversion_list(
930 &'_ self,
931 ) -> Option<&'_ CodePointInversionList<'data>> {
932 match *self {
933 Self::InversionList(ref l) => Some(l),
934 }
936 }
937
938 #[inline]
939 pub(crate) fn to_code_point_inversion_list(&self) -> CodePointInversionList<'_> {
940 match *self {
941 Self::InversionList(ref t) => ZeroFrom::zero_from(t),
942 }
943 }
944}
945
946#[derive(Clone, Debug, Eq, PartialEq, yoke::Yokeable, zerofrom::ZeroFrom)]
957#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
958#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider))]
959#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
960#[non_exhaustive]
961pub enum PropertyCodePointMap<'data, T: TrieValue> {
962 CodePointTrie(#[cfg_attr(feature = "serde", serde(borrow))] CodePointTrie<'data, T>),
964 }
968
969icu_provider::data_struct!(
970 <T: TrieValue> PropertyCodePointMap<'_, T>,
971 #[cfg(feature = "datagen")]
972);
973
974impl<'data, T: TrieValue> PropertyCodePointMap<'data, T> {
976 #[inline]
977 pub(crate) fn get32(&self, ch: u32) -> T {
978 match *self {
979 Self::CodePointTrie(ref t) => t.get32(ch),
980 }
981 }
982
983 #[inline]
984 pub(crate) fn get(&self, c: char) -> T {
985 match *self {
986 Self::CodePointTrie(ref t) => t.get(c),
987 }
988 }
989
990 #[inline]
991 #[cfg(feature = "alloc")]
992 pub(crate) fn try_into_converted<P>(
993 self,
994 ) -> Result<PropertyCodePointMap<'data, P>, zerovec::ule::UleError>
995 where
996 P: TrieValue,
997 {
998 match self {
999 Self::CodePointTrie(t) => t
1000 .try_into_converted()
1001 .map(PropertyCodePointMap::CodePointTrie),
1002 }
1003 }
1004
1005 #[inline]
1006 #[cfg(feature = "alloc")]
1007 pub(crate) fn get_set_for_value(&self, value: T) -> CodePointInversionList<'static> {
1008 match *self {
1009 Self::CodePointTrie(ref t) => t.get_set_for_value(value),
1010 }
1011 }
1012
1013 #[inline]
1014 pub(crate) fn iter_ranges(&self) -> impl Iterator<Item = CodePointMapRange<T>> + '_ {
1015 match *self {
1016 Self::CodePointTrie(ref t) => t.iter_ranges(),
1017 }
1018 }
1019 #[inline]
1020 pub(crate) fn iter_ranges_mapped<'a, U: Eq + 'a>(
1021 &'a self,
1022 map: impl FnMut(T) -> U + Copy + 'a,
1023 ) -> impl Iterator<Item = CodePointMapRange<U>> + 'a {
1024 match *self {
1025 Self::CodePointTrie(ref t) => t.iter_ranges_mapped(map),
1026 }
1027 }
1028
1029 #[inline]
1030 pub(crate) fn from_code_point_trie(trie: CodePointTrie<'static, T>) -> Self {
1031 Self::CodePointTrie(trie)
1032 }
1033
1034 #[inline]
1035 pub(crate) fn as_code_point_trie(&self) -> Option<&CodePointTrie<'data, T>> {
1036 match *self {
1037 Self::CodePointTrie(ref t) => Some(t),
1038 }
1040 }
1041
1042 #[inline]
1043 pub(crate) fn to_code_point_trie(&self) -> CodePointTrie<'_, T> {
1044 match *self {
1045 Self::CodePointTrie(ref t) => ZeroFrom::zero_from(t),
1046 }
1047 }
1048}
1049
1050#[derive(Debug, Eq, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
1058#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
1059#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider))]
1060#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
1061#[non_exhaustive]
1062pub enum PropertyUnicodeSet<'data> {
1063 CPInversionListStrList(
1065 #[cfg_attr(feature = "serde", serde(borrow))] CodePointInversionListAndStringList<'data>,
1066 ),
1067 }
1071
1072icu_provider::data_struct!(
1073 PropertyUnicodeSet<'_>,
1074 #[cfg(feature = "datagen")]
1075);
1076
1077impl<'data> PropertyUnicodeSet<'data> {
1078 #[inline]
1079 pub(crate) fn contains_str(&self, s: &str) -> bool {
1080 match *self {
1081 Self::CPInversionListStrList(ref l) => l.contains_str(s),
1082 }
1083 }
1084
1085 #[inline]
1086 pub(crate) fn contains32(&self, cp: u32) -> bool {
1087 match *self {
1088 Self::CPInversionListStrList(ref l) => l.contains32(cp),
1089 }
1090 }
1091
1092 #[inline]
1093 pub(crate) fn contains(&self, ch: char) -> bool {
1094 match *self {
1095 Self::CPInversionListStrList(ref l) => l.contains(ch),
1096 }
1097 }
1098
1099 #[inline]
1100 pub(crate) fn from_code_point_inversion_list_string_list(
1101 l: CodePointInversionListAndStringList<'static>,
1102 ) -> Self {
1103 Self::CPInversionListStrList(l)
1104 }
1105
1106 #[inline]
1107 pub(crate) fn as_code_point_inversion_list_string_list(
1108 &'_ self,
1109 ) -> Option<&'_ CodePointInversionListAndStringList<'data>> {
1110 match *self {
1111 Self::CPInversionListStrList(ref l) => Some(l),
1112 }
1114 }
1115
1116 #[inline]
1117 pub(crate) fn to_code_point_inversion_list_string_list(
1118 &self,
1119 ) -> CodePointInversionListAndStringList<'_> {
1120 match *self {
1121 Self::CPInversionListStrList(ref t) => ZeroFrom::zero_from(t),
1122 }
1123 }
1124}
1125
1126#[derive(Debug, Eq, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
1134#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
1135#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider))]
1136#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
1137pub struct ScriptWithExtensionsProperty<'data> {
1138 #[cfg_attr(feature = "serde", serde(borrow))]
1153 pub trie: CodePointTrie<'data, ScriptWithExt>,
1154
1155 #[cfg_attr(feature = "serde", serde(borrow))]
1161 pub extensions: VarZeroVec<'data, ZeroSlice<Script>>,
1162}
1163
1164icu_provider::data_struct!(
1165 ScriptWithExtensionsProperty<'_>,
1166 #[cfg(feature = "datagen")]
1167);