icu_normalizer/
provider.rs1#![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_nfd_data_v1!(Baked);
45 impl_normalizer_nfd_supplement_v1!(Baked);
46 impl_normalizer_nfd_tables_v1!(Baked);
47 impl_normalizer_nfkd_data_v1!(Baked);
48 impl_normalizer_nfkd_tables_v1!(Baked);
49 impl_normalizer_uts46_data_v1!(Baked);
50};
51
52icu_provider::data_marker!(
53 NormalizerNfdDataV1,
55 "normalizer/nfd/data/v1",
56 DecompositionData<'static>,
57 is_singleton = true
58);
59icu_provider::data_marker!(
60 NormalizerNfdTablesV1,
62 "normalizer/nfd/tables/v1",
63 DecompositionTables<'static>,
64 is_singleton = true
65);
66icu_provider::data_marker!(
67 NormalizerNfkdDataV1,
69 "normalizer/nfkd/data/v1",
70 DecompositionData<'static>,
71 is_singleton = true
72);
73icu_provider::data_marker!(
74 NormalizerNfkdTablesV1,
76 "normalizer/nfkd/tables/v1",
77 DecompositionTables<'static>,
78 is_singleton = true
79);
80icu_provider::data_marker!(
81 NormalizerUts46DataV1,
83 "normalizer/uts46/data/v1",
84 DecompositionData<'static>,
85 is_singleton = true
86);
87icu_provider::data_marker!(
88 NormalizerNfcV1,
90 "normalizer/nfc/v1",
91 CanonicalCompositions<'static>,
92 is_singleton = true
93);
94icu_provider::data_marker!(
95 NormalizerNfdSupplementV1,
97 "normalizer/nfd/supplement/v1",
98 NonRecursiveDecompositionSupplement<'static>,
99 is_singleton = true
100);
101
102#[cfg(feature = "datagen")]
103pub const MARKERS: &[DataMarkerInfo] = &[
105 NormalizerNfcV1::INFO,
106 NormalizerNfdDataV1::INFO,
107 NormalizerNfdTablesV1::INFO,
108 NormalizerNfkdDataV1::INFO,
109 NormalizerNfkdTablesV1::INFO,
110 NormalizerNfdSupplementV1::INFO,
111 NormalizerUts46DataV1::INFO,
112];
113
114#[derive(Debug, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
122#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
123#[cfg_attr(feature = "datagen", databake(path = icu_normalizer::provider))]
124#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
125pub struct DecompositionData<'data> {
126 #[cfg_attr(feature = "serde", serde(borrow))]
128 pub trie: CodePointTrie<'data, u32>,
129 pub passthrough_cap: u16,
133}
134
135icu_provider::data_struct!(
136 DecompositionData<'_>,
137 #[cfg(feature = "datagen")]
138);
139
140#[derive(Debug, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
149#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
150#[cfg_attr(feature = "datagen", databake(path = icu_normalizer::provider))]
151#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
152pub struct DecompositionTables<'data> {
153 #[cfg_attr(feature = "serde", serde(borrow))]
155 pub scalars16: ZeroVec<'data, u16>,
156 #[cfg_attr(feature = "serde", serde(borrow))]
159 pub scalars24: ZeroVec<'data, char>,
160}
161
162icu_provider::data_struct!(
163 DecompositionTables<'_>,
164 #[cfg(feature = "datagen")]
165);
166
167#[derive(Debug, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
175#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
176#[cfg_attr(feature = "datagen", databake(path = icu_normalizer::provider))]
177#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
178pub struct CanonicalCompositions<'data> {
179 #[cfg_attr(feature = "serde", serde(borrow))]
183 pub canonical_compositions: Char16Trie<'data>,
184}
185
186icu_provider::data_struct!(
187 CanonicalCompositions<'_>,
188 #[cfg(feature = "datagen")]
189);
190
191#[derive(Debug, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
200#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
201#[cfg_attr(feature = "datagen", databake(path = icu_normalizer::provider))]
202#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
203pub struct NonRecursiveDecompositionSupplement<'data> {
204 #[cfg_attr(feature = "serde", serde(borrow))]
206 pub trie: CodePointTrie<'data, u32>,
207 #[cfg_attr(feature = "serde", serde(borrow))]
210 pub scalars24: ZeroVec<'data, char>,
211}
212
213icu_provider::data_struct!(
214 NonRecursiveDecompositionSupplement<'_>,
215 #[cfg(feature = "datagen")]
216);