1#![allow(clippy::exhaustive_structs, clippy::exhaustive_enums)]
17
18use icu_collections::char16trie::Char16Trie;
19use icu_collections::codepointtrie::CodePointTrie;
20use icu_provider::prelude::*;
21use zerovec::ZeroVec;
22
23#[cfg(feature = "compiled_data")]
24#[derive(Debug)]
25pub struct Baked;
33
34#[cfg(feature = "compiled_data")]
35#[allow(unused_imports)]
36const _: () = {
37 use icu_normalizer_data::*;
38 pub mod icu {
39 pub use crate as normalizer;
40 pub use icu_collections as collections;
41 }
42 make_provider!(Baked);
43 impl_normalizer_nfc_v1!(Baked);
44 impl_normalizer_nfc_v2!(Baked);
45 impl_normalizer_nfd_data_v1!(Baked);
46 impl_normalizer_nfd_supplement_v1!(Baked);
47 impl_normalizer_nfd_tables_v1!(Baked);
48 impl_normalizer_nfkd_data_v1!(Baked);
49 impl_normalizer_nfkd_tables_v1!(Baked);
50 impl_normalizer_uts46_data_v1!(Baked);
51};
52
53icu_provider::data_marker!(
54 NormalizerNfdDataV1,
56 "normalizer/nfd/data/v1",
57 DecompositionData<'static>,
58 is_singleton = true
59);
60icu_provider::data_marker!(
61 NormalizerNfdTablesV1,
63 "normalizer/nfd/tables/v1",
64 DecompositionTables<'static>,
65 is_singleton = true
66);
67icu_provider::data_marker!(
68 NormalizerNfkdDataV1,
70 "normalizer/nfkd/data/v1",
71 DecompositionData<'static>,
72 is_singleton = true
73);
74icu_provider::data_marker!(
75 NormalizerNfkdTablesV1,
77 "normalizer/nfkd/tables/v1",
78 DecompositionTables<'static>,
79 is_singleton = true
80);
81icu_provider::data_marker!(
82 NormalizerUts46DataV1,
84 "normalizer/uts46/data/v1",
85 DecompositionData<'static>,
86 is_singleton = true
87);
88icu_provider::data_marker!(
89 NormalizerNfcV1,
91 "normalizer/nfc/v1",
92 CanonicalCompositions<'static>,
93 is_singleton = true
94);
95icu_provider::data_marker!(
96 NormalizerNfcV2,
98 "normalizer/nfc/v2",
99 CanonicalCompositionsNew<'static>,
100 is_singleton = true
101);
102icu_provider::data_marker!(
103 NormalizerNfdSupplementV1,
105 "normalizer/nfd/supplement/v1",
106 NonRecursiveDecompositionSupplement<'static>,
107 is_singleton = true
108);
109
110#[cfg(feature = "datagen")]
111pub const MARKERS: &[DataMarkerInfo] = &[
113 NormalizerNfcV1::INFO,
114 NormalizerNfcV2::INFO,
115 NormalizerNfdDataV1::INFO,
116 NormalizerNfdTablesV1::INFO,
117 NormalizerNfkdDataV1::INFO,
118 NormalizerNfkdTablesV1::INFO,
119 NormalizerNfdSupplementV1::INFO,
120 NormalizerUts46DataV1::INFO,
121];
122
123#[derive(Debug, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
131#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
132#[cfg_attr(feature = "datagen", databake(path = icu_normalizer::provider))]
133#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
134pub struct DecompositionData<'data> {
135 #[cfg_attr(feature = "serde", serde(borrow))]
137 pub trie: CodePointTrie<'data, u32>,
138 pub passthrough_cap: u16,
142}
143
144icu_provider::data_struct!(
145 DecompositionData<'_>,
146 #[cfg(feature = "datagen")]
147);
148
149#[derive(Debug, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
158#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
159#[cfg_attr(feature = "datagen", databake(path = icu_normalizer::provider))]
160#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
161pub struct DecompositionTables<'data> {
162 #[cfg_attr(feature = "serde", serde(borrow))]
164 pub scalars16: ZeroVec<'data, u16>,
165 #[cfg_attr(feature = "serde", serde(borrow))]
168 pub scalars24: ZeroVec<'data, char>,
169}
170
171icu_provider::data_struct!(
172 DecompositionTables<'_>,
173 #[cfg(feature = "datagen")]
174);
175
176#[derive(Debug, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
184#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
185#[cfg_attr(feature = "datagen", databake(path = icu_normalizer::provider))]
186#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
187pub struct CanonicalCompositions<'data> {
188 #[cfg_attr(feature = "serde", serde(borrow))]
192 pub canonical_compositions: Char16Trie<'data>,
193}
194
195icu_provider::data_struct!(
196 CanonicalCompositions<'_>,
197 #[cfg(feature = "datagen")]
198);
199
200#[derive(Debug, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
208#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
209#[cfg_attr(feature = "datagen", databake(path = icu_normalizer::provider))]
210#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
211pub struct CanonicalCompositionsNew<'data> {
212 #[cfg_attr(feature = "serde", serde(borrow))]
219 pub trie: CodePointTrie<'data, u16>,
220
221 #[cfg_attr(feature = "serde", serde(borrow))]
223 pub linear16: ZeroVec<'data, (u16, u16)>,
224 #[cfg_attr(feature = "serde", serde(borrow))]
227 pub linear24: ZeroVec<'data, (char, char)>,
228}
229
230icu_provider::data_struct!(
231 CanonicalCompositionsNew<'_>,
232 #[cfg(feature = "datagen")]
233);
234
235#[derive(Debug, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
244#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
245#[cfg_attr(feature = "datagen", databake(path = icu_normalizer::provider))]
246#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
247pub struct NonRecursiveDecompositionSupplement<'data> {
248 #[cfg_attr(feature = "serde", serde(borrow))]
250 pub trie: CodePointTrie<'data, u32>,
251 #[cfg_attr(feature = "serde", serde(borrow))]
254 pub scalars24: ZeroVec<'data, char>,
255}
256
257icu_provider::data_struct!(
258 NonRecursiveDecompositionSupplement<'_>,
259 #[cfg(feature = "datagen")]
260);