#[cfg(feature = "datagen")]
mod skeletons;
mod symbols;
use crate::provider::pattern;
use crate::size_test_macro::size_test;
use icu_provider::prelude::*;
#[cfg(feature = "datagen")]
pub use skeletons::*;
pub use symbols::*;
size_test!(DateLengths, date_lengths_v1_size, 224);
icu_provider::data_marker!(
BuddhistDateLengthsV1,
DateLengths<'static>
);
icu_provider::data_marker!(
ChineseDateLengthsV1,
DateLengths<'static>
);
icu_provider::data_marker!(
CopticDateLengthsV1,
DateLengths<'static>
);
icu_provider::data_marker!(
DangiDateLengthsV1,
DateLengths<'static>
);
icu_provider::data_marker!(
EthiopianDateLengthsV1,
DateLengths<'static>
);
icu_provider::data_marker!(
GregorianDateLengthsV1,
DateLengths<'static>
);
icu_provider::data_marker!(
HebrewDateLengthsV1,
DateLengths<'static>
);
icu_provider::data_marker!(
IndianDateLengthsV1,
DateLengths<'static>
);
icu_provider::data_marker!(
IslamicDateLengthsV1,
DateLengths<'static>
);
icu_provider::data_marker!(
JapaneseDateLengthsV1,
DateLengths<'static>
);
icu_provider::data_marker!(
JapaneseExtendedDateLengthsV1,
DateLengths<'static>
);
icu_provider::data_marker!(
PersianDateLengthsV1,
DateLengths<'static>
);
icu_provider::data_marker!(
RocDateLengthsV1,
DateLengths<'static>
);
#[doc = date_lengths_v1_size!()]
#[derive(Debug, PartialEq, Clone, Default, zerofrom::ZeroFrom, yoke::Yokeable)]
#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
#[cfg_attr(feature = "datagen", databake(path = icu_datetime::provider::calendar))]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
pub struct DateLengths<'data> {
#[cfg_attr(feature = "serde", serde(borrow))]
pub date: patterns::LengthPatterns<'data>,
#[cfg_attr(feature = "serde", serde(borrow))]
pub length_combinations: patterns::GenericLengthPatterns<'data>,
}
icu_provider::data_struct!(
DateLengths<'_>,
#[cfg(feature = "datagen")]
);
icu_provider::data_marker!(
TimeLengthsV1,
TimeLengths<'static>
);
size_test!(TimeLengths, time_lengths_v1_size, 264);
#[doc = time_lengths_v1_size!()]
#[derive(Debug, PartialEq, Clone, Default, yoke::Yokeable, zerofrom::ZeroFrom)]
#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
#[cfg_attr(feature = "datagen", databake(path = icu_datetime::provider::calendar))]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
pub struct TimeLengths<'data> {
#[cfg_attr(feature = "serde", serde(borrow))]
pub time_h11_h12: patterns::LengthPatterns<'data>,
#[cfg_attr(feature = "serde", serde(borrow))]
pub time_h23_h24: patterns::LengthPatterns<'data>,
pub preferred_hour_cycle: pattern::CoarseHourCycle,
}
icu_provider::data_struct!(TimeLengths<'_>, #[cfg(feature = "datagen")]);
pub mod patterns {
use super::*;
use crate::provider::pattern::runtime::{self, GenericPattern};
#[derive(Debug)]
pub enum FullLongMediumShort {
Full,
Long,
Medium,
Short,
}
#[derive(Debug, PartialEq, Clone, Default, yoke::Yokeable, zerofrom::ZeroFrom)]
#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
#[cfg_attr(feature = "datagen", databake(path = icu_datetime::provider::calendar::patterns))]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
pub struct LengthPatterns<'data> {
#[cfg_attr(feature = "serde", serde(borrow))]
pub full: runtime::Pattern<'data>,
#[cfg_attr(feature = "serde", serde(borrow))]
pub long: runtime::Pattern<'data>,
#[cfg_attr(feature = "serde", serde(borrow))]
pub medium: runtime::Pattern<'data>,
#[cfg_attr(feature = "serde", serde(borrow))]
pub short: runtime::Pattern<'data>,
}
#[derive(Debug, PartialEq, Clone, Default, yoke::Yokeable, zerofrom::ZeroFrom)]
#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
#[cfg_attr(feature = "datagen", databake(path = icu_datetime::provider::calendar::patterns))]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
pub struct GenericLengthPatterns<'data> {
#[cfg_attr(feature = "serde", serde(borrow))]
pub full: GenericPattern<'data>,
#[cfg_attr(feature = "serde", serde(borrow))]
pub long: GenericPattern<'data>,
#[cfg_attr(feature = "serde", serde(borrow))]
pub medium: GenericPattern<'data>,
#[cfg_attr(feature = "serde", serde(borrow))]
pub short: GenericPattern<'data>,
}
}