1#![allow(clippy::exhaustive_structs, clippy::exhaustive_enums)]
7
8#[cfg(feature = "compiled_data")]
19#[derive(Debug)]
20pub struct Baked;
28
29#[cfg(feature = "compiled_data")]
30#[allow(unused_imports)]
31const _: () = {
32    use icu_locale_data::*;
33    pub mod icu {
34        pub use crate as locale;
35        pub use icu_collections as collections;
36    }
37    make_provider!(Baked);
38    impl_locale_aliases_v1!(Baked);
39    impl_locale_likely_subtags_extended_v1!(Baked);
40    impl_locale_likely_subtags_language_v1!(Baked);
41    impl_locale_likely_subtags_script_region_v1!(Baked);
42    impl_locale_parents_v1!(Baked);
43    impl_locale_script_direction_v1!(Baked);
44
45    impl_locale_exemplar_characters_auxiliary_v1!(Baked);
46    impl_locale_exemplar_characters_index_v1!(Baked);
47    impl_locale_exemplar_characters_main_v1!(Baked);
48    impl_locale_exemplar_characters_numbers_v1!(Baked);
49    impl_locale_exemplar_characters_punctuation_v1!(Baked);
50};
51
52icu_provider::data_marker!(
53    LocaleAliasesV1,
55    "locale/aliases/v1",
56    Aliases<'static>,
57    is_singleton = true
58);
59icu_provider::data_marker!(
60    LocaleLikelySubtagsLanguageV1,
62    "locale/likely/subtags/language/v1",
63    LikelySubtagsForLanguage<'static>,
64    is_singleton = true
65);
66icu_provider::data_marker!(
67    LocaleLikelySubtagsScriptRegionV1,
69    "locale/likely/subtags/script/region/v1",
70    LikelySubtagsForScriptRegion<'static>,
71    is_singleton = true
72);
73icu_provider::data_marker!(
74    LocaleLikelySubtagsExtendedV1,
76    "locale/likely/subtags/extended/v1",
77    LikelySubtagsExtended<'static>,
78    is_singleton = true
79);
80icu_provider::data_marker!(
81    LocaleParentsV1,
83    "locale/parents/v1",
84    Parents<'static>,
85    is_singleton = true
86);
87
88icu_provider::data_marker!(
89    LocaleScriptDirectionV1,
91    "locale/script/direction/v1",
92    ScriptDirection<'static>,
93    is_singleton = true
94);
95
96icu_provider::data_marker!(
97    LocaleExemplarCharactersAuxiliaryV1,
99    "locale/exemplar/characters/auxiliary/v1",
100    ExemplarCharactersData<'static>,
101);
102icu_provider::data_marker!(
103    LocaleExemplarCharactersIndexV1,
105    "locale/exemplar/characters/index/v1",
106    ExemplarCharactersData<'static>,
107);
108icu_provider::data_marker!(
109    LocaleExemplarCharactersMainV1,
111    "locale/exemplar/characters/main/v1",
112    ExemplarCharactersData<'static>,
113);
114icu_provider::data_marker!(
115    LocaleExemplarCharactersNumbersV1,
117    "locale/exemplar/characters/numbers/v1",
118    ExemplarCharactersData<'static>,
119);
120icu_provider::data_marker!(
121    LocaleExemplarCharactersPunctuationV1,
123    "locale/exemplar/characters/punctuation/v1",
124    ExemplarCharactersData<'static>,
125);
126
127#[cfg(feature = "datagen")]
128pub const MARKERS: &[DataMarkerInfo] = &[
130    LocaleAliasesV1::INFO,
131    LocaleExemplarCharactersAuxiliaryV1::INFO,
132    LocaleExemplarCharactersIndexV1::INFO,
133    LocaleExemplarCharactersMainV1::INFO,
134    LocaleExemplarCharactersNumbersV1::INFO,
135    LocaleExemplarCharactersPunctuationV1::INFO,
136    LocaleLikelySubtagsExtendedV1::INFO,
137    LocaleLikelySubtagsLanguageV1::INFO,
138    LocaleLikelySubtagsScriptRegionV1::INFO,
139    LocaleParentsV1::INFO,
140    LocaleScriptDirectionV1::INFO,
141];
142
143use alloc::borrow::Cow;
144use icu_collections::codepointinvliststringlist::CodePointInversionListAndStringList;
145use icu_locale_core::subtags::{Language, Region, Script, Variant};
146use icu_provider::prelude::*;
147use potential_utf::PotentialUtf8;
148use tinystr::{TinyAsciiStr, UnvalidatedTinyAsciiStr};
149use zerovec::{VarZeroVec, ZeroMap, ZeroSlice, ZeroVec};
150
151type UnvalidatedLanguage = UnvalidatedTinyAsciiStr<3>;
156type UnvalidatedScript = UnvalidatedTinyAsciiStr<4>;
157type UnvalidatedRegion = UnvalidatedTinyAsciiStr<3>;
158type UnvalidatedVariant = UnvalidatedTinyAsciiStr<8>;
159type UnvalidatedSubdivision = UnvalidatedTinyAsciiStr<7>;
160type SemivalidatedSubdivision = TinyAsciiStr<7>;
161
162type UnvalidatedLanguageIdentifier = str;
165type UnvalidatedLanguageIdentifierPair = StrStrPairVarULE;
166type UnvalidatedLanguageVariantsPair = LanguageStrStrPairVarULE;
167
168#[zerovec::make_varule(StrStrPairVarULE)]
169#[zerovec::derive(Debug)]
170#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug)]
171#[cfg_attr(
172    feature = "serde",
173    derive(serde::Deserialize),
174    zerovec::derive(Deserialize)
175)]
176#[cfg_attr(
177    feature = "datagen",
178    derive(serde::Serialize, databake::Bake),
179    zerovec::derive(Serialize),
180    databake(path = icu_locale::provider),
181)]
182pub struct StrStrPair<'a>(
190    #[cfg_attr(feature = "serde", serde(borrow))] pub Cow<'a, str>,
191    #[cfg_attr(feature = "serde", serde(borrow))] pub Cow<'a, str>,
192);
193
194#[zerovec::make_varule(LanguageStrStrPairVarULE)]
195#[zerovec::derive(Debug)]
196#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug)]
197#[cfg_attr(
198    feature = "serde",
199    derive(serde::Deserialize),
200    zerovec::derive(Deserialize)
201)]
202#[cfg_attr(
203    feature = "datagen",
204    derive(serde::Serialize, databake::Bake),
205    zerovec::derive(Serialize),
206    databake(path = icu_locale::provider),
207)]
208pub struct LanguageStrStrPair<'a>(
210    pub Language,
211    #[cfg_attr(feature = "serde", serde(borrow))] pub Cow<'a, str>,
212    #[cfg_attr(feature = "serde", serde(borrow))] pub Cow<'a, str>,
213);
214
215#[derive(PartialEq, Clone, Default, yoke::Yokeable, zerofrom::ZeroFrom)]
216#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
217#[cfg_attr(feature = "datagen", databake(path = icu_locale::provider))]
218#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
219#[yoke(prove_covariance_manually)]
220#[derive(Debug)]
244pub struct Aliases<'data> {
245    #[cfg_attr(feature = "serde", serde(borrow))]
248    pub language_variants: VarZeroVec<'data, UnvalidatedLanguageVariantsPair>,
249    #[cfg_attr(feature = "serde", serde(borrow))]
251    pub sgn_region: ZeroMap<'data, UnvalidatedRegion, Language>,
252    #[cfg_attr(feature = "serde", serde(borrow))]
254    pub language_len2: ZeroMap<'data, UnvalidatedTinyAsciiStr<2>, UnvalidatedLanguageIdentifier>,
255    #[cfg_attr(feature = "serde", serde(borrow))]
257    pub language_len3: ZeroMap<'data, UnvalidatedLanguage, UnvalidatedLanguageIdentifier>,
258    #[cfg_attr(feature = "serde", serde(borrow))]
261    pub language: VarZeroVec<'data, UnvalidatedLanguageIdentifierPair>,
262
263    #[cfg_attr(feature = "serde", serde(borrow))]
265    pub script: ZeroMap<'data, UnvalidatedScript, Script>,
266
267    #[cfg_attr(feature = "serde", serde(borrow))]
269    pub region_alpha: ZeroMap<'data, UnvalidatedTinyAsciiStr<2>, Region>,
270    #[cfg_attr(feature = "serde", serde(borrow))]
272    pub region_num: ZeroMap<'data, UnvalidatedRegion, Region>,
273
274    #[cfg_attr(feature = "serde", serde(borrow))]
276    pub complex_region: ZeroMap<'data, UnvalidatedRegion, ZeroSlice<Region>>,
277
278    #[cfg_attr(feature = "serde", serde(borrow))]
280    pub variant: ZeroMap<'data, UnvalidatedVariant, Variant>,
281
282    #[cfg_attr(feature = "serde", serde(borrow))]
284    pub subdivision: ZeroMap<'data, UnvalidatedSubdivision, SemivalidatedSubdivision>,
285}
286
287icu_provider::data_struct!(
288    Aliases<'_>,
289    #[cfg(feature = "datagen")]
290);
291
292#[derive(Debug, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
293#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
294#[cfg_attr(feature = "datagen", databake(path = icu_locale::provider))]
295#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
296#[yoke(prove_covariance_manually)]
319pub struct LikelySubtagsForLanguage<'data> {
320    #[cfg_attr(feature = "serde", serde(borrow))]
322    pub language_script: ZeroMap<'data, (UnvalidatedLanguage, UnvalidatedScript), Region>,
323    #[cfg_attr(feature = "serde", serde(borrow))]
325    pub language_region: ZeroMap<'data, (UnvalidatedLanguage, UnvalidatedRegion), Script>,
326    #[cfg_attr(feature = "serde", serde(borrow))]
328    pub language: ZeroMap<'data, UnvalidatedLanguage, (Script, Region)>,
329    pub und: (Language, Script, Region),
331}
332
333icu_provider::data_struct!(
334    LikelySubtagsForLanguage<'_>,
335    #[cfg(feature = "datagen")]
336);
337
338#[derive(Debug, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
339#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
340#[cfg_attr(feature = "datagen", databake(path = icu_locale::provider))]
341#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
342#[yoke(prove_covariance_manually)]
365pub struct LikelySubtagsForScriptRegion<'data> {
366    #[cfg_attr(feature = "serde", serde(borrow))]
368    pub script_region: ZeroMap<'data, (UnvalidatedScript, UnvalidatedRegion), Language>,
369    #[cfg_attr(feature = "serde", serde(borrow))]
371    pub script: ZeroMap<'data, UnvalidatedScript, (Language, Region)>,
372    #[cfg_attr(feature = "serde", serde(borrow))]
374    pub region: ZeroMap<'data, UnvalidatedRegion, (Language, Script)>,
375}
376
377icu_provider::data_struct!(
378    LikelySubtagsForScriptRegion<'_>,
379    #[cfg(feature = "datagen")]
380);
381
382#[derive(Debug, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
383#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
384#[cfg_attr(feature = "datagen", databake(path = icu_locale::provider))]
385#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
386#[yoke(prove_covariance_manually)]
395pub struct LikelySubtagsExtended<'data> {
396    #[cfg_attr(feature = "serde", serde(borrow))]
398    pub language_script: ZeroMap<'data, (UnvalidatedLanguage, UnvalidatedScript), Region>,
399    #[cfg_attr(feature = "serde", serde(borrow))]
401    pub language_region: ZeroMap<'data, (UnvalidatedLanguage, UnvalidatedRegion), Script>,
402    #[cfg_attr(feature = "serde", serde(borrow))]
404    pub language: ZeroMap<'data, UnvalidatedLanguage, (Script, Region)>,
405    #[cfg_attr(feature = "serde", serde(borrow))]
407    pub script_region: ZeroMap<'data, (UnvalidatedScript, UnvalidatedRegion), Language>,
408    #[cfg_attr(feature = "serde", serde(borrow))]
410    pub script: ZeroMap<'data, UnvalidatedScript, (Language, Region)>,
411    #[cfg_attr(feature = "serde", serde(borrow))]
413    pub region: ZeroMap<'data, UnvalidatedRegion, (Language, Script)>,
414}
415
416icu_provider::data_struct!(
417    LikelySubtagsExtended<'_>,
418    #[cfg(feature = "datagen")]
419);
420
421#[derive(Default, Clone, PartialEq, Debug, yoke::Yokeable, zerofrom::ZeroFrom)]
423#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
424#[cfg_attr(feature = "datagen", databake(path = icu_locale::provider))]
425#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
426#[yoke(prove_covariance_manually)]
427pub struct Parents<'data> {
428    #[cfg_attr(feature = "serde", serde(borrow))]
431    pub parents: ZeroMap<'data, PotentialUtf8, (Language, Option<Script>, Option<Region>)>,
432}
433
434icu_provider::data_struct!(
435    Parents<'_>,
436    #[cfg(feature = "datagen")]
437);
438
439#[derive(Debug, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
440#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
441#[cfg_attr(feature = "datagen", databake(path = icu_locale::provider))]
442#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
443#[yoke(prove_covariance_manually)]
451pub struct ScriptDirection<'data> {
452    #[cfg_attr(feature = "serde", serde(borrow))]
454    pub rtl: ZeroVec<'data, UnvalidatedScript>,
455    #[cfg_attr(feature = "serde", serde(borrow))]
457    pub ltr: ZeroVec<'data, UnvalidatedScript>,
458}
459
460icu_provider::data_struct!(
461    ScriptDirection<'_>,
462    #[cfg(feature = "datagen")]
463);
464
465#[derive(Debug, Eq, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
473#[cfg_attr(
474    feature = "datagen", 
475    derive(serde::Serialize, databake::Bake),
476    databake(path = icu_locale::provider),
477)]
478#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
479pub struct ExemplarCharactersData<'data>(
480    #[cfg_attr(feature = "serde", serde(borrow))] pub CodePointInversionListAndStringList<'data>,
481);
482
483icu_provider::data_struct!(
484    ExemplarCharactersData<'_>,
485    #[cfg(feature = "datagen")]
486);