// 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 ). //! 🚧 \[Unstable\] Property names-related data for this component //! //!
//! 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways, //! including in SemVer minor releases. While the serde representation of data structs is guaranteed //! to be stable, their Rust representation might not be. Use with caution. //!
//! //! Read more about data providers: [`icu_provider`] use icu_locale_core::subtags::Script; use icu_provider::prelude::*; use zerotrie::ZeroTrieSimpleAscii; use zerovec::ule::NichedOption; use zerovec::{VarZeroVec, ZeroMap, ZeroVec}; icu_provider::data_marker!( /// `BidiClassNameToValueV2` BidiClassNameToValueV2, PropertyValueNameToEnumMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `CanonicalCombiningClassNameToValueV2` CanonicalCombiningClassNameToValueV2, PropertyValueNameToEnumMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `EastAsianWidthNameToValueV2` EastAsianWidthNameToValueV2, PropertyValueNameToEnumMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `GeneralCategoryMaskNameToValueV2` GeneralCategoryMaskNameToValueV2, PropertyValueNameToEnumMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `GeneralCategoryNameToValueV2` GeneralCategoryNameToValueV2, PropertyValueNameToEnumMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `GraphemeClusterBreakNameToValueV2` GraphemeClusterBreakNameToValueV2, PropertyValueNameToEnumMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `HangulSyllableTypeNameToValueV2` HangulSyllableTypeNameToValueV2, PropertyValueNameToEnumMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `IndicSyllabicCategoryNameToValueV2` IndicSyllabicCategoryNameToValueV2, PropertyValueNameToEnumMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `JoiningTypeNameToValueV2` JoiningTypeNameToValueV2, PropertyValueNameToEnumMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `LineBreakNameToValueV2` LineBreakNameToValueV2, PropertyValueNameToEnumMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `ScriptNameToValueV2` ScriptNameToValueV2, PropertyValueNameToEnumMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `SentenceBreakNameToValueV2` SentenceBreakNameToValueV2, PropertyValueNameToEnumMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `WordBreakNameToValueV2` WordBreakNameToValueV2, PropertyValueNameToEnumMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `BidiClassValueToLongNameV1` BidiClassValueToLongNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `BidiClassValueToShortNameV1` BidiClassValueToShortNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `EastAsianWidthValueToLongNameV1` EastAsianWidthValueToLongNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `EastAsianWidthValueToShortNameV1` EastAsianWidthValueToShortNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `GeneralCategoryValueToLongNameV1` GeneralCategoryValueToLongNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `GeneralCategoryValueToShortNameV1` GeneralCategoryValueToShortNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `GraphemeClusterBreakValueToLongNameV1` GraphemeClusterBreakValueToLongNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `GraphemeClusterBreakValueToShortNameV1` GraphemeClusterBreakValueToShortNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `HangulSyllableTypeValueToLongNameV1` HangulSyllableTypeValueToLongNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `HangulSyllableTypeValueToShortNameV1` HangulSyllableTypeValueToShortNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `IndicSyllabicCategoryValueToLongNameV1` IndicSyllabicCategoryValueToLongNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `IndicSyllabicCategoryValueToShortNameV1` IndicSyllabicCategoryValueToShortNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `JoiningTypeValueToLongNameV1` JoiningTypeValueToLongNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `JoiningTypeValueToShortNameV1` JoiningTypeValueToShortNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `LineBreakValueToLongNameV1` LineBreakValueToLongNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `LineBreakValueToShortNameV1` LineBreakValueToShortNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `ScriptValueToLongNameV1` ScriptValueToLongNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `SentenceBreakValueToLongNameV1` SentenceBreakValueToLongNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `SentenceBreakValueToShortNameV1` SentenceBreakValueToShortNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `WordBreakValueToLongNameV1` WordBreakValueToLongNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `WordBreakValueToShortNameV1` WordBreakValueToShortNameV1, PropertyEnumToValueNameLinearMap<'static>, is_singleton = true ); icu_provider::data_marker!( /// `CanonicalCombiningClassValueToLongNameV1` CanonicalCombiningClassValueToLongNameV1, PropertyEnumToValueNameSparseMap<'static>, is_singleton = true, ); icu_provider::data_marker!( /// `CanonicalCombiningClassValueToShortNameV1` CanonicalCombiningClassValueToShortNameV1, PropertyEnumToValueNameSparseMap<'static>, is_singleton = true, ); icu_provider::data_marker!( /// `ScriptValueToShortNameV1` ScriptValueToShortNameV1, PropertyScriptToIcuScriptMap<'static>, is_singleton = true, ); /// A set of characters and strings which share a particular property value. /// ///
/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways, /// including in SemVer minor releases. While the serde representation of data structs is guaranteed /// to be stable, their Rust representation might not be. Use with caution. ///
#[derive(Debug, Clone, PartialEq, yoke::Yokeable, zerofrom::ZeroFrom)] #[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))] #[cfg_attr(feature = "datagen", databake(path = icu_properties::provider::names))] #[cfg_attr(feature = "serde", derive(serde::Deserialize))] pub struct PropertyValueNameToEnumMap<'data> { /// A map from names to their value discriminant #[cfg_attr(feature = "serde", serde(borrow))] pub map: ZeroTrieSimpleAscii>, } icu_provider::data_struct!( PropertyValueNameToEnumMap<'_>, #[cfg(feature = "datagen")] ); /// A mapping of property values to their names. A single instance of this map will only cover /// either long or short names, determined whilst loading data. /// ///
/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways, /// including in SemVer minor releases. While the serde representation of data structs is guaranteed /// to be stable, their Rust representation might not be. Use with caution. ///
#[derive(Debug, Clone, PartialEq, yoke::Yokeable, zerofrom::ZeroFrom)] #[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))] #[cfg_attr(feature = "datagen", databake(path = icu_properties::provider::names))] #[cfg_attr(feature = "serde", derive(serde::Deserialize))] #[yoke(prove_covariance_manually)] pub struct PropertyEnumToValueNameSparseMap<'data> { /// A map from the value discriminant to the names #[cfg_attr(feature = "serde", serde(borrow))] pub map: ZeroMap<'data, u16, str>, } icu_provider::data_struct!( PropertyEnumToValueNameSparseMap<'_>, #[cfg(feature = "datagen")] ); /// A mapping of property values to their names. A single instance of this map will only cover /// either long or short names, determined whilst loading data. /// ///
/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways, /// including in SemVer minor releases. While the serde representation of data structs is guaranteed /// to be stable, their Rust representation might not be. Use with caution. ///
#[derive(Debug, Clone, PartialEq, yoke::Yokeable, zerofrom::ZeroFrom)] #[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))] #[cfg_attr(feature = "datagen", databake(path = icu_properties::provider::names))] #[cfg_attr(feature = "serde", derive(serde::Deserialize))] #[yoke(prove_covariance_manually)] pub struct PropertyEnumToValueNameLinearMap<'data> { /// A map from the value discriminant (the index) to the names, for mostly /// contiguous data. Empty strings count as missing. #[cfg_attr(feature = "serde", serde(borrow))] pub map: VarZeroVec<'data, str>, } icu_provider::data_struct!( PropertyEnumToValueNameLinearMap<'_>, #[cfg(feature = "datagen")] ); /// A mapping of property values to their names. A single instance of this map will only cover /// either long or short names, determined whilst loading data. /// ///
/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways, /// including in SemVer minor releases. While the serde representation of data structs is guaranteed /// to be stable, their Rust representation might not be. Use with caution. ///
#[derive(Debug, Clone, PartialEq, yoke::Yokeable, zerofrom::ZeroFrom)] #[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))] #[cfg_attr(feature = "datagen", databake(path = icu_properties::provider::names))] #[cfg_attr(feature = "serde", derive(serde::Deserialize))] #[yoke(prove_covariance_manually)] pub struct PropertyScriptToIcuScriptMap<'data> { /// A map from the value discriminant (the index) to the names, for mostly /// contiguous data. Empty strings count as missing. #[cfg_attr(feature = "serde", serde(borrow))] pub map: ZeroVec<'data, NichedOption>, } icu_provider::data_struct!( PropertyScriptToIcuScriptMap<'_>, #[cfg(feature = "datagen")] );