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