1#![allow(clippy::exhaustive_structs, clippy::exhaustive_enums)]
7
8pub mod names;
19
20pub use names::{
21 PropertyNameLongBidiClassV1, PropertyNameLongCanonicalCombiningClassV1,
22 PropertyNameLongEastAsianWidthV1, PropertyNameLongGeneralCategoryV1,
23 PropertyNameLongGraphemeClusterBreakV1, PropertyNameLongHangulSyllableTypeV1,
24 PropertyNameLongIndicSyllabicCategoryV1, PropertyNameLongJoiningTypeV1,
25 PropertyNameLongLineBreakV1, PropertyNameLongScriptV1, PropertyNameLongSentenceBreakV1,
26 PropertyNameLongVerticalOrientationV1, PropertyNameLongWordBreakV1,
27 PropertyNameParseBidiClassV1, PropertyNameParseCanonicalCombiningClassV1,
28 PropertyNameParseEastAsianWidthV1, PropertyNameParseGeneralCategoryMaskV1,
29 PropertyNameParseGeneralCategoryV1, PropertyNameParseGraphemeClusterBreakV1,
30 PropertyNameParseHangulSyllableTypeV1, PropertyNameParseIndicSyllabicCategoryV1,
31 PropertyNameParseJoiningTypeV1, PropertyNameParseLineBreakV1, PropertyNameParseScriptV1,
32 PropertyNameParseSentenceBreakV1, PropertyNameParseVerticalOrientationV1,
33 PropertyNameParseWordBreakV1, PropertyNameShortBidiClassV1,
34 PropertyNameShortCanonicalCombiningClassV1, PropertyNameShortEastAsianWidthV1,
35 PropertyNameShortGeneralCategoryV1, PropertyNameShortGraphemeClusterBreakV1,
36 PropertyNameShortHangulSyllableTypeV1, PropertyNameShortIndicSyllabicCategoryV1,
37 PropertyNameShortJoiningTypeV1, PropertyNameShortLineBreakV1, PropertyNameShortScriptV1,
38 PropertyNameShortSentenceBreakV1, PropertyNameShortVerticalOrientationV1,
39 PropertyNameShortWordBreakV1,
40};
41
42pub use crate::props::gc::GeneralCategoryULE;
43use crate::props::*;
44use crate::script::ScriptWithExt;
45use core::ops::RangeInclusive;
46use icu_collections::codepointinvlist::CodePointInversionList;
47use icu_collections::codepointinvliststringlist::CodePointInversionListAndStringList;
48use icu_collections::codepointtrie::{CodePointMapRange, CodePointTrie, TrieValue};
49use icu_provider::prelude::*;
50use zerofrom::ZeroFrom;
51use zerovec::{VarZeroVec, ZeroSlice};
52
53#[cfg(feature = "compiled_data")]
54#[derive(Debug)]
55pub struct Baked;
63
64#[cfg(feature = "compiled_data")]
65#[allow(unused_imports)]
66const _: () = {
67 use icu_properties_data::*;
68 pub mod icu {
69 pub use crate as properties;
70 pub use icu_collections as collections;
71 }
72 make_provider!(Baked);
73 impl_property_binary_alnum_v1!(Baked);
74 impl_property_binary_alphabetic_v1!(Baked);
75 impl_property_binary_ascii_hex_digit_v1!(Baked);
76 impl_property_binary_basic_emoji_v1!(Baked);
77 impl_property_binary_bidi_control_v1!(Baked);
78 impl_property_binary_bidi_mirrored_v1!(Baked);
79 impl_property_binary_blank_v1!(Baked);
80 impl_property_binary_case_ignorable_v1!(Baked);
81 impl_property_binary_case_sensitive_v1!(Baked);
82 impl_property_binary_cased_v1!(Baked);
83 impl_property_binary_changes_when_casefolded_v1!(Baked);
84 impl_property_binary_changes_when_casemapped_v1!(Baked);
85 impl_property_binary_changes_when_lowercased_v1!(Baked);
86 impl_property_binary_changes_when_nfkc_casefolded_v1!(Baked);
87 impl_property_binary_changes_when_titlecased_v1!(Baked);
88 impl_property_binary_changes_when_uppercased_v1!(Baked);
89 impl_property_binary_dash_v1!(Baked);
90 impl_property_binary_default_ignorable_code_point_v1!(Baked);
91 impl_property_binary_deprecated_v1!(Baked);
92 impl_property_binary_diacritic_v1!(Baked);
93 impl_property_binary_emoji_component_v1!(Baked);
94 impl_property_binary_emoji_modifier_base_v1!(Baked);
95 impl_property_binary_emoji_modifier_v1!(Baked);
96 impl_property_binary_emoji_presentation_v1!(Baked);
97 impl_property_binary_emoji_v1!(Baked);
98 impl_property_binary_extended_pictographic_v1!(Baked);
99 impl_property_binary_extender_v1!(Baked);
100 impl_property_binary_full_composition_exclusion_v1!(Baked);
101 impl_property_binary_graph_v1!(Baked);
102 impl_property_binary_grapheme_base_v1!(Baked);
103 impl_property_binary_grapheme_extend_v1!(Baked);
104 impl_property_binary_grapheme_link_v1!(Baked);
105 impl_property_binary_hex_digit_v1!(Baked);
106 impl_property_binary_hyphen_v1!(Baked);
107 impl_property_binary_id_continue_v1!(Baked);
108 impl_property_binary_id_start_v1!(Baked);
109 impl_property_binary_ideographic_v1!(Baked);
110 impl_property_binary_ids_binary_operator_v1!(Baked);
111 impl_property_binary_ids_trinary_operator_v1!(Baked);
112 impl_property_binary_join_control_v1!(Baked);
113 impl_property_binary_logical_order_exception_v1!(Baked);
114 impl_property_binary_lowercase_v1!(Baked);
115 impl_property_binary_math_v1!(Baked);
116 impl_property_binary_nfc_inert_v1!(Baked);
117 impl_property_binary_nfd_inert_v1!(Baked);
118 impl_property_binary_nfkc_inert_v1!(Baked);
119 impl_property_binary_nfkd_inert_v1!(Baked);
120 impl_property_binary_noncharacter_code_point_v1!(Baked);
121 impl_property_binary_pattern_syntax_v1!(Baked);
122 impl_property_binary_pattern_white_space_v1!(Baked);
123 impl_property_binary_prepended_concatenation_mark_v1!(Baked);
124 impl_property_binary_print_v1!(Baked);
125 impl_property_binary_quotation_mark_v1!(Baked);
126 impl_property_binary_radical_v1!(Baked);
127 impl_property_binary_regional_indicator_v1!(Baked);
128 impl_property_binary_segment_starter_v1!(Baked);
129 impl_property_binary_sentence_terminal_v1!(Baked);
130 impl_property_binary_soft_dotted_v1!(Baked);
131 impl_property_binary_terminal_punctuation_v1!(Baked);
132 impl_property_binary_unified_ideograph_v1!(Baked);
133 impl_property_binary_uppercase_v1!(Baked);
134 impl_property_binary_variation_selector_v1!(Baked);
135 impl_property_binary_white_space_v1!(Baked);
136 impl_property_binary_xdigit_v1!(Baked);
137 impl_property_binary_xid_continue_v1!(Baked);
138 impl_property_binary_xid_start_v1!(Baked);
139 impl_property_enum_bidi_class_v1!(Baked);
140 impl_property_enum_bidi_mirroring_glyph_v1!(Baked);
141 impl_property_enum_canonical_combining_class_v1!(Baked);
142 impl_property_enum_east_asian_width_v1!(Baked);
143 impl_property_enum_general_category_v1!(Baked);
144 impl_property_enum_grapheme_cluster_break_v1!(Baked);
145 impl_property_enum_hangul_syllable_type_v1!(Baked);
146 impl_property_enum_indic_conjunct_break_v1!(Baked);
147 impl_property_enum_indic_syllabic_category_v1!(Baked);
148 impl_property_enum_joining_type_v1!(Baked);
149 impl_property_enum_line_break_v1!(Baked);
150 impl_property_enum_script_v1!(Baked);
151 impl_property_enum_sentence_break_v1!(Baked);
152 impl_property_enum_vertical_orientation_v1!(Baked);
153 impl_property_enum_word_break_v1!(Baked);
154 impl_property_name_long_bidi_class_v1!(Baked);
155 impl_property_name_long_canonical_combining_class_v1!(Baked);
156 impl_property_name_long_east_asian_width_v1!(Baked);
157 impl_property_name_long_general_category_v1!(Baked);
158 impl_property_name_long_grapheme_cluster_break_v1!(Baked);
159 impl_property_name_long_hangul_syllable_type_v1!(Baked);
160 impl_property_name_long_indic_syllabic_category_v1!(Baked);
161 impl_property_name_long_joining_type_v1!(Baked);
162 impl_property_name_long_line_break_v1!(Baked);
163 impl_property_name_long_script_v1!(Baked);
164 impl_property_name_long_sentence_break_v1!(Baked);
165 impl_property_name_long_vertical_orientation_v1!(Baked);
166 impl_property_name_long_word_break_v1!(Baked);
167 impl_property_name_parse_bidi_class_v1!(Baked);
168 impl_property_name_parse_canonical_combining_class_v1!(Baked);
169 impl_property_name_parse_east_asian_width_v1!(Baked);
170 impl_property_name_parse_general_category_mask_v1!(Baked);
171 impl_property_name_parse_general_category_v1!(Baked);
172 impl_property_name_parse_grapheme_cluster_break_v1!(Baked);
173 impl_property_name_parse_hangul_syllable_type_v1!(Baked);
174 impl_property_name_parse_indic_syllabic_category_v1!(Baked);
175 impl_property_name_parse_joining_type_v1!(Baked);
176 impl_property_name_parse_line_break_v1!(Baked);
177 impl_property_name_parse_script_v1!(Baked);
178 impl_property_name_parse_sentence_break_v1!(Baked);
179 impl_property_name_parse_vertical_orientation_v1!(Baked);
180 impl_property_name_parse_word_break_v1!(Baked);
181 impl_property_name_short_bidi_class_v1!(Baked);
182 impl_property_name_short_canonical_combining_class_v1!(Baked);
183 impl_property_name_short_east_asian_width_v1!(Baked);
184 impl_property_name_short_general_category_v1!(Baked);
185 impl_property_name_short_grapheme_cluster_break_v1!(Baked);
186 impl_property_name_short_hangul_syllable_type_v1!(Baked);
187 impl_property_name_short_indic_syllabic_category_v1!(Baked);
188 impl_property_name_short_joining_type_v1!(Baked);
189 impl_property_name_short_line_break_v1!(Baked);
190 impl_property_name_short_script_v1!(Baked);
191 impl_property_name_short_sentence_break_v1!(Baked);
192 impl_property_name_short_vertical_orientation_v1!(Baked);
193 impl_property_name_short_word_break_v1!(Baked);
194 impl_property_script_with_extensions_v1!(Baked);
195};
196
197icu_provider::data_marker!(
198 PropertyBinaryAlnumV1,
200 PropertyCodePointSet<'static>,
201 is_singleton = true
202);
203icu_provider::data_marker!(
204 PropertyBinaryAlphabeticV1,
206 PropertyCodePointSet<'static>,
207 is_singleton = true
208);
209icu_provider::data_marker!(
210 PropertyBinaryAsciiHexDigitV1,
212 PropertyCodePointSet<'static>,
213 is_singleton = true
214);
215icu_provider::data_marker!(
216 PropertyBinaryBidiControlV1,
218 PropertyCodePointSet<'static>,
219 is_singleton = true
220);
221icu_provider::data_marker!(
222 PropertyBinaryBidiMirroredV1,
224 PropertyCodePointSet<'static>,
225 is_singleton = true
226);
227icu_provider::data_marker!(
228 PropertyBinaryBlankV1,
230 PropertyCodePointSet<'static>,
231 is_singleton = true
232);
233icu_provider::data_marker!(
234 PropertyBinaryCasedV1,
236 PropertyCodePointSet<'static>,
237 is_singleton = true
238);
239icu_provider::data_marker!(
240 PropertyBinaryCaseIgnorableV1,
242 PropertyCodePointSet<'static>,
243 is_singleton = true
244);
245icu_provider::data_marker!(
246 PropertyBinaryCaseSensitiveV1,
248 PropertyCodePointSet<'static>,
249 is_singleton = true
250);
251icu_provider::data_marker!(
252 PropertyBinaryChangesWhenCasefoldedV1,
254 PropertyCodePointSet<'static>,
255 is_singleton = true
256);
257icu_provider::data_marker!(
258 PropertyBinaryChangesWhenCasemappedV1,
260 PropertyCodePointSet<'static>,
261 is_singleton = true
262);
263icu_provider::data_marker!(
264 PropertyBinaryChangesWhenLowercasedV1,
266 PropertyCodePointSet<'static>,
267 is_singleton = true
268);
269icu_provider::data_marker!(
270 PropertyBinaryChangesWhenNfkcCasefoldedV1,
272 PropertyCodePointSet<'static>,
273 is_singleton = true
274);
275icu_provider::data_marker!(
276 PropertyBinaryChangesWhenTitlecasedV1,
278 PropertyCodePointSet<'static>,
279 is_singleton = true
280);
281icu_provider::data_marker!(
282 PropertyBinaryChangesWhenUppercasedV1,
284 PropertyCodePointSet<'static>,
285 is_singleton = true
286);
287icu_provider::data_marker!(
288 PropertyBinaryDashV1,
290 PropertyCodePointSet<'static>,
291 is_singleton = true
292);
293icu_provider::data_marker!(
294 PropertyBinaryDefaultIgnorableCodePointV1,
296 PropertyCodePointSet<'static>,
297 is_singleton = true
298);
299icu_provider::data_marker!(
300 PropertyBinaryDeprecatedV1,
302 PropertyCodePointSet<'static>,
303 is_singleton = true
304);
305icu_provider::data_marker!(
306 PropertyBinaryDiacriticV1,
308 PropertyCodePointSet<'static>,
309 is_singleton = true
310);
311icu_provider::data_marker!(
312 PropertyBinaryEmojiComponentV1,
314 PropertyCodePointSet<'static>,
315 is_singleton = true
316);
317icu_provider::data_marker!(
318 PropertyBinaryEmojiModifierBaseV1,
320 PropertyCodePointSet<'static>,
321 is_singleton = true
322);
323icu_provider::data_marker!(
324 PropertyBinaryEmojiModifierV1,
326 PropertyCodePointSet<'static>,
327 is_singleton = true
328);
329icu_provider::data_marker!(
330 PropertyBinaryEmojiPresentationV1,
332 PropertyCodePointSet<'static>,
333 is_singleton = true
334);
335icu_provider::data_marker!(
336 PropertyBinaryEmojiV1,
338 PropertyCodePointSet<'static>,
339 is_singleton = true
340);
341icu_provider::data_marker!(
342 PropertyBinaryExtendedPictographicV1,
344 PropertyCodePointSet<'static>,
345 is_singleton = true
346);
347icu_provider::data_marker!(
348 PropertyBinaryExtenderV1,
350 PropertyCodePointSet<'static>,
351 is_singleton = true
352);
353icu_provider::data_marker!(
354 PropertyBinaryFullCompositionExclusionV1,
356 PropertyCodePointSet<'static>,
357 is_singleton = true
358);
359icu_provider::data_marker!(
360 PropertyBinaryGraphemeBaseV1,
362 PropertyCodePointSet<'static>,
363 is_singleton = true
364);
365icu_provider::data_marker!(
366 PropertyBinaryGraphemeExtendV1,
368 PropertyCodePointSet<'static>,
369 is_singleton = true
370);
371icu_provider::data_marker!(
372 PropertyBinaryGraphemeLinkV1,
374 PropertyCodePointSet<'static>,
375 is_singleton = true
376);
377icu_provider::data_marker!(
378 PropertyBinaryGraphV1,
380 PropertyCodePointSet<'static>,
381 is_singleton = true
382);
383icu_provider::data_marker!(
384 PropertyBinaryHexDigitV1,
386 PropertyCodePointSet<'static>,
387 is_singleton = true
388);
389icu_provider::data_marker!(
390 PropertyBinaryHyphenV1,
392 PropertyCodePointSet<'static>,
393 is_singleton = true
394);
395icu_provider::data_marker!(
396 PropertyBinaryIdContinueV1,
398 PropertyCodePointSet<'static>,
399 is_singleton = true
400);
401icu_provider::data_marker!(
402 PropertyBinaryIdeographicV1,
404 PropertyCodePointSet<'static>,
405 is_singleton = true
406);
407icu_provider::data_marker!(
408 PropertyBinaryIdsBinaryOperatorV1,
410 PropertyCodePointSet<'static>,
411 is_singleton = true
412);
413icu_provider::data_marker!(
414 PropertyBinaryIdStartV1,
416 PropertyCodePointSet<'static>,
417 is_singleton = true
418);
419icu_provider::data_marker!(
420 PropertyBinaryIdsTrinaryOperatorV1,
422 PropertyCodePointSet<'static>,
423 is_singleton = true
424);
425icu_provider::data_marker!(
426 PropertyBinaryJoinControlV1,
428 PropertyCodePointSet<'static>,
429 is_singleton = true
430);
431icu_provider::data_marker!(
432 PropertyBinaryLogicalOrderExceptionV1,
434 PropertyCodePointSet<'static>,
435 is_singleton = true
436);
437icu_provider::data_marker!(
438 PropertyBinaryLowercaseV1,
440 PropertyCodePointSet<'static>,
441 is_singleton = true
442);
443icu_provider::data_marker!(
444 PropertyBinaryMathV1,
446 PropertyCodePointSet<'static>,
447 is_singleton = true
448);
449icu_provider::data_marker!(
450 PropertyBinaryNfcInertV1,
452 PropertyCodePointSet<'static>,
453 is_singleton = true
454);
455icu_provider::data_marker!(
456 PropertyBinaryNfdInertV1,
458 PropertyCodePointSet<'static>,
459 is_singleton = true
460);
461icu_provider::data_marker!(
462 PropertyBinaryNfkcInertV1,
464 PropertyCodePointSet<'static>,
465 is_singleton = true
466);
467icu_provider::data_marker!(
468 PropertyBinaryNfkdInertV1,
470 PropertyCodePointSet<'static>,
471 is_singleton = true
472);
473icu_provider::data_marker!(
474 PropertyBinaryNoncharacterCodePointV1,
476 PropertyCodePointSet<'static>,
477 is_singleton = true
478);
479icu_provider::data_marker!(
480 PropertyBinaryPatternSyntaxV1,
482 PropertyCodePointSet<'static>,
483 is_singleton = true
484);
485icu_provider::data_marker!(
486 PropertyBinaryPatternWhiteSpaceV1,
488 PropertyCodePointSet<'static>,
489 is_singleton = true
490);
491icu_provider::data_marker!(
492 PropertyBinaryPrependedConcatenationMarkV1,
494 PropertyCodePointSet<'static>,
495 is_singleton = true
496);
497icu_provider::data_marker!(
498 PropertyBinaryPrintV1,
500 PropertyCodePointSet<'static>,
501 is_singleton = true
502);
503icu_provider::data_marker!(
504 PropertyBinaryQuotationMarkV1,
506 PropertyCodePointSet<'static>,
507 is_singleton = true
508);
509icu_provider::data_marker!(
510 PropertyBinaryRadicalV1,
512 PropertyCodePointSet<'static>,
513 is_singleton = true
514);
515icu_provider::data_marker!(
516 PropertyBinaryRegionalIndicatorV1,
518 PropertyCodePointSet<'static>,
519 is_singleton = true
520);
521icu_provider::data_marker!(
522 PropertyBinarySegmentStarterV1,
524 PropertyCodePointSet<'static>,
525 is_singleton = true
526);
527icu_provider::data_marker!(
528 PropertyBinarySentenceTerminalV1,
530 PropertyCodePointSet<'static>,
531 is_singleton = true
532);
533icu_provider::data_marker!(
534 PropertyBinarySoftDottedV1,
536 PropertyCodePointSet<'static>,
537 is_singleton = true
538);
539icu_provider::data_marker!(
540 PropertyBinaryTerminalPunctuationV1,
542 PropertyCodePointSet<'static>,
543 is_singleton = true
544);
545icu_provider::data_marker!(
546 PropertyBinaryUnifiedIdeographV1,
548 PropertyCodePointSet<'static>,
549 is_singleton = true
550);
551icu_provider::data_marker!(
552 PropertyBinaryUppercaseV1,
554 PropertyCodePointSet<'static>,
555 is_singleton = true
556);
557icu_provider::data_marker!(
558 PropertyBinaryVariationSelectorV1,
560 PropertyCodePointSet<'static>,
561 is_singleton = true
562);
563icu_provider::data_marker!(
564 PropertyBinaryWhiteSpaceV1,
566 PropertyCodePointSet<'static>,
567 is_singleton = true
568);
569icu_provider::data_marker!(
570 PropertyBinaryXdigitV1,
572 PropertyCodePointSet<'static>,
573 is_singleton = true
574);
575icu_provider::data_marker!(
576 PropertyBinaryXidContinueV1,
578 PropertyCodePointSet<'static>,
579 is_singleton = true
580);
581icu_provider::data_marker!(
582 PropertyBinaryXidStartV1,
584 PropertyCodePointSet<'static>,
585 is_singleton = true
586);
587icu_provider::data_marker!(
588 PropertyEnumBidiClassV1,
590 PropertyCodePointMap<'static, crate::props::BidiClass>,
591 is_singleton = true,
592);
593icu_provider::data_marker!(
594 PropertyEnumCanonicalCombiningClassV1,
596 PropertyCodePointMap<'static, crate::props::CanonicalCombiningClass>,
597 is_singleton = true,
598);
599icu_provider::data_marker!(
600 PropertyEnumEastAsianWidthV1,
602 PropertyCodePointMap<'static, crate::props::EastAsianWidth>,
603 is_singleton = true,
604);
605icu_provider::data_marker!(
606 PropertyEnumGeneralCategoryV1,
608 PropertyCodePointMap<'static, crate::props::GeneralCategory>,
609 is_singleton = true,
610);
611icu_provider::data_marker!(
612 PropertyEnumGraphemeClusterBreakV1,
614 PropertyCodePointMap<'static, crate::props::GraphemeClusterBreak>,
615 is_singleton = true,
616);
617icu_provider::data_marker!(
618 PropertyEnumHangulSyllableTypeV1,
620 PropertyCodePointMap<'static, crate::props::HangulSyllableType>,
621 is_singleton = true,
622);
623icu_provider::data_marker!(
624 PropertyEnumIndicConjunctBreakV1,
626 PropertyCodePointMap<'static, crate::props::IndicConjunctBreak>,
627 is_singleton = true,
628);
629icu_provider::data_marker!(
630 PropertyEnumIndicSyllabicCategoryV1,
632 PropertyCodePointMap<'static, crate::props::IndicSyllabicCategory>,
633 is_singleton = true,
634);
635icu_provider::data_marker!(
636 PropertyEnumJoiningTypeV1,
638 PropertyCodePointMap<'static, crate::props::JoiningType>,
639 is_singleton = true,
640);
641icu_provider::data_marker!(
642 PropertyEnumLineBreakV1,
644 PropertyCodePointMap<'static, crate::props::LineBreak>,
645 is_singleton = true,
646);
647icu_provider::data_marker!(
648 PropertyEnumScriptV1,
650 PropertyCodePointMap<'static, crate::props::Script>,
651 is_singleton = true,
652);
653icu_provider::data_marker!(
654 PropertyEnumSentenceBreakV1,
656 PropertyCodePointMap<'static, crate::props::SentenceBreak>,
657 is_singleton = true,
658);
659icu_provider::data_marker!(
660 PropertyEnumVerticalOrientationV1,
662 PropertyCodePointMap<'static, crate::props::VerticalOrientation>,
663 is_singleton = true,
664);
665icu_provider::data_marker!(
666 PropertyEnumWordBreakV1,
668 PropertyCodePointMap<'static, crate::props::WordBreak>,
669 is_singleton = true,
670);
671icu_provider::data_marker!(
672 PropertyEnumBidiMirroringGlyphV1,
674 PropertyCodePointMap<'static, crate::bidi::BidiMirroringGlyph>,
675 is_singleton = true,
676);
677icu_provider::data_marker!(
678 PropertyBinaryBasicEmojiV1,
680 PropertyUnicodeSet<'static>,
681 is_singleton = true
682);
683icu_provider::data_marker!(
684 PropertyScriptWithExtensionsV1,
686 ScriptWithExtensionsProperty<'static>,
687 is_singleton = true
688);
689
690pub const MARKERS: &[DataMarkerInfo] = &[
692 PropertyNameLongBidiClassV1::INFO,
693 PropertyNameLongCanonicalCombiningClassV1::INFO,
694 PropertyNameLongEastAsianWidthV1::INFO,
695 PropertyNameLongGeneralCategoryV1::INFO,
696 PropertyNameLongGraphemeClusterBreakV1::INFO,
697 PropertyNameLongHangulSyllableTypeV1::INFO,
698 PropertyNameLongIndicSyllabicCategoryV1::INFO,
699 PropertyNameLongJoiningTypeV1::INFO,
700 PropertyNameLongLineBreakV1::INFO,
701 PropertyNameLongScriptV1::INFO,
702 PropertyNameLongSentenceBreakV1::INFO,
703 PropertyNameLongVerticalOrientationV1::INFO,
704 PropertyNameLongWordBreakV1::INFO,
705 PropertyNameParseBidiClassV1::INFO,
706 PropertyNameParseCanonicalCombiningClassV1::INFO,
707 PropertyNameParseEastAsianWidthV1::INFO,
708 PropertyNameParseGeneralCategoryMaskV1::INFO,
709 PropertyNameParseGeneralCategoryV1::INFO,
710 PropertyNameParseGraphemeClusterBreakV1::INFO,
711 PropertyNameParseHangulSyllableTypeV1::INFO,
712 PropertyNameParseIndicSyllabicCategoryV1::INFO,
713 PropertyNameParseJoiningTypeV1::INFO,
714 PropertyNameParseLineBreakV1::INFO,
715 PropertyNameParseScriptV1::INFO,
716 PropertyNameParseSentenceBreakV1::INFO,
717 PropertyNameParseVerticalOrientationV1::INFO,
718 PropertyNameParseWordBreakV1::INFO,
719 PropertyNameShortBidiClassV1::INFO,
720 PropertyNameShortCanonicalCombiningClassV1::INFO,
721 PropertyNameShortEastAsianWidthV1::INFO,
722 PropertyNameShortGeneralCategoryV1::INFO,
723 PropertyNameShortGraphemeClusterBreakV1::INFO,
724 PropertyNameShortHangulSyllableTypeV1::INFO,
725 PropertyNameShortIndicSyllabicCategoryV1::INFO,
726 PropertyNameShortJoiningTypeV1::INFO,
727 PropertyNameShortLineBreakV1::INFO,
728 PropertyNameShortScriptV1::INFO,
729 PropertyNameShortSentenceBreakV1::INFO,
730 PropertyNameShortVerticalOrientationV1::INFO,
731 PropertyNameShortWordBreakV1::INFO,
732 PropertyBinaryAlnumV1::INFO,
733 PropertyBinaryAlphabeticV1::INFO,
734 PropertyBinaryAsciiHexDigitV1::INFO,
735 PropertyBinaryBidiControlV1::INFO,
736 PropertyBinaryBidiMirroredV1::INFO,
737 PropertyBinaryBlankV1::INFO,
738 PropertyBinaryCasedV1::INFO,
739 PropertyBinaryCaseIgnorableV1::INFO,
740 PropertyBinaryCaseSensitiveV1::INFO,
741 PropertyBinaryChangesWhenCasefoldedV1::INFO,
742 PropertyBinaryChangesWhenCasemappedV1::INFO,
743 PropertyBinaryChangesWhenLowercasedV1::INFO,
744 PropertyBinaryChangesWhenNfkcCasefoldedV1::INFO,
745 PropertyBinaryChangesWhenTitlecasedV1::INFO,
746 PropertyBinaryChangesWhenUppercasedV1::INFO,
747 PropertyBinaryDashV1::INFO,
748 PropertyBinaryDefaultIgnorableCodePointV1::INFO,
749 PropertyBinaryDeprecatedV1::INFO,
750 PropertyBinaryDiacriticV1::INFO,
751 PropertyBinaryEmojiComponentV1::INFO,
752 PropertyBinaryEmojiModifierBaseV1::INFO,
753 PropertyBinaryEmojiModifierV1::INFO,
754 PropertyBinaryEmojiPresentationV1::INFO,
755 PropertyBinaryEmojiV1::INFO,
756 PropertyBinaryExtendedPictographicV1::INFO,
757 PropertyBinaryExtenderV1::INFO,
758 PropertyBinaryFullCompositionExclusionV1::INFO,
759 PropertyBinaryGraphemeBaseV1::INFO,
760 PropertyBinaryGraphemeExtendV1::INFO,
761 PropertyBinaryGraphemeLinkV1::INFO,
762 PropertyBinaryGraphV1::INFO,
763 PropertyBinaryHexDigitV1::INFO,
764 PropertyBinaryHyphenV1::INFO,
765 PropertyBinaryIdContinueV1::INFO,
766 PropertyBinaryIdeographicV1::INFO,
767 PropertyBinaryIdsBinaryOperatorV1::INFO,
768 PropertyBinaryIdStartV1::INFO,
769 PropertyBinaryIdsTrinaryOperatorV1::INFO,
770 PropertyBinaryJoinControlV1::INFO,
771 PropertyBinaryLogicalOrderExceptionV1::INFO,
772 PropertyBinaryLowercaseV1::INFO,
773 PropertyBinaryMathV1::INFO,
774 PropertyBinaryNfcInertV1::INFO,
775 PropertyBinaryNfdInertV1::INFO,
776 PropertyBinaryNfkcInertV1::INFO,
777 PropertyBinaryNfkdInertV1::INFO,
778 PropertyBinaryNoncharacterCodePointV1::INFO,
779 PropertyBinaryPatternSyntaxV1::INFO,
780 PropertyBinaryPatternWhiteSpaceV1::INFO,
781 PropertyBinaryPrependedConcatenationMarkV1::INFO,
782 PropertyBinaryPrintV1::INFO,
783 PropertyBinaryQuotationMarkV1::INFO,
784 PropertyBinaryRadicalV1::INFO,
785 PropertyBinaryRegionalIndicatorV1::INFO,
786 PropertyBinarySegmentStarterV1::INFO,
787 PropertyBinarySentenceTerminalV1::INFO,
788 PropertyBinarySoftDottedV1::INFO,
789 PropertyBinaryTerminalPunctuationV1::INFO,
790 PropertyBinaryUnifiedIdeographV1::INFO,
791 PropertyBinaryUppercaseV1::INFO,
792 PropertyBinaryVariationSelectorV1::INFO,
793 PropertyBinaryWhiteSpaceV1::INFO,
794 PropertyBinaryXdigitV1::INFO,
795 PropertyBinaryXidContinueV1::INFO,
796 PropertyBinaryXidStartV1::INFO,
797 PropertyEnumBidiClassV1::INFO,
798 PropertyEnumCanonicalCombiningClassV1::INFO,
799 PropertyEnumEastAsianWidthV1::INFO,
800 PropertyEnumGeneralCategoryV1::INFO,
801 PropertyEnumGraphemeClusterBreakV1::INFO,
802 PropertyEnumHangulSyllableTypeV1::INFO,
803 PropertyEnumIndicConjunctBreakV1::INFO,
804 PropertyEnumIndicSyllabicCategoryV1::INFO,
805 PropertyEnumJoiningTypeV1::INFO,
806 PropertyEnumLineBreakV1::INFO,
807 PropertyEnumScriptV1::INFO,
808 PropertyEnumSentenceBreakV1::INFO,
809 PropertyEnumVerticalOrientationV1::INFO,
810 PropertyEnumWordBreakV1::INFO,
811 PropertyEnumBidiMirroringGlyphV1::INFO,
812 PropertyBinaryBasicEmojiV1::INFO,
813 PropertyScriptWithExtensionsV1::INFO,
814];
815
816#[derive(Debug, Eq, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
827#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
828#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider))]
829#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
830#[non_exhaustive]
831pub enum PropertyCodePointSet<'data> {
832 InversionList(#[cfg_attr(feature = "serde", serde(borrow))] CodePointInversionList<'data>),
834 }
838
839icu_provider::data_struct!(
840 PropertyCodePointSet<'_>,
841 #[cfg(feature = "datagen")]
842);
843
844impl<'data> PropertyCodePointSet<'data> {
846 #[inline]
847 pub(crate) fn contains(&self, ch: char) -> bool {
848 match *self {
849 Self::InversionList(ref l) => l.contains(ch),
850 }
851 }
852
853 #[inline]
854 pub(crate) fn contains32(&self, ch: u32) -> bool {
855 match *self {
856 Self::InversionList(ref l) => l.contains32(ch),
857 }
858 }
859
860 #[inline]
861 pub(crate) fn iter_ranges(&self) -> impl Iterator<Item = RangeInclusive<u32>> + '_ {
862 match *self {
863 Self::InversionList(ref l) => l.iter_ranges(),
864 }
865 }
866
867 #[inline]
868 pub(crate) fn iter_ranges_complemented(
869 &self,
870 ) -> impl Iterator<Item = RangeInclusive<u32>> + '_ {
871 match *self {
872 Self::InversionList(ref l) => l.iter_ranges_complemented(),
873 }
874 }
875
876 #[inline]
877 pub(crate) fn from_code_point_inversion_list(l: CodePointInversionList<'static>) -> Self {
878 Self::InversionList(l)
879 }
880
881 #[inline]
882 pub(crate) fn as_code_point_inversion_list(
883 &'_ self,
884 ) -> Option<&'_ CodePointInversionList<'data>> {
885 match *self {
886 Self::InversionList(ref l) => Some(l),
887 }
889 }
890
891 #[inline]
892 pub(crate) fn to_code_point_inversion_list(&self) -> CodePointInversionList<'_> {
893 match *self {
894 Self::InversionList(ref t) => ZeroFrom::zero_from(t),
895 }
896 }
897}
898
899#[derive(Clone, Debug, Eq, PartialEq, yoke::Yokeable, zerofrom::ZeroFrom)]
910#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
911#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider))]
912#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
913#[non_exhaustive]
914pub enum PropertyCodePointMap<'data, T: TrieValue> {
915 CodePointTrie(#[cfg_attr(feature = "serde", serde(borrow))] CodePointTrie<'data, T>),
917 }
921
922icu_provider::data_struct!(
923 <T: TrieValue> PropertyCodePointMap<'_, T>,
924 #[cfg(feature = "datagen")]
925);
926
927impl<'data, T: TrieValue> PropertyCodePointMap<'data, T> {
929 #[inline]
930 pub(crate) fn get32(&self, ch: u32) -> T {
931 match *self {
932 Self::CodePointTrie(ref t) => t.get32(ch),
933 }
934 }
935
936 #[inline]
937 #[cfg(feature = "alloc")]
938 pub(crate) fn try_into_converted<P>(
939 self,
940 ) -> Result<PropertyCodePointMap<'data, P>, zerovec::ule::UleError>
941 where
942 P: TrieValue,
943 {
944 match self {
945 Self::CodePointTrie(t) => t
946 .try_into_converted()
947 .map(PropertyCodePointMap::CodePointTrie),
948 }
949 }
950
951 #[inline]
952 #[cfg(feature = "alloc")]
953 pub(crate) fn get_set_for_value(&self, value: T) -> CodePointInversionList<'static> {
954 match *self {
955 Self::CodePointTrie(ref t) => t.get_set_for_value(value),
956 }
957 }
958
959 #[inline]
960 pub(crate) fn iter_ranges(&self) -> impl Iterator<Item = CodePointMapRange<T>> + '_ {
961 match *self {
962 Self::CodePointTrie(ref t) => t.iter_ranges(),
963 }
964 }
965 #[inline]
966 pub(crate) fn iter_ranges_mapped<'a, U: Eq + 'a>(
967 &'a self,
968 map: impl FnMut(T) -> U + Copy + 'a,
969 ) -> impl Iterator<Item = CodePointMapRange<U>> + 'a {
970 match *self {
971 Self::CodePointTrie(ref t) => t.iter_ranges_mapped(map),
972 }
973 }
974
975 #[inline]
976 pub(crate) fn from_code_point_trie(trie: CodePointTrie<'static, T>) -> Self {
977 Self::CodePointTrie(trie)
978 }
979
980 #[inline]
981 pub(crate) fn as_code_point_trie(&self) -> Option<&CodePointTrie<'data, T>> {
982 match *self {
983 Self::CodePointTrie(ref t) => Some(t),
984 }
986 }
987
988 #[inline]
989 pub(crate) fn to_code_point_trie(&self) -> CodePointTrie<'_, T> {
990 match *self {
991 Self::CodePointTrie(ref t) => ZeroFrom::zero_from(t),
992 }
993 }
994}
995
996#[derive(Debug, Eq, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
1004#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
1005#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider))]
1006#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
1007#[non_exhaustive]
1008pub enum PropertyUnicodeSet<'data> {
1009 CPInversionListStrList(
1011 #[cfg_attr(feature = "serde", serde(borrow))] CodePointInversionListAndStringList<'data>,
1012 ),
1013 }
1017
1018icu_provider::data_struct!(
1019 PropertyUnicodeSet<'_>,
1020 #[cfg(feature = "datagen")]
1021);
1022
1023impl<'data> PropertyUnicodeSet<'data> {
1024 #[inline]
1025 pub(crate) fn contains_str(&self, s: &str) -> bool {
1026 match *self {
1027 Self::CPInversionListStrList(ref l) => l.contains_str(s),
1028 }
1029 }
1030
1031 #[inline]
1032 pub(crate) fn contains32(&self, cp: u32) -> bool {
1033 match *self {
1034 Self::CPInversionListStrList(ref l) => l.contains32(cp),
1035 }
1036 }
1037
1038 #[inline]
1039 pub(crate) fn contains(&self, ch: char) -> bool {
1040 match *self {
1041 Self::CPInversionListStrList(ref l) => l.contains(ch),
1042 }
1043 }
1044
1045 #[inline]
1046 pub(crate) fn from_code_point_inversion_list_string_list(
1047 l: CodePointInversionListAndStringList<'static>,
1048 ) -> Self {
1049 Self::CPInversionListStrList(l)
1050 }
1051
1052 #[inline]
1053 pub(crate) fn as_code_point_inversion_list_string_list(
1054 &'_ self,
1055 ) -> Option<&'_ CodePointInversionListAndStringList<'data>> {
1056 match *self {
1057 Self::CPInversionListStrList(ref l) => Some(l),
1058 }
1060 }
1061
1062 #[inline]
1063 pub(crate) fn to_code_point_inversion_list_string_list(
1064 &self,
1065 ) -> CodePointInversionListAndStringList<'_> {
1066 match *self {
1067 Self::CPInversionListStrList(ref t) => ZeroFrom::zero_from(t),
1068 }
1069 }
1070}
1071
1072#[derive(Debug, Eq, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
1080#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
1081#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider))]
1082#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
1083pub struct ScriptWithExtensionsProperty<'data> {
1084 #[cfg_attr(feature = "serde", serde(borrow))]
1099 pub trie: CodePointTrie<'data, ScriptWithExt>,
1100
1101 #[cfg_attr(feature = "serde", serde(borrow))]
1107 pub extensions: VarZeroVec<'data, ZeroSlice<Script>>,
1108}
1109
1110icu_provider::data_struct!(
1111 ScriptWithExtensionsProperty<'_>,
1112 #[cfg(feature = "datagen")]
1113);