#[cfg(any(feature = "datagen", feature = "experimental"))]
mod skeletons;
mod symbols;
use crate::pattern;
use icu_provider::prelude::*;
#[cfg(any(feature = "datagen", feature = "experimental"))]
pub use skeletons::*;
pub use symbols::*;
size_test!(DateLengthsV1, date_lengths_v1_size, 224);
#[doc = date_lengths_v1_size!()]
#[icu_provider::data_struct(
marker(BuddhistDateLengthsV1Marker, "datetime/buddhist/datelengths@1"),
marker(ChineseDateLengthsV1Marker, "datetime/chinese/datelengths@1"),
marker(CopticDateLengthsV1Marker, "datetime/coptic/datelengths@1"),
marker(DangiDateLengthsV1Marker, "datetime/dangi/datelengths@1"),
marker(EthiopianDateLengthsV1Marker, "datetime/ethiopic/datelengths@1"),
marker(GregorianDateLengthsV1Marker, "datetime/gregory/datelengths@1"),
marker(HebrewDateLengthsV1Marker, "datetime/hebrew/datelengths@1"),
marker(IndianDateLengthsV1Marker, "datetime/indian/datelengths@1"),
marker(IslamicDateLengthsV1Marker, "datetime/islamic/datelengths@1"),
marker(JapaneseDateLengthsV1Marker, "datetime/japanese/datelengths@1"),
marker(JapaneseExtendedDateLengthsV1Marker, "datetime/japanext/datelengths@1"),
marker(PersianDateLengthsV1Marker, "datetime/persian/datelengths@1"),
marker(RocDateLengthsV1Marker, "datetime/roc/datelengths@1")
)]
#[derive(Debug, PartialEq, Clone, Default)]
#[cfg_attr(
feature = "datagen",
derive(serde::Serialize, databake::Bake),
databake(path = icu_datetime::provider::calendar),
)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
pub struct DateLengthsV1<'data> {
#[cfg_attr(feature = "serde", serde(borrow))]
pub date: patterns::LengthPatternsV1<'data>,
#[cfg_attr(feature = "serde", serde(borrow))]
pub length_combinations: patterns::GenericLengthPatternsV1<'data>,
}
pub(crate) struct ErasedDateLengthsV1Marker;
impl DataMarker for ErasedDateLengthsV1Marker {
type Yokeable = DateLengthsV1<'static>;
}
size_test!(TimeLengthsV1, time_lengths_v1_size, 264);
#[doc = time_lengths_v1_size!()]
#[icu_provider::data_struct(marker(TimeLengthsV1Marker, "datetime/timelengths@1",))]
#[derive(Debug, PartialEq, Clone, Default)]
#[cfg_attr(
feature = "datagen",
derive(serde::Serialize, databake::Bake),
databake(path = icu_datetime::provider::calendar),
)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
pub struct TimeLengthsV1<'data> {
#[cfg_attr(feature = "serde", serde(borrow))]
pub time_h11_h12: patterns::LengthPatternsV1<'data>,
#[cfg_attr(feature = "serde", serde(borrow))]
pub time_h23_h24: patterns::LengthPatternsV1<'data>,
pub preferred_hour_cycle: pattern::CoarseHourCycle,
}
pub mod patterns {
use super::*;
use crate::pattern::runtime::{self, GenericPattern, PatternPlurals};
#[derive(Debug, PartialEq, Clone, Default, yoke::Yokeable, zerofrom::ZeroFrom)]
#[cfg_attr(
feature = "datagen",
derive(serde::Serialize, databake::Bake),
databake(path = icu_datetime::provider::calendar::patterns),
)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
pub struct LengthPatternsV1<'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),
databake(path = icu_datetime::provider::calendar::patterns),
)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
pub struct GenericLengthPatternsV1<'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>,
}
#[icu_provider::data_struct]
#[derive(Debug, PartialEq, Clone, Default)]
#[cfg_attr(feature = "datagen", derive(serde::Serialize))]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
pub(crate) struct PatternPluralsV1<'data>(
#[cfg_attr(feature = "serde", serde(borrow))] pub PatternPlurals<'data>,
);
impl<'data> From<PatternPlurals<'data>> for PatternPluralsV1<'data> {
fn from(pattern: PatternPlurals<'data>) -> Self {
Self(pattern)
}
}
pub(crate) struct PatternPluralsFromPatternsV1Marker;
impl DataMarker for PatternPluralsFromPatternsV1Marker {
type Yokeable = PatternPluralsV1<'static>;
}
#[icu_provider::data_struct]
#[derive(Debug, PartialEq, Clone, Default)]
#[cfg_attr(feature = "datagen", derive(serde::Serialize))]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
pub struct GenericPatternV1<'data>(
#[cfg_attr(feature = "serde", serde(borrow))] pub GenericPattern<'data>,
);
pub(crate) struct GenericPatternV1Marker;
impl DataMarker for GenericPatternV1Marker {
type Yokeable = GenericPatternV1<'static>;
}
impl<'data> From<GenericPattern<'data>> for GenericPatternV1<'data> {
fn from(pattern: GenericPattern<'data>) -> Self {
Self(pattern)
}
}
}