diff --git a/components/datetime/src/provider/neo.rs b/components/datetime/src/provider/neo.rs index 90301b57ca3..cc1de2de8ef 100644 --- a/components/datetime/src/provider/neo.rs +++ b/components/datetime/src/provider/neo.rs @@ -3,6 +3,7 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). mod adapter; +mod packed_pattern; use crate::pattern::runtime::{self, PatternULE}; use alloc::borrow::Cow; diff --git a/components/datetime/src/provider/neo/packed_pattern.rs b/components/datetime/src/provider/neo/packed_pattern.rs new file mode 100644 index 00000000000..2a4e3a32934 --- /dev/null +++ b/components/datetime/src/provider/neo/packed_pattern.rs @@ -0,0 +1,45 @@ +// This file is part of ICU4X. For terms of use, please see the file +// called LICENSE at the top level of the ICU4X source tree +// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +use icu_plurals::PluralElements; +use zerovec::VarZeroVec; + +use crate::pattern::runtime::{Pattern, PatternULE}; + +#[derive(Debug)] +pub struct LengthPluralElements<'a> { + pub long: PluralElements<'a, Pattern<'a>>, + pub medium: PluralElements<'a, Pattern<'a>>, + pub short: PluralElements<'a, Pattern<'a>>, +} + +#[derive(Debug)] +pub struct PackedSkeletonDataBuilder<'a> { + pub standard: LengthPluralElements<'a>, + pub variant0: Option>, + pub variant1: Option>, +} + +// #[zerovec::make_varule(TaggedPatternULE)] +pub struct TaggedPattern<'data> { + pub tag: u8, + pub pattern: Pattern<'data>, +} + +#[derive(Debug, PartialEq, Clone)] +#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))] +#[cfg_attr(feature = "datagen", databake(path = icu_datetime::provider::neo))] +#[cfg_attr(feature = "serde", derive(serde::Deserialize))] +pub struct PackedSkeletonDataV2<'data> { + pub header: u32, + #[cfg_attr(feature = "serde", serde(borrow))] + pub patterns: VarZeroVec<'data, PatternULE>, +} + +#[test] +fn test_sizes() { + use core::mem::size_of; + assert_eq!(32, size_of::()); + assert_eq!(32, size_of::()); +}