1use icu_locale_core::subtags::Script;
16use icu_provider::prelude::{yoke, zerofrom};
17
18use zerotrie::ZeroTrieSimpleAscii;
19use zerovec::ule::NichedOption;
20use zerovec::{VarZeroVec, ZeroVec};
21
22icu_provider::data_marker!(
23 PropertyNameParseBidiClassV1,
25 PropertyValueNameToEnumMap<'static>,
26 is_singleton = true
27);
28icu_provider::data_marker!(
29 PropertyNameParseCanonicalCombiningClassV1,
31 PropertyValueNameToEnumMap<'static>,
32 is_singleton = true
33);
34icu_provider::data_marker!(
35 PropertyNameParseEastAsianWidthV1,
37 PropertyValueNameToEnumMap<'static>,
38 is_singleton = true
39);
40icu_provider::data_marker!(
41 PropertyNameParseGeneralCategoryMaskV1,
43 PropertyValueNameToEnumMap<'static>,
44 is_singleton = true
45);
46icu_provider::data_marker!(
47 PropertyNameParseGeneralCategoryV1,
49 PropertyValueNameToEnumMap<'static>,
50 is_singleton = true
51);
52icu_provider::data_marker!(
53 PropertyNameParseGraphemeClusterBreakV1,
55 PropertyValueNameToEnumMap<'static>,
56 is_singleton = true
57);
58icu_provider::data_marker!(
59 PropertyNameParseHangulSyllableTypeV1,
61 PropertyValueNameToEnumMap<'static>,
62 is_singleton = true
63);
64icu_provider::data_marker!(
65 PropertyNameParseIndicSyllabicCategoryV1,
67 PropertyValueNameToEnumMap<'static>,
68 is_singleton = true
69);
70icu_provider::data_marker!(
71 PropertyNameParseIndicConjunctBreakV1,
73 PropertyValueNameToEnumMap<'static>,
74 is_singleton = true
75);
76icu_provider::data_marker!(
77 PropertyNameParseJoiningGroupV1,
79 PropertyValueNameToEnumMap<'static>,
80 is_singleton = true
81);
82icu_provider::data_marker!(
83 PropertyNameParseJoiningTypeV1,
85 PropertyValueNameToEnumMap<'static>,
86 is_singleton = true
87);
88icu_provider::data_marker!(
89 PropertyNameParseLineBreakV1,
91 PropertyValueNameToEnumMap<'static>,
92 is_singleton = true
93);
94icu_provider::data_marker!(
95 PropertyNameParseNumericTypeV1,
97 PropertyValueNameToEnumMap<'static>,
98 is_singleton = true
99);
100icu_provider::data_marker!(
101 PropertyNameParseScriptV1,
103 PropertyValueNameToEnumMap<'static>,
104 is_singleton = true
105);
106icu_provider::data_marker!(
107 PropertyNameParseSentenceBreakV1,
109 PropertyValueNameToEnumMap<'static>,
110 is_singleton = true
111);
112icu_provider::data_marker!(
113 PropertyNameParseVerticalOrientationV1,
115 PropertyValueNameToEnumMap<'static>,
116 is_singleton = true
117);
118icu_provider::data_marker!(
119 PropertyNameParseWordBreakV1,
121 PropertyValueNameToEnumMap<'static>,
122 is_singleton = true
123);
124icu_provider::data_marker!(
125 PropertyNameLongBidiClassV1,
127 PropertyEnumToValueNameLinearMap<'static>,
128 is_singleton = true
129);
130icu_provider::data_marker!(
131 PropertyNameShortBidiClassV1,
133 PropertyEnumToValueNameLinearMap<'static>,
134 is_singleton = true
135);
136icu_provider::data_marker!(
137 PropertyNameLongEastAsianWidthV1,
139 PropertyEnumToValueNameLinearMap<'static>,
140 is_singleton = true
141);
142icu_provider::data_marker!(
143 PropertyNameShortEastAsianWidthV1,
145 PropertyEnumToValueNameLinearMap<'static>,
146 is_singleton = true
147);
148icu_provider::data_marker!(
149 PropertyNameLongGeneralCategoryV1,
151 PropertyEnumToValueNameLinearMap<'static>,
152 is_singleton = true
153);
154icu_provider::data_marker!(
155 PropertyNameShortGeneralCategoryV1,
157 PropertyEnumToValueNameLinearMap<'static>,
158 is_singleton = true
159);
160icu_provider::data_marker!(
161 PropertyNameLongGraphemeClusterBreakV1,
163 PropertyEnumToValueNameLinearMap<'static>,
164 is_singleton = true
165);
166icu_provider::data_marker!(
167 PropertyNameShortGraphemeClusterBreakV1,
169 PropertyEnumToValueNameLinearMap<'static>,
170 is_singleton = true
171);
172icu_provider::data_marker!(
173 PropertyNameLongHangulSyllableTypeV1,
175 PropertyEnumToValueNameLinearMap<'static>,
176 is_singleton = true
177);
178icu_provider::data_marker!(
179 PropertyNameShortHangulSyllableTypeV1,
181 PropertyEnumToValueNameLinearMap<'static>,
182 is_singleton = true
183);
184icu_provider::data_marker!(
185 PropertyNameLongIndicSyllabicCategoryV1,
187 PropertyEnumToValueNameLinearMap<'static>,
188 is_singleton = true
189);
190icu_provider::data_marker!(
191 PropertyNameShortIndicSyllabicCategoryV1,
193 PropertyEnumToValueNameLinearMap<'static>,
194 is_singleton = true
195);
196icu_provider::data_marker!(
197 PropertyNameLongIndicConjunctBreakV1,
199 PropertyEnumToValueNameLinearMap<'static>,
200 is_singleton = true
201);
202icu_provider::data_marker!(
203 PropertyNameShortIndicConjunctBreakV1,
205 PropertyEnumToValueNameLinearMap<'static>,
206 is_singleton = true
207);
208icu_provider::data_marker!(
209 PropertyNameLongJoiningGroupV1,
211 PropertyEnumToValueNameLinearMap<'static>,
212 is_singleton = true
213);
214icu_provider::data_marker!(
215 PropertyNameShortJoiningGroupV1,
217 PropertyEnumToValueNameLinearMap<'static>,
218 is_singleton = true
219);
220icu_provider::data_marker!(
221 PropertyNameLongJoiningTypeV1,
223 PropertyEnumToValueNameLinearMap<'static>,
224 is_singleton = true
225);
226icu_provider::data_marker!(
227 PropertyNameShortJoiningTypeV1,
229 PropertyEnumToValueNameLinearMap<'static>,
230 is_singleton = true
231);
232icu_provider::data_marker!(
233 PropertyNameLongLineBreakV1,
235 PropertyEnumToValueNameLinearMap<'static>,
236 is_singleton = true
237);
238icu_provider::data_marker!(
239 PropertyNameLongNumericTypeV1,
241 PropertyEnumToValueNameLinearMap<'static>,
242 is_singleton = true,
243);
244icu_provider::data_marker!(
245 PropertyNameShortNumericTypeV1,
247 PropertyEnumToValueNameLinearMap<'static>,
248 is_singleton = true,
249);
250icu_provider::data_marker!(
251 PropertyNameShortLineBreakV1,
253 PropertyEnumToValueNameLinearMap<'static>,
254 is_singleton = true
255);
256icu_provider::data_marker!(
257 PropertyNameLongScriptV1,
259 PropertyEnumToValueNameLinearMap<'static>,
260 is_singleton = true
261);
262icu_provider::data_marker!(
263 PropertyNameLongSentenceBreakV1,
265 PropertyEnumToValueNameLinearMap<'static>,
266 is_singleton = true
267);
268icu_provider::data_marker!(
269 PropertyNameShortSentenceBreakV1,
271 PropertyEnumToValueNameLinearMap<'static>,
272 is_singleton = true
273);
274icu_provider::data_marker!(
275 PropertyNameLongVerticalOrientationV1,
277 PropertyEnumToValueNameLinearMap<'static>,
278 is_singleton = true
279);
280icu_provider::data_marker!(
281 PropertyNameShortVerticalOrientationV1,
283 PropertyEnumToValueNameLinearMap<'static>,
284 is_singleton = true
285);
286icu_provider::data_marker!(
287 PropertyNameLongWordBreakV1,
289 PropertyEnumToValueNameLinearMap<'static>,
290 is_singleton = true
291);
292icu_provider::data_marker!(
293 PropertyNameShortWordBreakV1,
295 PropertyEnumToValueNameLinearMap<'static>,
296 is_singleton = true
297);
298#[cfg(feature = "alloc")]
299icu_provider::data_marker!(
300 PropertyNameLongCanonicalCombiningClassV1,
302 PropertyEnumToValueNameSparseMap<'static>,
303 is_singleton = true,
304);
305#[cfg(feature = "alloc")]
306icu_provider::data_marker!(
307 PropertyNameShortCanonicalCombiningClassV1,
309 PropertyEnumToValueNameSparseMap<'static>,
310 is_singleton = true,
311);
312icu_provider::data_marker!(
313 PropertyNameShortScriptV1,
315 PropertyScriptToIcuScriptMap<'static>,
316 is_singleton = true,
317);
318
319#[derive(Debug, Clone, PartialEq, yoke::Yokeable, zerofrom::ZeroFrom)]
327#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
328#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider::names))]
329#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
330pub struct PropertyValueNameToEnumMap<'data> {
331 #[cfg_attr(feature = "serde", serde(borrow))]
333 pub map: ZeroTrieSimpleAscii<ZeroVec<'data, u8>>,
334}
335
336icu_provider::data_struct!(
337 PropertyValueNameToEnumMap<'_>,
338 #[cfg(feature = "datagen")]
339);
340
341#[derive(Debug, Clone, PartialEq, yoke::Yokeable, zerofrom::ZeroFrom)]
350#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
351#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider::names))]
352#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
353#[yoke(prove_covariance_manually)]
354#[cfg(feature = "alloc")]
355pub struct PropertyEnumToValueNameSparseMap<'data> {
356 #[cfg_attr(feature = "serde", serde(borrow))]
358 pub map: zerovec::ZeroMap<'data, u16, str>,
359}
360
361#[cfg(feature = "alloc")]
362icu_provider::data_struct!(
363 PropertyEnumToValueNameSparseMap<'_>,
364 #[cfg(feature = "datagen")]
365);
366
367#[derive(Debug, Clone, PartialEq, yoke::Yokeable, zerofrom::ZeroFrom)]
376#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
377#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider::names))]
378#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
379#[yoke(prove_covariance_manually)]
380pub struct PropertyEnumToValueNameLinearMap<'data> {
381 #[cfg_attr(feature = "serde", serde(borrow))]
384 pub map: VarZeroVec<'data, str>,
385}
386
387icu_provider::data_struct!(
388 PropertyEnumToValueNameLinearMap<'_>,
389 #[cfg(feature = "datagen")]
390);
391
392#[derive(Debug, Clone, PartialEq, yoke::Yokeable, zerofrom::ZeroFrom)]
401#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
402#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider::names))]
403#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
404#[yoke(prove_covariance_manually)]
405pub struct PropertyScriptToIcuScriptMap<'data> {
406 #[cfg_attr(feature = "serde", serde(borrow))]
409 pub map: ZeroVec<'data, NichedOption<Script, 4>>,
410}
411
412icu_provider::data_struct!(
413 PropertyScriptToIcuScriptMap<'_>,
414 #[cfg(feature = "datagen")]
415);