Bug 1824671 - patch 9 - Run ./mach vendor rust to bring in icu_properties. r=supply-chain-reviewers,dminor

Differential Revision: https://phabricator.services.mozilla.com/D198448
This commit is contained in:
Jonathan Kew 2024-01-23 11:53:23 +00:00
parent ca727d236b
commit 1929f8b0a2
152 changed files with 17202 additions and 0 deletions

View File

@ -0,0 +1 @@
{"files":{"Cargo.toml":"eedae110c706f273f791010478827d1f2ae1a6ad17eb8ecd5788b5f6c23338c4","LICENSE":"853f87c96f3d249f200fec6db1114427bc8bdf4afddc93c576956d78152ce978","README.md":"eba7efca11d982b63e9606354a0c3bc81c272989683d8cc7a6d98a7325a1c9b6","data/macros.rs":"bf4776d79e736ece851aea1540aa641899f202125b6711cd5d2d6e787218eb85","data/macros/fallback_likelysubtags_v1.rs.data":"5877fee0995d25de89aa048f02ebb957bc64daec8eff4ab4e860192030930ea9","data/macros/fallback_parents_v1.rs.data":"49ce55c00ed504a91d68db269e1c90420469db0f7666240c047a0de4c61ccc81","data/macros/fallback_supplement_co_v1.rs.data":"3353645f99e745d9946dee0300692d21b1b954393cd9a5668a4ebb56abec68dc","data/macros/locid_transform_aliases_v1.rs.data":"ef8fca793245f5617a1a942e7c1568e0f3d98f913f73df54704a34d772503cb3","data/macros/locid_transform_likelysubtags_ext_v1.rs.data":"058fc56acaf4405dbd3b3e3b173d99273235a4b9c6c05fd7157f0a0bd8920b66","data/macros/locid_transform_likelysubtags_l_v1.rs.data":"d047e4a8b2a54ccd44a1edafbd4b0eacf259f2f30d9ab39ec493d38d6d9df53a","data/macros/locid_transform_likelysubtags_sr_v1.rs.data":"a8b91763d1792ef9d192d525ad6d6b6c2543685f00c36df5ff223b33e2ffcb2f","data/macros/locid_transform_script_dir_v1.rs.data":"20f9af720ca7d9e45279c9c3e89bb6ebcc0e32f186914946025923645d3951b0","src/lib.rs":"31e6e96c2396927f350dfcaef280bef1e51b9bf27fe648cead9dc94e7f7fdfb4"},"package":"545c6c3e8bf9580e2dafee8de6f9ec14826aaf359787789c7724f1f85f47d3dc"}

View File

@ -0,0 +1,33 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package]
edition = "2021"
rust-version = "1.67"
name = "icu_locid_transform_data"
version = "1.4.0"
authors = ["The ICU4X Project Developers"]
include = [
"data/**/*",
"src/**/*",
"examples/**/*",
"benches/**/*",
"tests/**/*",
"Cargo.toml",
"LICENSE",
"README.md",
]
description = "Data for the icu_locid_transform crate"
homepage = "https://icu4x.unicode.org"
readme = "README.md"
categories = ["internationalization"]
license-file = "LICENSE"
repository = "https://github.com/unicode-org/icu4x"

View File

@ -0,0 +1,44 @@
UNICODE LICENSE V3
COPYRIGHT AND PERMISSION NOTICE
Copyright © 2020-2023 Unicode, Inc.
NOTICE TO USER: Carefully read the following legal agreement. BY
DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
Permission is hereby granted, free of charge, to any person obtaining a
copy of data files and any associated documentation (the "Data Files") or
software and any associated documentation (the "Software") to deal in the
Data Files or Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, and/or sell
copies of the Data Files or Software, and to permit persons to whom the
Data Files or Software are furnished to do so, provided that either (a)
this copyright and permission notice appear with all copies of the Data
Files or Software, or (b) this copyright and permission notice appear in
associated Documentation.
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
THIRD PARTY RIGHTS.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
FILES OR SOFTWARE.
Except as contained in this notice, the name of a copyright holder shall
not be used in advertising or otherwise to promote the sale, use or other
dealings in these Data Files or Software without prior written
authorization of the copyright holder.
Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.

View File

@ -0,0 +1,11 @@
# icu_locid_transform_data [![crates.io](https://img.shields.io/crates/v/icu_locid_transform_data)](https://crates.io/crates/icu_locid_transform_data)
<!-- cargo-rdme start -->
Data for the icu_locid_transform crate
<!-- cargo-rdme end -->
## More Information
For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).

View File

@ -0,0 +1,66 @@
// @generated
/// Marks a type as a data provider. You can then use macros like
/// `impl_core_helloworld_v1` to add implementations.
///
/// ```ignore
/// struct MyProvider;
/// const _: () = {
/// include!("path/to/generated/macros.rs");
/// make_provider!(MyProvider);
/// impl_core_helloworld_v1!(MyProvider);
/// }
/// ```
#[doc(hidden)]
#[macro_export]
macro_rules! __make_provider {
($ name : ty) => {
#[clippy::msrv = "1.67"]
impl $name {
#[doc(hidden)]
#[allow(dead_code)]
pub const MUST_USE_MAKE_PROVIDER_MACRO: () = ();
}
};
}
#[doc(inline)]
pub use __make_provider as make_provider;
#[macro_use]
#[path = "macros/fallback_likelysubtags_v1.rs.data"]
mod fallback_likelysubtags_v1;
#[doc(inline)]
pub use __impl_fallback_likelysubtags_v1 as impl_fallback_likelysubtags_v1;
#[macro_use]
#[path = "macros/fallback_parents_v1.rs.data"]
mod fallback_parents_v1;
#[doc(inline)]
pub use __impl_fallback_parents_v1 as impl_fallback_parents_v1;
#[macro_use]
#[path = "macros/fallback_supplement_co_v1.rs.data"]
mod fallback_supplement_co_v1;
#[doc(inline)]
pub use __impl_fallback_supplement_co_v1 as impl_fallback_supplement_co_v1;
#[macro_use]
#[path = "macros/locid_transform_aliases_v1.rs.data"]
mod locid_transform_aliases_v1;
#[doc(inline)]
pub use __impl_locid_transform_aliases_v1 as impl_locid_transform_aliases_v1;
#[macro_use]
#[path = "macros/locid_transform_likelysubtags_ext_v1.rs.data"]
mod locid_transform_likelysubtags_ext_v1;
#[doc(inline)]
pub use __impl_locid_transform_likelysubtags_ext_v1 as impl_locid_transform_likelysubtags_ext_v1;
#[macro_use]
#[path = "macros/locid_transform_likelysubtags_l_v1.rs.data"]
mod locid_transform_likelysubtags_l_v1;
#[doc(inline)]
pub use __impl_locid_transform_likelysubtags_l_v1 as impl_locid_transform_likelysubtags_l_v1;
#[macro_use]
#[path = "macros/locid_transform_likelysubtags_sr_v1.rs.data"]
mod locid_transform_likelysubtags_sr_v1;
#[doc(inline)]
pub use __impl_locid_transform_likelysubtags_sr_v1 as impl_locid_transform_likelysubtags_sr_v1;
#[macro_use]
#[path = "macros/locid_transform_script_dir_v1.rs.data"]
mod locid_transform_script_dir_v1;
#[doc(inline)]
pub use __impl_locid_transform_script_dir_v1 as impl_locid_transform_script_dir_v1;

View File

@ -0,0 +1,44 @@
// @generated
/// Implement `DataProvider<LocaleFallbackLikelySubtagsV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_fallback_likelysubtags_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_FALLBACK_LIKELYSUBTAGS_V1: &'static <icu::locid_transform::provider::LocaleFallbackLikelySubtagsV1Marker as icu_provider::DataMarker>::Yokeable = &icu::locid_transform::provider::LocaleFallbackLikelySubtagsV1 {
l2s: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"am\0ar\0as\0be\0bg\0bgcbhobn\0brxchrcswcv\0doiel\0fa\0gu\0he\0hi\0hy\0ja\0ka\0kk\0km\0kn\0ko\0kokks\0ky\0lo\0maimk\0ml\0mn\0mnimr\0my\0ne\0nqoor\0pa\0ps\0rajru\0sa\0sahsatsd\0si\0sr\0syrta\0te\0tg\0th\0ti\0tt\0ug\0uk\0ur\0xnryuezh\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"EthiArabBengCyrlCyrlDevaDevaBengDevaCherCansCyrlDevaGrekArabGujrHebrDevaArmnJpanGeorCyrlKhmrKndaKoreDevaArabCyrlLaooDevaCyrlMlymCyrlBengDevaMymrDevaNkooOryaGuruArabDevaCyrlDevaCyrlOlckArabSinhCyrlSyrcTamlTeluCyrlThaiEthiCyrlArabCyrlArabDevaHantHans") })
},
lr2s: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap2d::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"az\0ha\0kk\0ku\0ky\0mn\0ms\0pa\0sd\0sr\0tg\0ug\0uz\0yuezh\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x03\0\0\0\x05\0\0\0\t\0\0\0\n\0\0\0\x0C\0\0\0\r\0\0\0\x0E\0\0\0\x0F\0\0\0\x10\0\0\0\x14\0\0\0\x15\0\0\0\x17\0\0\0\x19\0\0\0\x1A\0\0\0)\0\0\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"IQ\0IR\0RU\0CM\0SD\0AF\0CN\0IR\0MN\0LB\0CN\0TR\0CN\0CC\0PK\0IN\0ME\0RO\0RU\0TR\0PK\0KZ\0MN\0AF\0CN\0CN\0AU\0BN\0GB\0GF\0HK\0ID\0MO\0PA\0PF\0PH\0SR\0TH\0TW\0US\0VN\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"ArabArabCyrlArabArabArabArabArabArabArabArabLatnMongArabArabDevaLatnLatnLatnLatnArabCyrlCyrlArabCyrlHansHantHantHantHantHantHantHantHantHantHantHantHantHantHantHant") })
},
l2r: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"af\0am\0ar\0as\0astaz\0be\0bg\0bgcbhoblobn\0br\0brxbs\0ca\0cebchrcs\0cswcv\0cy\0da\0de\0doidsbel\0en\0eo\0es\0et\0eu\0fa\0ff\0fi\0filfo\0fr\0fy\0ga\0gd\0gl\0gu\0ha\0he\0hi\0hr\0hsbhu\0hy\0ia\0id\0ie\0ig\0is\0it\0ja\0jv\0ka\0keakgpkk\0km\0kn\0ko\0kokks\0ku\0kxvky\0lb\0lijlmolo\0lt\0lv\0maimi\0mk\0ml\0mn\0mnimr\0ms\0mt\0my\0ndsne\0nl\0nn\0no\0nqooc\0or\0pa\0pcmpl\0prgps\0pt\0qu\0rajrm\0ro\0ru\0sa\0sahsatsc\0sd\0si\0sk\0sl\0so\0sq\0sr\0su\0sv\0sw\0syrszlta\0te\0tg\0th\0ti\0tk\0to\0toktr\0tt\0ug\0uk\0ur\0uz\0vecvi\0vmwwo\0xh\0xnryo\0yrlyueza\0zh\0zu\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"ZA\0ET\0EG\0IN\0ES\0AZ\0BY\0BG\0IN\0IN\0BJ\0BD\0FR\0IN\0BA\0ES\0PH\0US\0CZ\0CA\0RU\0GB\0DK\0DE\0IN\0DE\0GR\0US\x00001ES\0EE\0ES\0IR\0SN\0FI\0PH\0FO\0FR\0NL\0IE\0GB\0ES\0IN\0NG\0IL\0IN\0HR\0DE\0HU\0AM\x00001ID\0EE\0NG\0IS\0IT\0JP\0ID\0GE\0CV\0BR\0KZ\0KH\0IN\0KR\0IN\0IN\0TR\0IN\0KG\0LU\0IT\0IT\0LA\0LT\0LV\0IN\0NZ\0MK\0IN\0MN\0IN\0IN\0MY\0MT\0MM\0DE\0NP\0NL\0NO\0NO\0GN\0FR\0IN\0IN\0NG\0PL\0PL\0AF\0BR\0PE\0IN\0CH\0RO\0RU\0IN\0RU\0IN\0IT\0PK\0LK\0SK\0SI\0SO\0AL\0RS\0ID\0SE\0TZ\0IQ\0PL\0IN\0IN\0TJ\0TH\0ET\0TM\0TO\x00001TR\0RU\0CN\0UA\0PK\0UZ\0IT\0VN\0MZ\0SN\0ZA\0IN\0NG\0BR\0HK\0CN\0CN\0ZA\0") })
},
ls2r: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap2d::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"az\0en\0ff\0kk\0ku\0ky\0mn\0pa\0sd\0tg\0ug\0uz\0yuezh\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x01\0\0\0\x02\0\0\0\x03\0\0\0\x04\0\0\0\x06\0\0\0\x08\0\0\0\t\0\0\0\n\0\0\0\r\0\0\0\x0E\0\0\0\x0F\0\0\0\x10\0\0\0\x11\0\0\0\x14\0\0\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"ArabShawAdlmArabArabYeziArabLatnMongArabDevaKhojSindArabCyrlArabHansBopoHanbHant") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"IR\0GB\0GN\0CN\0IQ\0GE\0CN\0TR\0CN\0PK\0IN\0IN\0IN\0PK\0KZ\0AF\0CN\0TW\0TW\0TW\0") })
},
};
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::locid_transform::provider::LocaleFallbackLikelySubtagsV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::locid_transform::provider::LocaleFallbackLikelySubtagsV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_FALLBACK_LIKELYSUBTAGS_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::locid_transform::provider::LocaleFallbackLikelySubtagsV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,32 @@
// @generated
/// Implement `DataProvider<LocaleFallbackParentsV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_fallback_parents_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_FALLBACK_PARENTS_V1: &'static <icu::locid_transform::provider::LocaleFallbackParentsV1Marker as icu_provider::DataMarker>::Yokeable = &icu::locid_transform::provider::LocaleFallbackParentsV1 {
parents: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x86\0\0\0\0\0\x06\0\x0B\0\x10\0\x15\0\x1A\0\x1F\0$\0)\0.\x003\08\0=\0B\0G\0L\0Q\0V\0[\0`\0e\0j\0o\0t\0y\0~\0\x83\0\x88\0\x8D\0\x92\0\x97\0\x9C\0\xA1\0\xA6\0\xAB\0\xB0\0\xB5\0\xBA\0\xBF\0\xC4\0\xC9\0\xCE\0\xD3\0\xD8\0\xDD\0\xE2\0\xE7\0\xEC\0\xF1\0\xF6\0\xFB\0\0\x01\x05\x01\n\x01\x0F\x01\x14\x01\x19\x01\x1E\x01#\x01(\x01-\x012\x017\x01<\x01A\x01F\x01K\x01P\x01U\x01Z\x01_\x01d\x01i\x01n\x01s\x01x\x01}\x01\x82\x01\x87\x01\x8C\x01\x91\x01\x96\x01\x9B\x01\xA0\x01\xA5\x01\xAA\x01\xAF\x01\xB4\x01\xB9\x01\xBE\x01\xC3\x01\xC8\x01\xCD\x01\xD2\x01\xD7\x01\xDC\x01\xE1\x01\xE6\x01\xEB\x01\xF0\x01\xF5\x01\xFA\x01\xFF\x01\x04\x02\t\x02\x0E\x02\x13\x02\x18\x02\x1D\x02\"\x02'\x02,\x021\x026\x02;\x02@\x02E\x02J\x02Q\x02S\x02U\x02W\x02\\\x02a\x02f\x02k\x02p\x02u\x02z\x02\x7F\x02\x84\x02\x89\x02\x8E\x02\x93\x02en-150en-AGen-AIen-ATen-AUen-BBen-BEen-BMen-BSen-BWen-BZen-CCen-CHen-CKen-CMen-CXen-CYen-DEen-DGen-DKen-DMen-ERen-FIen-FJen-FKen-FMen-GBen-GDen-GGen-GHen-GIen-GMen-GYen-HKen-IDen-IEen-ILen-IMen-INen-IOen-JEen-JMen-KEen-KIen-KNen-KYen-LCen-LRen-LSen-MGen-MOen-MSen-MTen-MUen-MVen-MWen-MYen-NAen-NFen-NGen-NLen-NRen-NUen-NZen-PGen-PKen-PNen-PWen-RWen-SBen-SCen-SDen-SEen-SGen-SHen-SIen-SLen-SSen-SXen-SZen-TCen-TKen-TOen-TTen-TVen-TZen-UGen-VCen-VGen-VUen-WSen-ZAen-ZMen-ZWes-ARes-BOes-BRes-BZes-CLes-COes-CRes-CUes-DOes-ECes-GTes-HNes-JPes-MXes-NIes-PAes-PEes-PRes-PYes-SVes-USes-UYes-VEhi-Latnhtnbnnno-NOpt-AOpt-CHpt-CVpt-FRpt-GQpt-GWpt-LUpt-MOpt-MZpt-STpt-TLzh-Hant-MO") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419en\0\0\0\0\0\0\x01IN\0fr\0\0\0\0\0\0\x01HT\0no\0\0\0\0\0\0\0\0\0\0no\0\0\0\0\0\0\0\0\0\0no\0\0\0\0\0\0\0\0\0\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0zh\0\x01Hant\x01HK\0") })
},
};
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::locid_transform::provider::LocaleFallbackParentsV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::locid_transform::provider::LocaleFallbackParentsV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_FALLBACK_PARENTS_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::locid_transform::provider::LocaleFallbackParentsV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,36 @@
// @generated
/// Implement `DataProvider<CollationFallbackSupplementV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_fallback_supplement_co_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_FALLBACK_SUPPLEMENT_CO_V1: &'static <icu::locid_transform::provider::CollationFallbackSupplementV1Marker as icu_provider::DataMarker>::Yokeable = &icu::locid_transform::provider::LocaleFallbackSupplementV1 {
parents: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x01\0\0\0\0\0yue") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"zh\0\x01Hant\0\0\0\0") })
},
unicode_extension_defaults: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap2d::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"co") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x02\0\0\0") }, unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x02\0\0\0\0\0\x02\0zhzh-Hant") }, unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x02\0\0\0\0\0\x06\0pinyinstroke") })
},
};
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::locid_transform::provider::CollationFallbackSupplementV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::locid_transform::provider::CollationFallbackSupplementV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_FALLBACK_SUPPLEMENT_CO_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::locid_transform::provider::CollationFallbackSupplementV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,41 @@
// @generated
/// Implement `DataProvider<LikelySubtagsForLanguageV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_locid_transform_likelysubtags_l_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_LOCID_TRANSFORM_LIKELYSUBTAGS_L_V1: &'static <icu::locid_transform::provider::LikelySubtagsForLanguageV1Marker as icu_provider::DataMarker>::Yokeable = &icu::locid_transform::provider::LikelySubtagsForLanguageV1 {
language_script: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"az\0Araben\0Shawff\0Adlmkk\0Arabku\0Arabku\0Yeziky\0Arabky\0Latnmn\0Mongpa\0Arabsd\0Devasd\0Khojsd\0Sindtg\0Arabug\0Cyrluz\0ArabyueHanszh\0Bopozh\0Hanbzh\0Hant") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"IR\0GB\0GN\0CN\0IQ\0GE\0CN\0TR\0CN\0PK\0IN\0IN\0IN\0PK\0KZ\0AF\0CN\0TW\0TW\0TW\0") })
},
language_region: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"az\0IQ\0az\0IR\0az\0RU\0ha\0CM\0ha\0SD\0kk\0AF\0kk\0CN\0kk\0IR\0kk\0MN\0ku\0LB\0ky\0CN\0ky\0TR\0mn\0CN\0ms\0CC\0pa\0PK\0sd\0IN\0sr\0ME\0sr\0RO\0sr\0RU\0sr\0TR\0tg\0PK\0ug\0KZ\0ug\0MN\0uz\0AF\0uz\0CN\0yueCN\0zh\0AU\0zh\0BN\0zh\0GB\0zh\0GF\0zh\0HK\0zh\0ID\0zh\0MO\0zh\0PA\0zh\0PF\0zh\0PH\0zh\0SR\0zh\0TH\0zh\0TW\0zh\0US\0zh\0VN\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"ArabArabCyrlArabArabArabArabArabArabArabArabLatnMongArabArabDevaLatnLatnLatnLatnArabCyrlCyrlArabCyrlHansHantHantHantHantHantHantHantHantHantHantHantHantHantHantHant") })
},
language: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"af\0am\0ar\0as\0astaz\0be\0bg\0bgcbhoblobn\0br\0brxbs\0ca\0cebchrcs\0cswcv\0cy\0da\0de\0doidsbel\0en\0eo\0es\0et\0eu\0fa\0ff\0fi\0filfo\0fr\0fy\0ga\0gd\0gl\0gu\0ha\0he\0hi\0hr\0hsbhu\0hy\0ia\0id\0ie\0ig\0is\0it\0ja\0jv\0ka\0keakgpkk\0km\0kn\0ko\0kokks\0ku\0kxvky\0lb\0lijlmolo\0lt\0lv\0maimi\0mk\0ml\0mn\0mnimr\0ms\0mt\0my\0ndsne\0nl\0nn\0no\0nqooc\0or\0pa\0pcmpl\0prgps\0pt\0qu\0rajrm\0ro\0ru\0sa\0sahsatsc\0sd\0si\0sk\0sl\0so\0sq\0sr\0su\0sv\0sw\0syrszlta\0te\0tg\0th\0ti\0tk\0to\0toktr\0tt\0ug\0uk\0ur\0uz\0vecvi\0vmwwo\0xh\0xnryo\0yrlyueza\0zh\0zu\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"LatnZA\0EthiET\0ArabEG\0BengIN\0LatnES\0LatnAZ\0CyrlBY\0CyrlBG\0DevaIN\0DevaIN\0LatnBJ\0BengBD\0LatnFR\0DevaIN\0LatnBA\0LatnES\0LatnPH\0CherUS\0LatnCZ\0CansCA\0CyrlRU\0LatnGB\0LatnDK\0LatnDE\0DevaIN\0LatnDE\0GrekGR\0LatnUS\0Latn001LatnES\0LatnEE\0LatnES\0ArabIR\0LatnSN\0LatnFI\0LatnPH\0LatnFO\0LatnFR\0LatnNL\0LatnIE\0LatnGB\0LatnES\0GujrIN\0LatnNG\0HebrIL\0DevaIN\0LatnHR\0LatnDE\0LatnHU\0ArmnAM\0Latn001LatnID\0LatnEE\0LatnNG\0LatnIS\0LatnIT\0JpanJP\0LatnID\0GeorGE\0LatnCV\0LatnBR\0CyrlKZ\0KhmrKH\0KndaIN\0KoreKR\0DevaIN\0ArabIN\0LatnTR\0LatnIN\0CyrlKG\0LatnLU\0LatnIT\0LatnIT\0LaooLA\0LatnLT\0LatnLV\0DevaIN\0LatnNZ\0CyrlMK\0MlymIN\0CyrlMN\0BengIN\0DevaIN\0LatnMY\0LatnMT\0MymrMM\0LatnDE\0DevaNP\0LatnNL\0LatnNO\0LatnNO\0NkooGN\0LatnFR\0OryaIN\0GuruIN\0LatnNG\0LatnPL\0LatnPL\0ArabAF\0LatnBR\0LatnPE\0DevaIN\0LatnCH\0LatnRO\0CyrlRU\0DevaIN\0CyrlRU\0OlckIN\0LatnIT\0ArabPK\0SinhLK\0LatnSK\0LatnSI\0LatnSO\0LatnAL\0CyrlRS\0LatnID\0LatnSE\0LatnTZ\0SyrcIQ\0LatnPL\0TamlIN\0TeluIN\0CyrlTJ\0ThaiTH\0EthiET\0LatnTM\0LatnTO\0Latn001LatnTR\0CyrlRU\0ArabCN\0CyrlUA\0ArabPK\0LatnUZ\0LatnIT\0LatnVN\0LatnMZ\0LatnSN\0LatnZA\0DevaIN\0LatnNG\0LatnBR\0HantHK\0LatnCN\0HansCN\0LatnZA\0") })
},
und: (icu::locid::subtags::language!("en"), icu::locid::subtags::script!("Latn"), icu::locid::subtags::region!("US")),
};
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::locid_transform::provider::LikelySubtagsForLanguageV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::locid_transform::provider::LikelySubtagsForLanguageV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_LOCID_TRANSFORM_LIKELYSUBTAGS_L_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::locid_transform::provider::LikelySubtagsForLanguageV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,40 @@
// @generated
/// Implement `DataProvider<LikelySubtagsForScriptRegionV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_locid_transform_likelysubtags_sr_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_LOCID_TRANSFORM_LIKELYSUBTAGS_SR_V1: &'static <icu::locid_transform::provider::LikelySubtagsForScriptRegionV1Marker as icu_provider::DataMarker>::Yokeable = &icu::locid_transform::provider::LikelySubtagsForScriptRegionV1 {
script_region: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"ArabAF\0ArabCC\0ArabCN\0ArabGB\0ArabID\0ArabIN\0ArabIR\0ArabMN\0ArabMU\0ArabNG\0ArabPK\0ArabTJ\0CyrlAL\0CyrlBA\0CyrlBG\0CyrlBY\0CyrlGR\0CyrlKG\0CyrlMD\0CyrlMK\0CyrlMN\0CyrlRO\0CyrlRS\0CyrlSK\0CyrlTJ\0CyrlUA\0CyrlXK\0DevaBT\0DevaMU\0DevaNP\0EthiER\0HantCA\0Latn419LatnAD\0LatnAF\0LatnAL\0LatnAM\0LatnAO\0LatnAR\0LatnAT\0LatnAW\0LatnAX\0LatnAZ\0LatnBA\0LatnBE\0LatnBF\0LatnBJ\0LatnBL\0LatnBN\0LatnBO\0LatnBR\0LatnCD\0LatnCF\0LatnCG\0LatnCH\0LatnCI\0LatnCL\0LatnCM\0LatnCN\0LatnCO\0LatnCR\0LatnCU\0LatnCV\0LatnCY\0LatnCZ\0LatnDE\0LatnDK\0LatnDO\0LatnDZ\0LatnEA\0LatnEC\0LatnEE\0LatnES\0LatnET\0LatnFI\0LatnFO\0LatnFR\0LatnGA\0LatnGE\0LatnGF\0LatnGN\0LatnGP\0LatnGQ\0LatnGT\0LatnGW\0LatnHN\0LatnHR\0LatnHU\0LatnIC\0LatnID\0LatnIR\0LatnIS\0LatnIT\0LatnKE\0LatnKM\0LatnLI\0LatnLT\0LatnLU\0LatnLV\0LatnMA\0LatnMC\0LatnMD\0LatnME\0LatnMF\0LatnMK\0LatnMO\0LatnMQ\0LatnMR\0LatnMT\0LatnMX\0LatnMY\0LatnMZ\0LatnNA\0LatnNC\0LatnNE\0LatnNI\0LatnNL\0LatnPA\0LatnPE\0LatnPF\0LatnPH\0LatnPL\0LatnPM\0LatnPR\0LatnPT\0LatnRE\0LatnRO\0LatnRS\0LatnSC\0LatnSE\0LatnSI\0LatnSK\0LatnSM\0LatnSN\0LatnSO\0LatnSR\0LatnST\0LatnSV\0LatnSY\0LatnTD\0LatnTF\0LatnTG\0LatnTL\0LatnTM\0LatnTN\0LatnTO\0LatnTR\0LatnTZ\0LatnUA\0LatnUG\0LatnUY\0LatnUZ\0LatnVA\0LatnVE\0LatnVN\0LatnWF\0LatnXK\0LatnYT\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"fa\0ms\0ug\0ur\0ms\0ur\0fa\0kk\0ur\0ha\0ur\0fa\0mk\0sr\0bg\0be\0mk\0ky\0uk\0mk\0mn\0bg\0sr\0uk\0tg\0uk\0sr\0ne\0bhone\0ti\0yuees\0ca\0tk\0sq\0ku\0pt\0es\0de\0nl\0sv\0az\0bs\0nl\0fr\0fr\0fr\0ms\0es\0pt\0sw\0fr\0fr\0de\0fr\0es\0fr\0za\0es\0es\0es\0pt\0tr\0cs\0de\0da\0es\0fr\0es\0es\0et\0es\0en\0fi\0fo\0fr\0fr\0ku\0fr\0fr\0fr\0es\0es\0pt\0es\0hr\0hu\0es\0id\0tk\0is\0it\0sw\0fr\0de\0lt\0fr\0lv\0fr\0fr\0ro\0sr\0fr\0sq\0pt\0fr\0fr\0mt\0es\0ms\0pt\0af\0fr\0ha\0es\0nl\0es\0es\0fr\0filpl\0fr\0es\0pt\0fr\0ro\0sr\0fr\0sv\0sl\0sk\0it\0fr\0so\0nl\0pt\0es\0fr\0fr\0fr\0fr\0pt\0tk\0fr\0to\0tr\0sw\0pl\0sw\0es\0uz\0it\0es\0vi\0fr\0sq\0fr\0") })
},
script: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"AdlmArabArmnBengBhksBopoBraiCherCyrlDevaDogrDuplElbaEthiGeorGranGrekGujrGuruHanbHangHaniHansHantHebrHiraHungJamoJavaJpanKanaKhmrKhojKndaKoreKthiLaooLatnMahjMlymModiMongMteiMymrNandOlckOryaOsmaShawShrdSiddSindSinhSundSyrcTakrTamlTeluTglgThaiTirhVithYezi") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"ff\0GN\0ar\0EG\0hy\0AM\0bn\0BD\0sa\0IN\0zh\0TW\0fr\0FR\0chrUS\0ru\0RU\0hi\0IN\0doiIN\0fr\0FR\0sq\0AL\0am\0ET\0ka\0GE\0sa\0IN\0el\0GR\0gu\0IN\0pa\0IN\0zh\0TW\0ko\0KR\0zh\0CN\0zh\0CN\0zh\0TW\0he\0IL\0ja\0JP\0hu\0HU\0ko\0KR\0jv\0ID\0ja\0JP\0ja\0JP\0km\0KH\0sd\0IN\0kn\0IN\0ko\0KR\0bhoIN\0lo\0LA\0en\0US\0hi\0IN\0ml\0IN\0mr\0IN\0mn\0CN\0mniIN\0my\0MM\0sa\0IN\0satIN\0or\0IN\0so\0SO\0en\0GB\0sa\0IN\0sa\0IN\0sd\0IN\0si\0LK\0su\0ID\0syrIQ\0doiIN\0ta\0IN\0te\0IN\0filPH\0th\0TH\0maiIN\0sq\0AL\0ku\0GE\0") })
},
region: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"419AC\0AD\0AE\0AF\0AG\0AI\0AL\0AM\0AO\0AQ\0AR\0AT\0AU\0AW\0AX\0AZ\0BA\0BB\0BD\0BE\0BF\0BG\0BH\0BJ\0BL\0BM\0BN\0BO\0BR\0BS\0BV\0BW\0BY\0BZ\0CA\0CC\0CD\0CF\0CG\0CH\0CI\0CK\0CL\0CM\0CN\0CO\0CP\0CQ\0CR\0CU\0CV\0CX\0CY\0CZ\0DE\0DG\0DK\0DM\0DO\0DZ\0EA\0EC\0EE\0EG\0EH\0ER\0ES\0ET\0FI\0FJ\0FK\0FM\0FO\0FR\0GA\0GB\0GD\0GE\0GF\0GG\0GI\0GM\0GN\0GP\0GQ\0GR\0GS\0GT\0GU\0GW\0GY\0HK\0HM\0HN\0HR\0HU\0IC\0ID\0IE\0IL\0IM\0IN\0IO\0IQ\0IR\0IS\0IT\0JE\0JM\0JO\0JP\0KE\0KG\0KH\0KI\0KM\0KN\0KP\0KR\0KW\0KY\0KZ\0LA\0LB\0LC\0LI\0LK\0LR\0LT\0LU\0LV\0LY\0MA\0MC\0MD\0ME\0MF\0MH\0MK\0MM\0MN\0MO\0MP\0MQ\0MR\0MS\0MT\0MW\0MX\0MY\0MZ\0NA\0NC\0NE\0NF\0NG\0NI\0NL\0NP\0NR\0NU\0NZ\0OM\0PA\0PE\0PF\0PH\0PK\0PL\0PM\0PN\0PR\0PS\0PT\0QA\0RE\0RO\0RS\0RU\0SA\0SB\0SC\0SD\0SE\0SG\0SH\0SI\0SK\0SM\0SN\0SO\0SR\0SS\0ST\0SV\0SX\0SY\0SZ\0TA\0TC\0TD\0TF\0TG\0TH\0TJ\0TL\0TM\0TN\0TO\0TR\0TT\0TW\0TZ\0UA\0UG\0UM\0US\0UY\0UZ\0VA\0VC\0VE\0VG\0VI\0VN\0WF\0XK\0YE\0YT\0ZA\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"es\0Latnen\0Latnca\0Latnar\0Arabfa\0Araben\0Latnen\0Latnsq\0Latnhy\0Armnpt\0Latnen\0Latnes\0Latnde\0Latnen\0Latnnl\0Latnsv\0Latnaz\0Latnbs\0Latnen\0Latnbn\0Bengnl\0Latnfr\0Latnbg\0Cyrlar\0Arabfr\0Latnfr\0Latnen\0Latnms\0Latnes\0Latnpt\0Latnen\0Latnen\0Latnen\0Latnbe\0Cyrlen\0Latnen\0Latnms\0Arabsw\0Latnfr\0Latnfr\0Latnde\0Latnfr\0Latnen\0Latnes\0Latnfr\0Latnzh\0Hanses\0Latnen\0Latnen\0Latnes\0Latnes\0Latnpt\0Latnen\0Latnel\0Grekcs\0Latnde\0Latnen\0Latnda\0Latnen\0Latnes\0Latnar\0Arabes\0Latnes\0Latnet\0Latnar\0Arabar\0Arabti\0Ethies\0Latnam\0Ethifi\0Latnen\0Latnen\0Latnen\0Latnfo\0Latnfr\0Latnfr\0Latnen\0Latnen\0Latnka\0Georfr\0Latnen\0Latnen\0Latnen\0Latnfr\0Latnfr\0Latnes\0Latnel\0Greken\0Latnes\0Latnen\0Latnpt\0Latnen\0Latnzh\0Hanten\0Latnes\0Latnhr\0Latnhu\0Latnes\0Latnid\0Latnen\0Latnhe\0Hebren\0Latnhi\0Devaen\0Latnar\0Arabfa\0Arabis\0Latnit\0Latnen\0Latnen\0Latnar\0Arabja\0Jpansw\0Latnky\0Cyrlkm\0Khmren\0Latnar\0Araben\0Latnko\0Koreko\0Korear\0Araben\0Latnru\0Cyrllo\0Laooar\0Araben\0Latnde\0Latnsi\0Sinhen\0Latnlt\0Latnfr\0Latnlv\0Latnar\0Arabar\0Arabfr\0Latnro\0Latnsr\0Latnfr\0Latnen\0Latnmk\0Cyrlmy\0Mymrmn\0Cyrlzh\0Hanten\0Latnfr\0Latnar\0Araben\0Latnmt\0Latnen\0Latnes\0Latnms\0Latnpt\0Latnaf\0Latnfr\0Latnha\0Latnen\0Latnen\0Latnes\0Latnnl\0Latnne\0Devaen\0Latnen\0Latnen\0Latnar\0Arabes\0Latnes\0Latnfr\0LatnfilLatnur\0Arabpl\0Latnfr\0Latnen\0Latnes\0Latnar\0Arabpt\0Latnar\0Arabfr\0Latnro\0Latnsr\0Cyrlru\0Cyrlar\0Araben\0Latnfr\0Latnar\0Arabsv\0Latnen\0Latnen\0Latnsl\0Latnsk\0Latnit\0Latnfr\0Latnso\0Latnnl\0Latnar\0Arabpt\0Latnes\0Latnen\0Latnar\0Araben\0Latnen\0Latnen\0Latnfr\0Latnfr\0Latnfr\0Latnth\0Thaitg\0Cyrlpt\0Latntk\0Latnar\0Arabto\0Latntr\0Latnen\0Latnzh\0Hantsw\0Latnuk\0Cyrlsw\0Latnen\0Latnen\0Latnes\0Latnuz\0Latnit\0Latnen\0Latnes\0Latnen\0Latnen\0Latnvi\0Latnfr\0Latnsq\0Latnar\0Arabfr\0Latnen\0Latn") })
},
};
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::locid_transform::provider::LikelySubtagsForScriptRegionV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::locid_transform::provider::LikelySubtagsForScriptRegionV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_LOCID_TRANSFORM_LIKELYSUBTAGS_SR_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::locid_transform::provider::LikelySubtagsForScriptRegionV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,27 @@
// @generated
/// Implement `DataProvider<ScriptDirectionV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_locid_transform_script_dir_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_LOCID_TRANSFORM_SCRIPT_DIR_V1: &'static <icu::locid_transform::provider::ScriptDirectionV1Marker as icu_provider::DataMarker>::Yokeable = &icu::locid_transform::provider::ScriptDirectionV1 { rtl: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"AdlmArabArmiAvstChrsCprtElymHatrHebrHungKharLydiMandManiMendMercMeroNarbNbatNkooOrkhOugrPalmPhliPhlpPhnxPrtiRohgSamrSarbSogdSogoSyrcThaaYezi") }, ltr: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"AghbAhomArmnBaliBamuBassBatkBengBhksBopoBrahBugiBuhdCakmCansCariChamCherCoptCpmnCyrlDevaDiakDogrDsrtDuplEgypElbaEthiGeorGlagGongGonmGothGranGrekGujrGuruHanbHangHaniHanoHansHantHiraHluwHmngHmnpItalJamoJavaJpanKaliKanaKawiKhmrKhojKitsKndaKoreKthiLanaLaooLatnLepcLimbLinaLinbLisuLyciMahjMakaMarcMedfMlymModiMongMrooMteiMultMymrNagmNandNewaNshuOgamOlckOryaOsgeOsmaPaucPermPhagPlrdRjngRunrSaurSgnwShawShrdSiddSindSinhSoraSoyoSundSyloTagbTakrTaleTaluTamlTangTavtTeluTfngTglgThaiTibtTirhTnsaTotoUgarVaiiVithWaraWchoXpeoXsuxYiiiZanb") } };
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::locid_transform::provider::ScriptDirectionV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::locid_transform::provider::ScriptDirectionV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_LOCID_TRANSFORM_SCRIPT_DIR_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::locid_transform::provider::ScriptDirectionV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,12 @@
// 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 ).
//! Data for the icu_locid_transform crate
#![no_std]
#[cfg(icu4x_custom_data)]
include!(concat!(core::env!("ICU4X_DATA_DIR"), "/macros.rs"));
#[cfg(not(icu4x_custom_data))]
include!("../data/macros.rs");

View File

@ -0,0 +1 @@
{"files":{"Cargo.toml":"00063823e6e1de426d4f26a29f85b8f78c431d74f5249d41880bdc6485593609","LICENSE":"853f87c96f3d249f200fec6db1114427bc8bdf4afddc93c576956d78152ce978","README.md":"db479074fe6775051e712cae63e65cf3823d8354b4663303cbcdd37cd7cd1ccb","src/bidi.rs":"21df40c493ae89212c2083d73924e4436752d2531d73da7aac01b2cda4d3852e","src/bidi_data.rs":"af55af882f9fb0de61c2152e38caaadbac3b1158d36997926afc38de3dc75a69","src/error.rs":"1181d6abdfbb71135c4b8ad3e525cc99a2c727575c8485b3dbc3d5a4b1fd5d2b","src/exemplar_chars.rs":"8050dae270922545d30b7e26fea70ca3dd7a65bb551a29628a6b75993a1e86f9","src/lib.rs":"d51f082356c53e492cde30de062aadc91b189578716ffa84a161bddf8caa0f66","src/maps.rs":"45069332f2f9276ee7dd510b5040c87b6a56100b112e41f345c5169f1afb4a7f","src/props.rs":"63104a86a09ae02803fdc0dce1c5b96cf9b590d8312edeba96ef1f8c14d516ea","src/provider.rs":"997ca77b981cf58dd6059b9da8d93ca49c143a5be232590fc51e23f8b93a7e93","src/provider/bidi_data.rs":"d86235428e6ea55c4154e0c382a7fd83ceda8f779ea3917e4b3c5d027758e20f","src/provider/names.rs":"587f4beb1fae8c209988dfae9ee246df47064621c5741793f7dfd6de4a8c97b2","src/runtime.rs":"951d85abf68695804897a3cf24bb11b87660e08f1ca36a8adf8c3bcdc565ce5b","src/script.rs":"d0cf9ac4d752352b38e0ddf98319ed55f07785c99c2ae37dff033ac810f3eb72","src/sets.rs":"f88322c8319bcdafa7752df9cb2b9eedf6ed4ab190bd3ad98abd0579bd416de0","src/trievalue.rs":"995fe8987d7f9d95bbf3ccdac2f236c47b7428e7175d36641f2bb2d6f4e4e03c"},"package":"976e296217453af983efa25f287a4c1da04b9a63bf1ed63719455068e4453eb5"}

View File

@ -0,0 +1,121 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package]
edition = "2021"
rust-version = "1.67"
name = "icu_properties"
version = "1.4.0"
authors = ["The ICU4X Project Developers"]
include = [
"data/**/*",
"src/**/*",
"examples/**/*",
"benches/**/*",
"tests/**/*",
"Cargo.toml",
"LICENSE",
"README.md",
]
description = "Definitions for Unicode properties"
homepage = "https://icu4x.unicode.org"
readme = "README.md"
categories = ["internationalization"]
license-file = "LICENSE"
repository = "https://github.com/unicode-org/icu4x"
[package.metadata.docs.rs]
all-features = true
[dependencies.databake]
version = "0.1.7"
features = ["derive"]
optional = true
default-features = false
[dependencies.displaydoc]
version = "0.2.3"
default-features = false
[dependencies.icu_collections]
version = "~1.4.0"
default-features = false
[dependencies.icu_locid_transform]
version = "~1.4.0"
features = ["compiled_data"]
optional = true
default-features = false
[dependencies.icu_properties_data]
version = "~1.4.0"
optional = true
default-features = false
[dependencies.icu_provider]
version = "~1.4.0"
features = ["macros"]
default-features = false
[dependencies.serde]
version = "1.0"
features = [
"derive",
"alloc",
]
optional = true
default-features = false
[dependencies.tinystr]
version = "0.7.4"
features = [
"alloc",
"zerovec",
]
default-features = false
[dependencies.unicode-bidi]
version = "0.3.13"
optional = true
default-features = false
[dependencies.zerovec]
version = "0.10.1"
features = ["derive"]
default-features = false
[dev-dependencies]
[features]
bidi = ["dep:unicode-bidi"]
compiled_data = [
"dep:icu_properties_data",
"dep:icu_locid_transform",
]
datagen = [
"serde",
"dep:databake",
"zerovec/databake",
"icu_collections/databake",
"tinystr/databake",
]
default = ["compiled_data"]
serde = [
"dep:serde",
"tinystr/serde",
"zerovec/serde",
"icu_collections/serde",
"icu_provider/serde",
]
std = [
"icu_collections/std",
"icu_provider/std",
]

44
third_party/rust/icu_properties/LICENSE vendored Normal file
View File

@ -0,0 +1,44 @@
UNICODE LICENSE V3
COPYRIGHT AND PERMISSION NOTICE
Copyright © 2020-2023 Unicode, Inc.
NOTICE TO USER: Carefully read the following legal agreement. BY
DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
Permission is hereby granted, free of charge, to any person obtaining a
copy of data files and any associated documentation (the "Data Files") or
software and any associated documentation (the "Software") to deal in the
Data Files or Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, and/or sell
copies of the Data Files or Software, and to permit persons to whom the
Data Files or Software are furnished to do so, provided that either (a)
this copyright and permission notice appear with all copies of the Data
Files or Software, or (b) this copyright and permission notice appear in
associated Documentation.
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
THIRD PARTY RIGHTS.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
FILES OR SOFTWARE.
Except as contained in this notice, the name of a copyright holder shall
not be used in advertising or otherwise to promote the sale, use or other
dealings in these Data Files or Software without prior written
authorization of the copyright holder.
Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.

View File

@ -0,0 +1,58 @@
# icu_properties [![crates.io](https://img.shields.io/crates/v/icu_properties)](https://crates.io/crates/icu_properties)
<!-- cargo-rdme start -->
Definitions of [Unicode Properties] and APIs for
retrieving property data in an appropriate data structure.
This module is published as its own crate ([`icu_properties`](https://docs.rs/icu_properties/latest/icu_properties/))
and as part of the [`icu`](https://docs.rs/icu/latest/icu/) crate. See the latter for more details on the ICU4X project.
APIs that return a [`CodePointSetData`] exist for binary properties and certain enumerated
properties. See the [`sets`] module for more details.
APIs that return a [`CodePointMapData`] exist for certain enumerated properties. See the
[`maps`] module for more details.
## Examples
### Property data as `CodePointSetData`s
```rust
use icu::properties::{maps, sets, GeneralCategory};
// A binary property as a `CodePointSetData`
assert!(sets::emoji().contains('🎃')); // U+1F383 JACK-O-LANTERN
assert!(!sets::emoji().contains('木')); // U+6728
// An individual enumerated property value as a `CodePointSetData`
let line_sep_data = maps::general_category()
.get_set_for_value(GeneralCategory::LineSeparator);
let line_sep = line_sep_data.as_borrowed();
assert!(line_sep.contains32(0x2028));
assert!(!line_sep.contains32(0x2029));
```
### Property data as `CodePointMapData`s
```rust
use icu::properties::{maps, Script};
assert_eq!(maps::script().get('🎃'), Script::Common); // U+1F383 JACK-O-LANTERN
assert_eq!(maps::script().get('木'), Script::Han); // U+6728
```
[`ICU4X`]: ../icu/index.html
[Unicode Properties]: https://unicode-org.github.io/icu/userguide/strings/properties.html
[`CodePointSetData`]: https://docs.rs/icu_properties/latest/icu_properties/sets/struct.CodePointSetData.html
[`CodePointMapData`]: https://docs.rs/icu_properties/latest/icu_properties/maps/struct.CodePointMapData.html
[`sets`]: https://docs.rs/icu_properties/latest/icu_properties/sets/
<!-- cargo-rdme end -->
## More Information
For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).

View File

@ -0,0 +1,139 @@
// 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 ).
//! This module exposes tooling for running the [unicode bidi algorithm](https://unicode.org/reports/tr9/) using ICU4X data.
//!
//! `BidiClassAdapter` enables ICU4X to provide data to [`unicode-bidi`], an external crate implementing UAX #9.
//!
//! ✨ *Enabled with the `bidi` Cargo feature.*
//!
//! # Examples
//!
//!```
//! use icu_properties::bidi::BidiClassAdapter;
//! use icu_properties::maps;
//! use unicode_bidi::BidiInfo;
//! // This example text is defined using `concat!` because some browsers
//! // and text editors have trouble displaying bidi strings.
//! let text = concat!["א", // RTL#1
//! "ב", // RTL#2
//! "ג", // RTL#3
//! "a", // LTR#1
//! "b", // LTR#2
//! "c", // LTR#3
//! ]; //
//!
//!
//! let adapter = BidiClassAdapter::new(maps::bidi_class());
//! // Resolve embedding levels within the text. Pass `None` to detect the
//! // paragraph level automatically.
//!
//! let bidi_info = BidiInfo::new_with_data_source(&adapter, text, None);
//!
//! // This paragraph has embedding level 1 because its first strong character is RTL.
//! assert_eq!(bidi_info.paragraphs.len(), 1);
//! let para = &bidi_info.paragraphs[0];
//! assert_eq!(para.level.number(), 1);
//! assert!(para.level.is_rtl());
//!
//! // Re-ordering is done after wrapping each paragraph into a sequence of
//! // lines. For this example, I'll just use a single line that spans the
//! // entire paragraph.
//! let line = para.range.clone();
//!
//! let display = bidi_info.reorder_line(para, line);
//! assert_eq!(display, concat!["a", // LTR#1
//! "b", // LTR#2
//! "c", // LTR#3
//! "ג", // RTL#3
//! "ב", // RTL#2
//! "א", // RTL#1
//! ]);
//! ```
use crate::maps::CodePointMapDataBorrowed;
use crate::props::BidiClass;
use unicode_bidi::data_source::BidiDataSource;
use unicode_bidi::BidiClass as DataSourceBidiClass;
/// An adapter to convert from icu4x `BidiClass` to `unicode_bidi::BidiClass`.
///
/// ✨ *Enabled with the `bidi` Cargo feature.*
///
/// # Example
///
/// ```
/// use icu_collections::codepointtrie::CodePointTrie;
/// use icu_properties::bidi::BidiClassAdapter;
/// use icu_properties::{maps, BidiClass};
/// use unicode_bidi::BidiClass as DataSourceBidiClass;
/// use unicode_bidi::BidiDataSource;
///
/// let adapter = BidiClassAdapter::new(maps::bidi_class());
/// assert_eq!(adapter.bidi_class('a'), DataSourceBidiClass::L);
/// assert_eq!(adapter.bidi_class('ع'), DataSourceBidiClass::AL);
/// ```
#[derive(Debug)]
pub struct BidiClassAdapter<'a> {
data: CodePointMapDataBorrowed<'a, BidiClass>,
}
impl<'a> BidiClassAdapter<'a> {
/// Creates new instance of `BidiClassAdapter`.
pub fn new(data: CodePointMapDataBorrowed<'a, BidiClass>) -> BidiClassAdapter<'a> {
BidiClassAdapter { data }
}
}
impl<'a> BidiDataSource for BidiClassAdapter<'a> {
/// Returns a [`DataSourceBidiClass`] given a unicode character.
///
/// # Example
///
/// ```
/// use icu_collections::codepointtrie::CodePointTrie;
/// use icu_properties::bidi::BidiClassAdapter;
/// use icu_properties::{maps, BidiClass};
/// use unicode_bidi::BidiClass as DataSourceBidiClass;
/// use unicode_bidi::BidiDataSource;
///
/// let adapter = BidiClassAdapter::new(maps::bidi_class());
/// assert_eq!(adapter.bidi_class('a'), DataSourceBidiClass::L);
/// ```
///
/// [`CodePointTrie`]: icu_collections::codepointtrie::CodePointTrie
fn bidi_class(&self, c: char) -> DataSourceBidiClass {
let bidi_class = self.data.get(c);
match bidi_class {
BidiClass::LeftToRight => DataSourceBidiClass::L,
BidiClass::RightToLeft => DataSourceBidiClass::R,
BidiClass::EuropeanNumber => DataSourceBidiClass::EN,
BidiClass::EuropeanSeparator => DataSourceBidiClass::ES,
BidiClass::EuropeanTerminator => DataSourceBidiClass::ET,
BidiClass::ArabicNumber => DataSourceBidiClass::AN,
BidiClass::CommonSeparator => DataSourceBidiClass::CS,
BidiClass::ParagraphSeparator => DataSourceBidiClass::B,
BidiClass::SegmentSeparator => DataSourceBidiClass::S,
BidiClass::WhiteSpace => DataSourceBidiClass::WS,
BidiClass::OtherNeutral => DataSourceBidiClass::ON,
BidiClass::LeftToRightEmbedding => DataSourceBidiClass::LRE,
BidiClass::LeftToRightOverride => DataSourceBidiClass::LRO,
BidiClass::ArabicLetter => DataSourceBidiClass::AL,
BidiClass::RightToLeftEmbedding => DataSourceBidiClass::RLE,
BidiClass::RightToLeftOverride => DataSourceBidiClass::RLO,
BidiClass::PopDirectionalFormat => DataSourceBidiClass::PDF,
BidiClass::NonspacingMark => DataSourceBidiClass::NSM,
BidiClass::BoundaryNeutral => DataSourceBidiClass::BN,
BidiClass::FirstStrongIsolate => DataSourceBidiClass::FSI,
BidiClass::LeftToRightIsolate => DataSourceBidiClass::LRI,
BidiClass::RightToLeftIsolate => DataSourceBidiClass::RLI,
BidiClass::PopDirectionalIsolate => DataSourceBidiClass::PDI,
_ =>
// This must not happen.
{
DataSourceBidiClass::ON
}
}
}
}

View File

@ -0,0 +1,216 @@
// 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 ).
//! Data and APIs for supporting specific Bidi properties data in an efficient structure.
//!
//! Supported properties are:
//! - `Bidi_Paired_Bracket`
//! - `Bidi_Paired_Bracket_Type`
//! - `Bidi_Mirrored`
//! - `Bidi_Mirroring_Glyph`
use crate::provider::bidi_data::{
BidiAuxiliaryPropertiesV1, BidiAuxiliaryPropertiesV1Marker, CheckedBidiPairedBracketType,
};
use crate::PropertiesError;
use icu_provider::prelude::*;
/// A wrapper around certain Bidi properties data. Can be obtained via [`bidi_auxiliary_properties()`] and
/// related getters.
///
/// Most useful methods are on [`BidiAuxiliaryPropertiesBorrowed`] obtained by calling [`BidiAuxiliaryProperties::as_borrowed()`]
#[derive(Debug)]
pub struct BidiAuxiliaryProperties {
data: DataPayload<BidiAuxiliaryPropertiesV1Marker>,
}
impl BidiAuxiliaryProperties {
/// Construct a borrowed version of this type that can be queried.
///
/// This avoids a potential small underlying cost per API call by consolidating it
/// up front.
#[inline]
pub fn as_borrowed(&self) -> BidiAuxiliaryPropertiesBorrowed<'_> {
BidiAuxiliaryPropertiesBorrowed {
data: self.data.get(),
}
}
/// Construct a new one from loaded data
///
/// Typically it is preferable to use getters like [`bidi_auxiliary_properties()`] instead
pub fn from_data(data: DataPayload<BidiAuxiliaryPropertiesV1Marker>) -> Self {
Self { data }
}
}
/// This struct represents the properties Bidi_Mirrored and Bidi_Mirroring_Glyph.
/// If Bidi_Mirroring_Glyph is not defined for a code point, then the value in the
/// struct is `None`.
#[derive(Debug, Eq, PartialEq)]
#[non_exhaustive]
pub struct BidiMirroringProperties {
/// Represents the Bidi_Mirroring_Glyph property value
pub mirroring_glyph: Option<char>,
/// Represents the Bidi_Mirrored property value
pub mirrored: bool,
}
/// The enum represents Bidi_Paired_Bracket_Type, the char represents Bidi_Paired_Bracket.
/// Bidi_Paired_Bracket has a value of `None` when Bidi_Paired_Bracket_Type is `None`.
#[derive(Debug, Eq, PartialEq)]
#[non_exhaustive]
pub enum BidiPairingProperties {
/// Represents Bidi_Paired_Bracket_Type=Open, and the Bidi_Paired_Bracket value for that code point.
Open(char),
/// Represents Bidi_Paired_Bracket_Type=Close, and the Bidi_Paired_Bracket value for that code point.
Close(char),
/// Represents Bidi_Paired_Bracket_Type=None, which cooccurs with Bidi_Paired_Bracket
/// being undefined for that code point.
None,
}
/// A borrowed wrapper around Bidi properties data, returned by
/// [`BidiAuxiliaryProperties::as_borrowed()`]. More efficient to query.
#[derive(Debug)]
pub struct BidiAuxiliaryPropertiesBorrowed<'a> {
data: &'a BidiAuxiliaryPropertiesV1<'a>,
}
impl<'a> BidiAuxiliaryPropertiesBorrowed<'a> {
// The source data coming from icuexportdata will use 0 to represent the
// property value in cases for which the Bidi_Mirroring_Glyph property value
// of a code point is undefined. Since Rust types can be more expressive, we
// should represent these cases as None.
fn convert_mirroring_glyph_data(trie_data_char: char) -> Option<char> {
if trie_data_char as u32 == 0 {
None
} else {
Some(trie_data_char)
}
}
/// Return a struct for the given code point representing Bidi mirroring-related
/// property values. See [`BidiMirroringProperties`].
///
/// # Examples
/// ```
/// use icu_properties::{bidi_data, bidi_data::BidiMirroringProperties};
///
/// let bidi_data = bidi_data::bidi_auxiliary_properties();
///
/// let open_paren = bidi_data.get32_mirroring_props('(' as u32);
/// assert_eq!(open_paren.mirroring_glyph, Some(')'));
/// assert_eq!(open_paren.mirrored, true);
/// let close_paren = bidi_data.get32_mirroring_props(')' as u32);
/// assert_eq!(close_paren.mirroring_glyph, Some('('));
/// assert_eq!(close_paren.mirrored, true);
/// let open_angle_bracket = bidi_data.get32_mirroring_props('<' as u32);
/// assert_eq!(open_angle_bracket.mirroring_glyph, Some('>'));
/// assert_eq!(open_angle_bracket.mirrored, true);
/// let close_angle_bracket = bidi_data.get32_mirroring_props('>' as u32);
/// assert_eq!(close_angle_bracket.mirroring_glyph, Some('<'));
/// assert_eq!(close_angle_bracket.mirrored, true);
/// let three = bidi_data.get32_mirroring_props('3' as u32);
/// assert_eq!(three.mirroring_glyph, None);
/// assert_eq!(three.mirrored, false);
/// ```
pub fn get32_mirroring_props(&self, code_point: u32) -> BidiMirroringProperties {
let bidi_aux_props = self.data.trie.get32(code_point);
let mirroring_glyph_opt =
Self::convert_mirroring_glyph_data(bidi_aux_props.mirroring_glyph);
BidiMirroringProperties {
mirroring_glyph: mirroring_glyph_opt,
mirrored: bidi_aux_props.mirrored,
}
}
/// Return a struct for the given code point representing Bidi bracket
/// pairing-related property values. See [`BidiPairingProperties`]
///
/// # Examples
/// ```
/// use icu_properties::{bidi_data, bidi_data::BidiPairingProperties};
///
/// let bidi_data = bidi_data::bidi_auxiliary_properties();
///
/// let open_paren = bidi_data.get32_pairing_props('(' as u32);
/// assert_eq!(open_paren, BidiPairingProperties::Open(')'));
/// let close_paren = bidi_data.get32_pairing_props(')' as u32);
/// assert_eq!(close_paren, BidiPairingProperties::Close('('));
/// let open_angle_bracket = bidi_data.get32_pairing_props('<' as u32);
/// assert_eq!(open_angle_bracket, BidiPairingProperties::None);
/// let close_angle_bracket = bidi_data.get32_pairing_props('>' as u32);
/// assert_eq!(close_angle_bracket, BidiPairingProperties::None);
/// let three = bidi_data.get32_pairing_props('3' as u32);
/// assert_eq!(three, BidiPairingProperties::None);
/// ```
pub fn get32_pairing_props(&self, code_point: u32) -> BidiPairingProperties {
let bidi_aux_props = self.data.trie.get32(code_point);
let mirroring_glyph = bidi_aux_props.mirroring_glyph;
let paired_bracket_type = bidi_aux_props.paired_bracket_type;
match paired_bracket_type {
CheckedBidiPairedBracketType::Open => BidiPairingProperties::Open(mirroring_glyph),
CheckedBidiPairedBracketType::Close => BidiPairingProperties::Close(mirroring_glyph),
_ => BidiPairingProperties::None,
}
}
}
impl BidiAuxiliaryPropertiesBorrowed<'static> {
/// Cheaply converts a `BidiAuxiliaryPropertiesBorrowed<'static>` into a `BidiAuxiliaryProperties`.
pub const fn static_to_owned(self) -> BidiAuxiliaryProperties {
BidiAuxiliaryProperties {
data: DataPayload::from_static_ref(self.data),
}
}
}
/// Creates a [`BidiAuxiliaryPropertiesV1`] struct that represents the data for certain
/// Bidi properties.
///
/// ✨ *Enabled with the `compiled_data` Cargo feature.*
///
/// [📚 Help choosing a constructor](icu_provider::constructors)
///
/// # Examples
/// ```
/// use icu_properties::{bidi_data, bidi_data::BidiMirroringProperties};
///
/// let bidi_data = bidi_data::bidi_auxiliary_properties();
///
/// let open_paren = bidi_data.get32_mirroring_props('(' as u32);
/// assert_eq!(open_paren.mirroring_glyph, Some(')'));
/// assert_eq!(open_paren.mirrored, true);
/// ```
#[cfg(feature = "compiled_data")]
pub const fn bidi_auxiliary_properties() -> BidiAuxiliaryPropertiesBorrowed<'static> {
BidiAuxiliaryPropertiesBorrowed {
data: crate::provider::Baked::SINGLETON_PROPS_BIDIAUXILIARYPROPS_V1,
}
}
icu_provider::gen_any_buffer_data_constructors!(
locale: skip,
options: skip,
result: Result<BidiAuxiliaryProperties, PropertiesError>,
#[cfg(skip)]
functions: [
bidi_auxiliary_properties,
load_bidi_auxiliary_properties_with_any_provider,
load_bidi_auxiliary_properties_with_buffer_provider,
load_bidi_auxiliary_properties_unstable,
]
);
#[doc = icu_provider::gen_any_buffer_unstable_docs!(UNSTABLE, bidi_auxiliary_properties)]
pub fn load_bidi_auxiliary_properties_unstable(
provider: &(impl DataProvider<BidiAuxiliaryPropertiesV1Marker> + ?Sized),
) -> Result<BidiAuxiliaryProperties, PropertiesError> {
Ok(provider
.load(Default::default())
.and_then(DataResponse::take_payload)
.map(BidiAuxiliaryProperties::from_data)?)
}

View File

@ -0,0 +1,40 @@
// 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 displaydoc::Display;
use icu_provider::DataError;
#[cfg(doc)]
use crate::GeneralCategoryGroup;
#[cfg(doc)]
use crate::Script;
#[cfg(feature = "std")]
impl std::error::Error for PropertiesError {}
/// A list of error outcomes for various operations in this module.
///
/// Re-exported as [`Error`](crate::Error).
#[derive(Display, Debug, Copy, Clone)]
#[non_exhaustive]
pub enum PropertiesError {
/// An error occurred while loading data
#[displaydoc("{0}")]
PropDataLoad(DataError),
/// An unknown value was used for the [`Script`](crate::Script) property
#[displaydoc("Unknown script id: {0}")]
UnknownScriptId(u16),
/// An unknown value was used for the [`GeneralCategoryGroup`](crate::GeneralCategoryGroup) property
#[displaydoc("Unknown general category group: {0}")]
UnknownGeneralCategoryGroup(u32),
/// An unknown or unexpected property name was used for an API dealing with properties specified as strings at runtime
#[displaydoc("Unexpected or unknown property name")]
UnexpectedPropertyName,
}
impl From<DataError> for PropertiesError {
fn from(e: DataError) -> Self {
PropertiesError::PropDataLoad(e)
}
}

View File

@ -0,0 +1,247 @@
// 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 ).
//! This module provides APIs for getting exemplar characters for a locale.
//!
//! Exemplars are characters used by a language, separated into different sets.
//! The sets are: main, auxiliary, punctuation, numbers, and index.
//!
//! The sets define, according to typical usage in the language,
//! which characters occur in which contexts with which frequency.
//! For more information, see the documentation in the
//! [Exemplars section in Unicode Technical Standard #35](https://unicode.org/reports/tr35/tr35-general.html#Exemplars)
//! of the LDML specification.
//!
//! # Examples
//!
//! ```
//! use icu::locid::locale;
//! use icu::properties::exemplar_chars;
//!
//! let locale = locale!("en-001").into();
//! let data = exemplar_chars::exemplars_main(&locale)
//! .expect("locale should be present");
//! let exemplars_main = data.as_borrowed();
//!
//! assert!(exemplars_main.contains_char('a'));
//! assert!(exemplars_main.contains_char('z'));
//! assert!(exemplars_main.contains("a"));
//! assert!(!exemplars_main.contains("ä"));
//! assert!(!exemplars_main.contains("ng"));
//! ```
use crate::provider::*;
use crate::sets::UnicodeSetData;
use crate::PropertiesError;
use icu_provider::prelude::*;
macro_rules! make_exemplar_chars_unicode_set_property {
(
// currently unused
marker: $marker_name:ident;
keyed_data_marker: $keyed_data_marker:ty;
func:
$vis:vis fn $funcname:ident();
$(#[$attr:meta])*
$vis2:vis fn $constname:ident();
) => {
#[doc = concat!("A version of [`", stringify!($constname), "()`] that uses custom data provided by a [`DataProvider`].")]
///
/// [📚 Help choosing a constructor](icu_provider::constructors)
$vis fn $funcname(
provider: &(impl DataProvider<$keyed_data_marker> + ?Sized),
locale: &DataLocale,
) -> Result<UnicodeSetData, PropertiesError> {
Ok(provider.load(
DataRequest {
locale,
metadata: Default::default(),
})
.and_then(DataResponse::take_payload)
.map(UnicodeSetData::from_data)?
)
}
$(#[$attr])*
#[cfg(feature = "compiled_data")]
$vis2 fn $constname(
locale: &DataLocale,
) -> Result<UnicodeSetData, PropertiesError> {
Ok(UnicodeSetData::from_data(
DataProvider::<$keyed_data_marker>::load(
&crate::provider::Baked,
DataRequest {
locale,
metadata: Default::default(),
})
.and_then(DataResponse::take_payload)?
))
}
}
}
make_exemplar_chars_unicode_set_property!(
marker: ExemplarCharactersMain;
keyed_data_marker: ExemplarCharactersMainV1Marker;
func:
pub fn load_exemplars_main();
/// Get the "main" set of exemplar characters.
///
/// ✨ *Enabled with the `compiled_data` Cargo feature.*
///
/// [📚 Help choosing a constructor](icu_provider::constructors)
///
/// # Examples
///
/// ```
/// use icu::locid::locale;
/// use icu::properties::exemplar_chars;
///
/// let data = exemplar_chars::exemplars_main(&locale!("en").into())
/// .expect("locale should be present");
/// let exemplars_main = data.as_borrowed();
///
/// assert!(exemplars_main.contains_char('a'));
/// assert!(exemplars_main.contains_char('z'));
/// assert!(exemplars_main.contains("a"));
/// assert!(!exemplars_main.contains("ä"));
/// assert!(!exemplars_main.contains("ng"));
/// assert!(!exemplars_main.contains("A"));
/// ```
pub fn exemplars_main();
);
make_exemplar_chars_unicode_set_property!(
marker: ExemplarCharactersAuxiliary;
keyed_data_marker: ExemplarCharactersAuxiliaryV1Marker;
func:
pub fn load_exemplars_auxiliary();
/// Get the "auxiliary" set of exemplar characters.
///
/// ✨ *Enabled with the `compiled_data` Cargo feature.*
///
/// [📚 Help choosing a constructor](icu_provider::constructors)
///
/// # Examples
///
/// ```
/// use icu::locid::locale;
/// use icu::properties::exemplar_chars;
///
/// let data =
/// exemplar_chars::exemplars_auxiliary(&locale!("en").into())
/// .expect("locale should be present");
/// let exemplars_auxiliary = data.as_borrowed();
///
/// assert!(!exemplars_auxiliary.contains_char('a'));
/// assert!(!exemplars_auxiliary.contains_char('z'));
/// assert!(!exemplars_auxiliary.contains("a"));
/// assert!(exemplars_auxiliary.contains("ä"));
/// assert!(!exemplars_auxiliary.contains("ng"));
/// assert!(!exemplars_auxiliary.contains("A"));
/// ```
pub fn exemplars_auxiliary();
);
make_exemplar_chars_unicode_set_property!(
marker: ExemplarCharactersPunctuation;
keyed_data_marker: ExemplarCharactersPunctuationV1Marker;
func:
pub fn load_exemplars_punctuation();
/// Get the "punctuation" set of exemplar characters.
///
/// ✨ *Enabled with the `compiled_data` Cargo feature.*
///
/// [📚 Help choosing a constructor](icu_provider::constructors)
///
/// # Examples
///
/// ```
/// use icu::locid::locale;
/// use icu::properties::exemplar_chars;
///
/// let data =
/// exemplar_chars::exemplars_punctuation(&locale!("en").into())
/// .expect("locale should be present");
/// let exemplars_punctuation = data.as_borrowed();
///
/// assert!(!exemplars_punctuation.contains_char('0'));
/// assert!(!exemplars_punctuation.contains_char('9'));
/// assert!(!exemplars_punctuation.contains_char('%'));
/// assert!(exemplars_punctuation.contains_char(','));
/// assert!(exemplars_punctuation.contains_char('.'));
/// assert!(exemplars_punctuation.contains_char('!'));
/// assert!(exemplars_punctuation.contains_char('?'));
/// ```
pub fn exemplars_punctuation();
);
make_exemplar_chars_unicode_set_property!(
marker: ExemplarCharactersNumbers;
keyed_data_marker: ExemplarCharactersNumbersV1Marker;
func:
pub fn load_exemplars_numbers();
/// Get the "numbers" set of exemplar characters.
///
/// ✨ *Enabled with the `compiled_data` Cargo feature.*
///
/// [📚 Help choosing a constructor](icu_provider::constructors)
///
/// # Examples
///
/// ```
/// use icu::locid::locale;
/// use icu::properties::exemplar_chars;
///
/// let data =
/// exemplar_chars::exemplars_numbers(&locale!("en").into())
/// .expect("locale should be present");
/// let exemplars_numbers = data.as_borrowed();
///
/// assert!(exemplars_numbers.contains_char('0'));
/// assert!(exemplars_numbers.contains_char('9'));
/// assert!(exemplars_numbers.contains_char('%'));
/// assert!(exemplars_numbers.contains_char(','));
/// assert!(exemplars_numbers.contains_char('.'));
/// assert!(!exemplars_numbers.contains_char('!'));
/// assert!(!exemplars_numbers.contains_char('?'));
/// ```
pub fn exemplars_numbers();
);
make_exemplar_chars_unicode_set_property!(
marker: ExemplarCharactersIndex;
keyed_data_marker: ExemplarCharactersIndexV1Marker;
func:
pub fn load_exemplars_index();
/// Get the "index" set of exemplar characters.
///
/// ✨ *Enabled with the `compiled_data` Cargo feature.*
///
/// [📚 Help choosing a constructor](icu_provider::constructors)
///
/// # Examples
///
/// ```
/// use icu::locid::locale;
/// use icu::properties::exemplar_chars;
///
/// let data =
/// exemplar_chars::exemplars_index(&locale!("en").into())
/// .expect("locale should be present");
/// let exemplars_index = data.as_borrowed();
///
/// assert!(!exemplars_index.contains_char('a'));
/// assert!(!exemplars_index.contains_char('z'));
/// assert!(!exemplars_index.contains("a"));
/// assert!(!exemplars_index.contains("ä"));
/// assert!(!exemplars_index.contains("ng"));
/// assert!(exemplars_index.contains("A"));
/// ```
pub fn exemplars_index();
);

View File

@ -0,0 +1,115 @@
// 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 ).
//! Definitions of [Unicode Properties] and APIs for
//! retrieving property data in an appropriate data structure.
//!
//! This module is published as its own crate ([`icu_properties`](https://docs.rs/icu_properties/latest/icu_properties/))
//! and as part of the [`icu`](https://docs.rs/icu/latest/icu/) crate. See the latter for more details on the ICU4X project.
//!
//! APIs that return a [`CodePointSetData`] exist for binary properties and certain enumerated
//! properties. See the [`sets`] module for more details.
//!
//! APIs that return a [`CodePointMapData`] exist for certain enumerated properties. See the
//! [`maps`] module for more details.
//!
//! # Examples
//!
//! ## Property data as `CodePointSetData`s
//!
//! ```
//! use icu::properties::{maps, sets, GeneralCategory};
//!
//! // A binary property as a `CodePointSetData`
//!
//! assert!(sets::emoji().contains('🎃')); // U+1F383 JACK-O-LANTERN
//! assert!(!sets::emoji().contains('木')); // U+6728
//!
//! // An individual enumerated property value as a `CodePointSetData`
//!
//! let line_sep_data = maps::general_category()
//! .get_set_for_value(GeneralCategory::LineSeparator);
//! let line_sep = line_sep_data.as_borrowed();
//!
//! assert!(line_sep.contains32(0x2028));
//! assert!(!line_sep.contains32(0x2029));
//! ```
//!
//! ## Property data as `CodePointMapData`s
//!
//! ```
//! use icu::properties::{maps, Script};
//!
//! assert_eq!(maps::script().get('🎃'), Script::Common); // U+1F383 JACK-O-LANTERN
//! assert_eq!(maps::script().get('木'), Script::Han); // U+6728
//! ```
//!
//! [`ICU4X`]: ../icu/index.html
//! [Unicode Properties]: https://unicode-org.github.io/icu/userguide/strings/properties.html
//! [`CodePointSetData`]: crate::sets::CodePointSetData
//! [`CodePointMapData`]: crate::maps::CodePointMapData
//! [`sets`]: crate::sets
// https://github.com/unicode-org/icu4x/blob/main/docs/process/boilerplate.md#library-annotations
#![cfg_attr(not(any(test, feature = "std")), no_std)]
#![cfg_attr(
not(test),
deny(
clippy::indexing_slicing,
clippy::unwrap_used,
clippy::expect_used,
clippy::panic,
clippy::exhaustive_structs,
clippy::exhaustive_enums,
missing_debug_implementations,
)
)]
#![warn(missing_docs)]
extern crate alloc;
#[cfg(feature = "bidi")]
pub mod bidi;
mod error;
pub mod maps;
// NOTE: The Pernosco debugger has special knowledge
// of the `CanonicalCombiningClass` struct inside the `props`
// module. Please do not change the crate-module-qualified
// name of that struct without coordination.
mod props;
pub mod bidi_data;
pub mod exemplar_chars;
pub mod provider;
pub(crate) mod runtime;
#[allow(clippy::exhaustive_structs)] // TODO
pub mod script;
pub mod sets;
mod trievalue;
pub use props::{
BidiClass, CanonicalCombiningClass, EastAsianWidth, GeneralCategory, GeneralCategoryGroup,
GraphemeClusterBreak, IndicSyllabicCategory, LineBreak, Script, SentenceBreak, WordBreak,
};
/// Module for working with the names of property values
pub mod names {
pub use crate::props::{
PropertyEnumToValueNameLinearMapper, PropertyEnumToValueNameLinearMapperBorrowed,
};
pub use crate::props::{
PropertyEnumToValueNameLinearTiny4Mapper, PropertyEnumToValueNameLinearTiny4MapperBorrowed,
};
pub use crate::props::{
PropertyEnumToValueNameSparseMapper, PropertyEnumToValueNameSparseMapperBorrowed,
};
pub use crate::props::{PropertyValueNameToEnumMapper, PropertyValueNameToEnumMapperBorrowed};
}
pub use error::PropertiesError;
#[doc(no_inline)]
pub use PropertiesError as Error;

View File

@ -0,0 +1,602 @@
// 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 ).
//! The functions in this module return a [`CodePointMapData`] representing, for
//! each code point in the entire range of code points, the property values
//! for a particular Unicode property.
//!
//! The descriptions of most properties are taken from [`TR44`], the documentation for the
//! Unicode Character Database.
//!
//! [`TR44`]: https://www.unicode.org/reports/tr44
use crate::error::PropertiesError;
use crate::provider::*;
use crate::sets::CodePointSetData;
#[cfg(doc)]
use crate::*;
use core::marker::PhantomData;
use core::ops::RangeInclusive;
use icu_collections::codepointtrie::{CodePointMapRange, CodePointTrie, TrieValue};
use icu_provider::prelude::*;
use zerovec::ZeroVecError;
/// A wrapper around code point map data. It is returned by APIs that return Unicode
/// property data in a map-like form, ex: enumerated property value data keyed
/// by code point. Access its data via the borrowed version,
/// [`CodePointMapDataBorrowed`].
#[derive(Debug, Clone)]
pub struct CodePointMapData<T: TrieValue> {
data: DataPayload<ErasedMaplikeMarker<T>>,
}
/// Private marker type for CodePointMapData
/// to work for all same-value map properties at once
#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug)]
struct ErasedMaplikeMarker<T>(PhantomData<T>);
impl<T: TrieValue> DataMarker for ErasedMaplikeMarker<T> {
type Yokeable = PropertyCodePointMapV1<'static, T>;
}
impl<T: TrieValue> CodePointMapData<T> {
/// Construct a borrowed version of this type that can be queried.
///
/// This avoids a potential small underlying cost per API call (like `get()`) by consolidating it
/// up front.
///
/// This owned version if returned by functions that use a runtime data provider.
#[inline]
pub fn as_borrowed(&self) -> CodePointMapDataBorrowed<'_, T> {
CodePointMapDataBorrowed {
map: self.data.get(),
}
}
/// Convert this map to a map around another type
///
/// Typically useful for type-erasing maps into maps around integers.
///
/// # Panics
/// Will panic if T and P are different sizes
///
/// # Example
///
/// ```
/// use icu::properties::{maps, GeneralCategory};
///
/// let data = maps::general_category().static_to_owned();
///
/// let gc = data.try_into_converted::<u8>().unwrap();
/// let gc = gc.as_borrowed();
///
/// assert_eq!(gc.get('木'), GeneralCategory::OtherLetter as u8); // U+6728
/// assert_eq!(gc.get('🎃'), GeneralCategory::OtherSymbol as u8); // U+1F383 JACK-O-LANTERN
/// ```
pub fn try_into_converted<P>(self) -> Result<CodePointMapData<P>, ZeroVecError>
where
P: TrieValue,
{
self.data
.try_map_project::<ErasedMaplikeMarker<P>, _, _>(move |data, _| {
data.try_into_converted()
})
.map(CodePointMapData::from_data)
}
/// Construct a new one from loaded data
///
/// Typically it is preferable to use getters like [`load_general_category()`] instead
pub fn from_data<M>(data: DataPayload<M>) -> Self
where
M: DataMarker<Yokeable = PropertyCodePointMapV1<'static, T>>,
{
Self { data: data.cast() }
}
/// Construct a new one an owned [`CodePointTrie`]
pub fn from_code_point_trie(trie: CodePointTrie<'static, T>) -> Self {
let set = PropertyCodePointMapV1::from_code_point_trie(trie);
CodePointMapData::from_data(DataPayload::<ErasedMaplikeMarker<T>>::from_owned(set))
}
/// Convert this type to a [`CodePointTrie`] as a borrowed value.
///
/// The data backing this is extensible and supports multiple implementations.
/// Currently it is always [`CodePointTrie`]; however in the future more backends may be
/// added, and users may select which at data generation time.
///
/// This method returns an `Option` in order to return `None` when the backing data provider
/// cannot return a [`CodePointTrie`], or cannot do so within the expected constant time
/// constraint.
pub fn as_code_point_trie(&self) -> Option<&CodePointTrie<'_, T>> {
self.data.get().as_code_point_trie()
}
/// Convert this type to a [`CodePointTrie`], borrowing if possible,
/// otherwise allocating a new [`CodePointTrie`].
///
/// The data backing this is extensible and supports multiple implementations.
/// Currently it is always [`CodePointTrie`]; however in the future more backends may be
/// added, and users may select which at data generation time.
///
/// The performance of the conversion to this specific return type will vary
/// depending on the data structure that is backing `self`.
pub fn to_code_point_trie(&self) -> CodePointTrie<'_, T> {
self.data.get().to_code_point_trie()
}
}
/// A borrowed wrapper around code point set data, returned by
/// [`CodePointSetData::as_borrowed()`]. More efficient to query.
#[derive(Clone, Copy, Debug)]
pub struct CodePointMapDataBorrowed<'a, T: TrieValue> {
map: &'a PropertyCodePointMapV1<'a, T>,
}
impl<'a, T: TrieValue> CodePointMapDataBorrowed<'a, T> {
/// Get the value this map has associated with code point `ch`
///
/// # Example
///
/// ```
/// use icu::properties::{maps, GeneralCategory};
///
/// let gc = maps::general_category();
///
/// assert_eq!(gc.get('木'), GeneralCategory::OtherLetter); // U+6728
/// assert_eq!(gc.get('🎃'), GeneralCategory::OtherSymbol); // U+1F383 JACK-O-LANTERN
/// ```
pub fn get(self, ch: char) -> T {
self.map.get32(ch as u32)
}
/// Get the value this map has associated with code point `ch`
///
/// # Example
///
/// ```
/// use icu::properties::{maps, GeneralCategory};
///
/// let gc = maps::general_category();
///
/// assert_eq!(gc.get32(0x6728), GeneralCategory::OtherLetter); // U+6728 (木)
/// assert_eq!(gc.get32(0x1F383), GeneralCategory::OtherSymbol); // U+1F383 JACK-O-LANTERN
/// ```
pub fn get32(self, ch: u32) -> T {
self.map.get32(ch)
}
/// Get a [`CodePointSetData`] for all elements corresponding to a particular value
///
/// # Example
///
/// ```
/// use icu::properties::{maps, GeneralCategory};
///
/// let gc = maps::general_category();
///
/// let other_letter_set_data =
/// gc.get_set_for_value(GeneralCategory::OtherLetter);
/// let other_letter_set = other_letter_set_data.as_borrowed();
///
/// assert!(other_letter_set.contains('木')); // U+6728
/// assert!(!other_letter_set.contains('🎃')); // U+1F383 JACK-O-LANTERN
/// ```
pub fn get_set_for_value(self, value: T) -> CodePointSetData {
let set = self.map.get_set_for_value(value);
CodePointSetData::from_code_point_inversion_list(set)
}
/// Yields an [`Iterator`] returning ranges of consecutive code points that
/// share the same value in the [`CodePointMapData`].
///
/// # Examples
///
/// ```
/// use core::ops::RangeInclusive;
/// use icu::properties::maps::{self, CodePointMapData};
/// use icu::properties::GeneralCategory;
///
/// let gc = maps::general_category();
/// let mut ranges = gc.iter_ranges();
/// let next = ranges.next().unwrap();
/// assert_eq!(next.range, 0..=31);
/// assert_eq!(next.value, GeneralCategory::Control);
/// let next = ranges.next().unwrap();
/// assert_eq!(next.range, 32..=32);
/// assert_eq!(next.value, GeneralCategory::SpaceSeparator);
/// ```
pub fn iter_ranges(self) -> impl Iterator<Item = CodePointMapRange<T>> + 'a {
self.map.iter_ranges()
}
/// Yields an [`Iterator`] returning ranges of consecutive code points that
/// share the same value `v` in the [`CodePointMapData`].
///
/// # Examples
///
///
/// ```
/// use core::ops::RangeInclusive;
/// use icu::properties::maps::{self, CodePointMapData};
/// use icu::properties::GeneralCategory;
///
/// let gc = maps::general_category();
/// let mut ranges = gc.iter_ranges_for_value(GeneralCategory::UppercaseLetter);
/// assert_eq!(ranges.next().unwrap(), 'A' as u32..='Z' as u32);
/// assert_eq!(ranges.next().unwrap(), 'À' as u32..='Ö' as u32);
/// assert_eq!(ranges.next().unwrap(), 'Ø' as u32..='Þ' as u32);
/// ```
pub fn iter_ranges_for_value(self, val: T) -> impl Iterator<Item = RangeInclusive<u32>> + 'a {
self.map
.iter_ranges()
.filter(move |r| r.value == val)
.map(|r| r.range)
}
/// Yields an [`Iterator`] returning ranges of consecutive code points that
/// do *not* have the value `v` in the [`CodePointMapData`].
pub fn iter_ranges_for_value_complemented(
self,
val: T,
) -> impl Iterator<Item = RangeInclusive<u32>> + 'a {
self.map
.iter_ranges_mapped(move |value| value != val)
.filter(|v| v.value)
.map(|v| v.range)
}
/// Exposed for FFI needs, could be exposed in general in the future but we should
/// have a use case first.
///
/// FFI needs this since it operates on erased maps and can't use `iter_ranges_for_group()`
#[doc(hidden)]
pub fn iter_ranges_mapped<U: Eq + 'a>(
self,
predicate: impl FnMut(T) -> U + Copy + 'a,
) -> impl Iterator<Item = CodePointMapRange<U>> + 'a {
self.map.iter_ranges_mapped(predicate)
}
}
impl<T: TrieValue> CodePointMapDataBorrowed<'static, T> {
/// Cheaply converts a `CodePointMapDataBorrowed<'static>` into a `CodePointMapData`.
pub const fn static_to_owned(self) -> CodePointMapData<T> {
CodePointMapData {
data: DataPayload::from_static_ref(self.map),
}
}
}
impl<'a> CodePointMapDataBorrowed<'a, crate::GeneralCategory> {
/// Yields an [`Iterator`] returning ranges of consecutive code points that
/// have a `General_Category` value belonging to the specified [`GeneralCategoryGroup`]
///
/// # Examples
///
///
/// ```
/// use core::ops::RangeInclusive;
/// use icu::properties::maps::{self, CodePointMapData};
/// use icu::properties::GeneralCategoryGroup;
///
/// let gc = maps::general_category();
/// let mut ranges = gc.iter_ranges_for_group(GeneralCategoryGroup::Letter);
/// assert_eq!(ranges.next().unwrap(), 'A' as u32..='Z' as u32);
/// assert_eq!(ranges.next().unwrap(), 'a' as u32..='z' as u32);
/// assert_eq!(ranges.next().unwrap(), 'ª' as u32..='ª' as u32);
/// assert_eq!(ranges.next().unwrap(), 'µ' as u32..='µ' as u32);
/// assert_eq!(ranges.next().unwrap(), 'º' as u32..='º' as u32);
/// assert_eq!(ranges.next().unwrap(), 'À' as u32..='Ö' as u32);
/// assert_eq!(ranges.next().unwrap(), 'Ø' as u32..='ö' as u32);
/// ```
pub fn iter_ranges_for_group(
self,
group: crate::GeneralCategoryGroup,
) -> impl Iterator<Item = RangeInclusive<u32>> + 'a {
self.map
.iter_ranges_mapped(move |value| group.contains(value))
.filter(|v| v.value)
.map(|v| v.range)
}
}
macro_rules! make_map_property {
(
// currently unused
property: $prop_name:expr;
// currently unused
marker: $marker_name:ident;
value: $value_ty:path;
keyed_data_marker: $keyed_data_marker:ty;
func:
$(#[$doc:meta])*
$vis2:vis const $constname:ident => $singleton:ident;
$vis:vis fn $name:ident();
) => {
#[doc = concat!("A version of [`", stringify!($constname), "()`] that uses custom data provided by a [`DataProvider`].")]
///
/// Note that this will return an owned version of the data. Functionality is available on
/// the borrowed version, accessible through [`CodePointMapData::as_borrowed`].
///
/// [📚 Help choosing a constructor](icu_provider::constructors)
$vis fn $name(
provider: &(impl DataProvider<$keyed_data_marker> + ?Sized)
) -> Result<CodePointMapData<$value_ty>, PropertiesError> {
Ok(provider.load(Default::default()).and_then(DataResponse::take_payload).map(CodePointMapData::from_data)?)
}
$(#[$doc])*
#[cfg(feature = "compiled_data")]
pub const fn $constname() -> CodePointMapDataBorrowed<'static, $value_ty> {
CodePointMapDataBorrowed {
map: crate::provider::Baked::$singleton
}
}
};
}
make_map_property! {
property: "General_Category";
marker: GeneralCategoryProperty;
value: crate::GeneralCategory;
keyed_data_marker: GeneralCategoryV1Marker;
func:
/// Return a [`CodePointMapDataBorrowed`] for the General_Category Unicode enumerated property. See [`GeneralCategory`].
///
/// ✨ *Enabled with the `compiled_data` Cargo feature.*
///
/// [📚 Help choosing a constructor](icu_provider::constructors)
///
/// # Example
///
/// ```
/// use icu::properties::{maps, GeneralCategory};
///
/// assert_eq!(maps::general_category().get('木'), GeneralCategory::OtherLetter); // U+6728
/// assert_eq!(maps::general_category().get('🎃'), GeneralCategory::OtherSymbol); // U+1F383 JACK-O-LANTERN
/// ```
pub const general_category => SINGLETON_PROPS_GC_V1;
pub fn load_general_category();
}
make_map_property! {
property: "Bidi_Class";
marker: BidiClassProperty;
value: crate::BidiClass;
keyed_data_marker: BidiClassV1Marker;
func:
/// Return a [`CodePointMapDataBorrowed`] for the Bidi_Class Unicode enumerated property. See [`BidiClass`].
///
/// ✨ *Enabled with the `compiled_data` Cargo feature.*
///
/// [📚 Help choosing a constructor](icu_provider::constructors)
///
/// # Example
///
/// ```
/// use icu::properties::{maps, BidiClass};
///
/// assert_eq!(maps::bidi_class().get('y'), BidiClass::LeftToRight); // U+0079
/// assert_eq!(maps::bidi_class().get('ع'), BidiClass::ArabicLetter); // U+0639
/// ```
pub const bidi_class => SINGLETON_PROPS_BC_V1;
pub fn load_bidi_class();
}
make_map_property! {
property: "Script";
marker: ScriptProperty;
value: crate::Script;
keyed_data_marker: ScriptV1Marker;
func:
/// Return a [`CodePointMapDataBorrowed`] for the Script Unicode enumerated property. See [`Script`].
///
/// **Note:** Some code points are associated with multiple scripts. If you are trying to
/// determine whether a code point belongs to a certain script, you should use
/// [`load_script_with_extensions_unstable`] and [`ScriptWithExtensionsBorrowed::has_script`]
/// instead of this function.
///
/// ✨ *Enabled with the `compiled_data` Cargo feature.*
///
/// [📚 Help choosing a constructor](icu_provider::constructors)
///
/// # Example
///
/// ```
/// use icu::properties::{maps, Script};
///
/// assert_eq!(maps::script().get('木'), Script::Han); // U+6728
/// assert_eq!(maps::script().get('🎃'), Script::Common); // U+1F383 JACK-O-LANTERN
/// ```
/// [`load_script_with_extensions_unstable`]: crate::script::load_script_with_extensions_unstable
/// [`ScriptWithExtensionsBorrowed::has_script`]: crate::script::ScriptWithExtensionsBorrowed::has_script
pub const script => SINGLETON_PROPS_SC_V1;
pub fn load_script();
}
make_map_property! {
property: "East_Asian_Width";
marker: EastAsianWidthProperty;
value: crate::EastAsianWidth;
keyed_data_marker: EastAsianWidthV1Marker;
func:
/// Return a [`CodePointMapDataBorrowed`] for the East_Asian_Width Unicode enumerated
/// property. See [`EastAsianWidth`].
///
/// ✨ *Enabled with the `compiled_data` Cargo feature.*
///
/// [📚 Help choosing a constructor](icu_provider::constructors)
///
/// # Example
///
/// ```
/// use icu::properties::{maps, EastAsianWidth};
///
/// assert_eq!(maps::east_asian_width().get('ア'), EastAsianWidth::Halfwidth); // U+FF71: Halfwidth Katakana Letter A
/// assert_eq!(maps::east_asian_width().get('ア'), EastAsianWidth::Wide); //U+30A2: Katakana Letter A
/// ```
pub const east_asian_width => SINGLETON_PROPS_EA_V1;
pub fn load_east_asian_width();
}
make_map_property! {
property: "Line_Break";
marker: LineBreakProperty;
value: crate::LineBreak;
keyed_data_marker: LineBreakV1Marker;
func:
/// Return a [`CodePointMapDataBorrowed`] for the Line_Break Unicode enumerated
/// property. See [`LineBreak`].
///
/// ✨ *Enabled with the `compiled_data` Cargo feature.*
///
/// [📚 Help choosing a constructor](icu_provider::constructors)
///
/// **Note:** Use `icu::segmenter` for an all-in-one break iterator implementation.
///
/// # Example
///
/// ```
/// use icu::properties::{maps, LineBreak};
///
/// assert_eq!(maps::line_break().get(')'), LineBreak::CloseParenthesis); // U+0029: Right Parenthesis
/// assert_eq!(maps::line_break().get('ぁ'), LineBreak::ConditionalJapaneseStarter); //U+3041: Hiragana Letter Small A
/// ```
pub const line_break => SINGLETON_PROPS_LB_V1;
pub fn load_line_break();
}
make_map_property! {
property: "Grapheme_Cluster_Break";
marker: GraphemeClusterBreakProperty;
value: crate::GraphemeClusterBreak;
keyed_data_marker: GraphemeClusterBreakV1Marker;
func:
/// Return a [`CodePointMapDataBorrowed`] for the Grapheme_Cluster_Break Unicode enumerated
/// property. See [`GraphemeClusterBreak`].
///
/// ✨ *Enabled with the `compiled_data` Cargo feature.*
///
/// [📚 Help choosing a constructor](icu_provider::constructors)
///
/// **Note:** Use `icu::segmenter` for an all-in-one break iterator implementation.
///
/// # Example
///
/// ```
/// use icu::properties::{maps, GraphemeClusterBreak};
///
/// assert_eq!(maps::grapheme_cluster_break().get('🇦'), GraphemeClusterBreak::RegionalIndicator); // U+1F1E6: Regional Indicator Symbol Letter A
/// assert_eq!(maps::grapheme_cluster_break().get('ำ'), GraphemeClusterBreak::SpacingMark); //U+0E33: Thai Character Sara Am
/// ```
pub const grapheme_cluster_break => SINGLETON_PROPS_GCB_V1;
pub fn load_grapheme_cluster_break();
}
make_map_property! {
property: "Word_Break";
marker: WordBreakProperty;
value: crate::WordBreak;
keyed_data_marker: WordBreakV1Marker;
func:
/// Return a [`CodePointMapDataBorrowed`] for the Word_Break Unicode enumerated
/// property. See [`WordBreak`].
///
/// ✨ *Enabled with the `compiled_data` Cargo feature.*
///
/// [📚 Help choosing a constructor](icu_provider::constructors)
///
/// **Note:** Use `icu::segmenter` for an all-in-one break iterator implementation.
///
/// # Example
///
/// ```
/// use icu::properties::{maps, WordBreak};
///
/// assert_eq!(maps::word_break().get('.'), WordBreak::MidNumLet); // U+002E: Full Stop
/// assert_eq!(maps::word_break().get(''), WordBreak::MidNum); // U+FF0C: Fullwidth Comma
/// ```
pub const word_break => SINGLETON_PROPS_WB_V1;
pub fn load_word_break();
}
make_map_property! {
property: "Sentence_Break";
marker: SentenceBreakProperty;
value: crate::SentenceBreak;
keyed_data_marker: SentenceBreakV1Marker;
func:
/// Return a [`CodePointMapDataBorrowed`] for the Sentence_Break Unicode enumerated
/// property. See [`SentenceBreak`].
///
/// ✨ *Enabled with the `compiled_data` Cargo feature.*
///
/// [📚 Help choosing a constructor](icu_provider::constructors)
///
/// **Note:** Use `icu::segmenter` for an all-in-one break iterator implementation.
///
/// # Example
///
/// ```
/// use icu::properties::{maps, SentenceBreak};
///
/// assert_eq!(maps::sentence_break().get(''), SentenceBreak::Numeric); // U+FF19: Fullwidth Digit Nine
/// assert_eq!(maps::sentence_break().get(','), SentenceBreak::SContinue); // U+002C: Comma
/// ```
pub const sentence_break => SINGLETON_PROPS_SB_V1;
pub fn load_sentence_break();
}
make_map_property! {
property: "Canonical_Combining_Class";
marker: CanonicalCombiningClassProperty;
value: crate::CanonicalCombiningClass;
keyed_data_marker: CanonicalCombiningClassV1Marker;
func:
/// Return a [`CodePointMapData`] for the Canonical_Combining_Class Unicode property. See
/// [`CanonicalCombiningClass`].
///
/// ✨ *Enabled with the `compiled_data` Cargo feature.*
///
/// [📚 Help choosing a constructor](icu_provider::constructors)
///
/// **Note:** See `icu_normalizer::CanonicalCombiningClassMap` for the preferred API
/// to look up the Canonical_Combining_Class property by scalar value.
///
/// # Example
///
/// ```
/// use icu::properties::{maps, CanonicalCombiningClass};
///
/// assert_eq!(maps::canonical_combining_class().get('a'), CanonicalCombiningClass::NotReordered); // U+0061: LATIN SMALL LETTER A
/// assert_eq!(maps::canonical_combining_class().get32(0x0301), CanonicalCombiningClass::Above); // U+0301: COMBINING ACUTE ACCENT
/// ```
pub const canonical_combining_class => SINGLETON_PROPS_CCC_V1;
pub fn load_canonical_combining_class();
}
make_map_property! {
property: "Indic_Syllabic_Category";
marker: IndicSyllabicCategoryProperty;
value: crate::IndicSyllabicCategory;
keyed_data_marker: IndicSyllabicCategoryV1Marker;
func:
/// Return a [`CodePointMapData`] for the Indic_Syllabic_Category Unicode property. See
/// [`IndicSyllabicCategory`].
///
/// ✨ *Enabled with the `compiled_data` Cargo feature.*
///
/// [📚 Help choosing a constructor](icu_provider::constructors)
///
/// # Example
///
/// ```
/// use icu::properties::{maps, IndicSyllabicCategory};
///
/// assert_eq!(maps::indic_syllabic_category().get('a'), IndicSyllabicCategory::Other);
/// assert_eq!(maps::indic_syllabic_category().get32(0x0900), IndicSyllabicCategory::Bindu); // U+0900: DEVANAGARI SIGN INVERTED CANDRABINDU
/// ```
pub const indic_syllabic_category => SINGLETON_PROPS_INSC_V1;
pub fn load_indic_syllabic_category();
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,900 @@
// 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 ).
// Provider structs must be stable
#![allow(clippy::exhaustive_structs, clippy::exhaustive_enums)]
//! 🚧 \[Unstable\] Data provider struct definitions for this ICU4X component.
//!
//! <div class="stab unstable">
//! 🚧 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.
//! </div>
//!
//! Read more about data providers: [`icu_provider`]
pub mod names;
use crate::script::ScriptWithExt;
use crate::Script;
use core::ops::RangeInclusive;
use core::str;
use icu_collections::codepointinvlist::CodePointInversionList;
use icu_collections::codepointinvliststringlist::CodePointInversionListAndStringList;
use icu_collections::codepointtrie::{CodePointMapRange, CodePointTrie, TrieValue};
use icu_provider::prelude::*;
use icu_provider::{DataKeyMetadata, FallbackPriority};
use zerofrom::ZeroFrom;
use zerovec::{VarZeroVec, ZeroSlice, ZeroVecError};
#[cfg(feature = "compiled_data")]
#[derive(Debug)]
/// Baked data
///
/// <div class="stab unstable">
/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
/// including in SemVer minor releases. In particular, the `DataProvider` implementations are only
/// guaranteed to match with this version's `*_unstable` providers. Use with caution.
/// </div>
pub struct Baked;
#[cfg(feature = "compiled_data")]
const _: () = {
pub mod icu {
pub use crate as properties;
pub use icu_collections as collections;
pub use icu_locid_transform as locid_transform;
}
icu_properties_data::make_provider!(Baked);
icu_properties_data::impl_propnames_from_gcb_v1!(Baked);
icu_properties_data::impl_propnames_from_bc_v1!(Baked);
icu_properties_data::impl_propnames_from_ccc_v1!(Baked);
icu_properties_data::impl_propnames_from_ea_v1!(Baked);
icu_properties_data::impl_propnames_from_gc_v1!(Baked);
icu_properties_data::impl_propnames_from_gcm_v1!(Baked);
icu_properties_data::impl_propnames_from_insc_v1!(Baked);
icu_properties_data::impl_propnames_from_lb_v1!(Baked);
icu_properties_data::impl_propnames_from_sb_v1!(Baked);
icu_properties_data::impl_propnames_from_sc_v1!(Baked);
icu_properties_data::impl_propnames_from_wb_v1!(Baked);
icu_properties_data::impl_propnames_to_long_linear_bc_v1!(Baked);
icu_properties_data::impl_propnames_to_long_linear_ea_v1!(Baked);
icu_properties_data::impl_propnames_to_long_linear_gc_v1!(Baked);
icu_properties_data::impl_propnames_to_long_linear_gcb_v1!(Baked);
icu_properties_data::impl_propnames_to_long_linear_insc_v1!(Baked);
icu_properties_data::impl_propnames_to_long_linear_lb_v1!(Baked);
icu_properties_data::impl_propnames_to_long_linear_sb_v1!(Baked);
icu_properties_data::impl_propnames_to_long_linear_sc_v1!(Baked);
icu_properties_data::impl_propnames_to_long_linear_wb_v1!(Baked);
icu_properties_data::impl_propnames_to_long_sparse_ccc_v1!(Baked);
icu_properties_data::impl_propnames_to_short_linear_bc_v1!(Baked);
icu_properties_data::impl_propnames_to_short_linear_ea_v1!(Baked);
icu_properties_data::impl_propnames_to_short_linear_gc_v1!(Baked);
icu_properties_data::impl_propnames_to_short_linear_gcb_v1!(Baked);
icu_properties_data::impl_propnames_to_short_linear_insc_v1!(Baked);
icu_properties_data::impl_propnames_to_short_linear_lb_v1!(Baked);
icu_properties_data::impl_propnames_to_short_linear_sb_v1!(Baked);
icu_properties_data::impl_propnames_to_short_linear_wb_v1!(Baked);
icu_properties_data::impl_propnames_to_short_linear4_sc_v1!(Baked);
icu_properties_data::impl_propnames_to_short_sparse_ccc_v1!(Baked);
icu_properties_data::impl_props_ahex_v1!(Baked);
icu_properties_data::impl_props_alnum_v1!(Baked);
icu_properties_data::impl_props_alpha_v1!(Baked);
icu_properties_data::impl_props_basic_emoji_v1!(Baked);
icu_properties_data::impl_props_bc_v1!(Baked);
icu_properties_data::impl_props_bidi_c_v1!(Baked);
icu_properties_data::impl_props_bidi_m_v1!(Baked);
icu_properties_data::impl_props_bidiauxiliaryprops_v1!(Baked);
icu_properties_data::impl_props_blank_v1!(Baked);
icu_properties_data::impl_props_cased_v1!(Baked);
icu_properties_data::impl_props_ccc_v1!(Baked);
icu_properties_data::impl_props_ci_v1!(Baked);
icu_properties_data::impl_props_comp_ex_v1!(Baked);
icu_properties_data::impl_props_cwcf_v1!(Baked);
icu_properties_data::impl_props_cwcm_v1!(Baked);
icu_properties_data::impl_props_cwkcf_v1!(Baked);
icu_properties_data::impl_props_cwl_v1!(Baked);
icu_properties_data::impl_props_cwt_v1!(Baked);
icu_properties_data::impl_props_cwu_v1!(Baked);
icu_properties_data::impl_props_dash_v1!(Baked);
icu_properties_data::impl_props_dep_v1!(Baked);
icu_properties_data::impl_props_di_v1!(Baked);
icu_properties_data::impl_props_dia_v1!(Baked);
icu_properties_data::impl_props_ea_v1!(Baked);
icu_properties_data::impl_props_ebase_v1!(Baked);
icu_properties_data::impl_props_ecomp_v1!(Baked);
icu_properties_data::impl_props_emod_v1!(Baked);
icu_properties_data::impl_props_emoji_v1!(Baked);
icu_properties_data::impl_props_epres_v1!(Baked);
icu_properties_data::impl_props_exemplarchars_auxiliary_v1!(Baked);
icu_properties_data::impl_props_exemplarchars_index_v1!(Baked);
icu_properties_data::impl_props_exemplarchars_main_v1!(Baked);
icu_properties_data::impl_props_exemplarchars_numbers_v1!(Baked);
icu_properties_data::impl_props_exemplarchars_punctuation_v1!(Baked);
icu_properties_data::impl_props_ext_v1!(Baked);
icu_properties_data::impl_props_extpict_v1!(Baked);
icu_properties_data::impl_props_gc_v1!(Baked);
icu_properties_data::impl_props_gcb_v1!(Baked);
icu_properties_data::impl_props_gr_base_v1!(Baked);
icu_properties_data::impl_props_gr_ext_v1!(Baked);
icu_properties_data::impl_props_gr_link_v1!(Baked);
icu_properties_data::impl_props_graph_v1!(Baked);
icu_properties_data::impl_props_hex_v1!(Baked);
icu_properties_data::impl_props_hyphen_v1!(Baked);
icu_properties_data::impl_props_idc_v1!(Baked);
icu_properties_data::impl_props_ideo_v1!(Baked);
icu_properties_data::impl_props_ids_v1!(Baked);
icu_properties_data::impl_props_idsb_v1!(Baked);
icu_properties_data::impl_props_idst_v1!(Baked);
icu_properties_data::impl_props_insc_v1!(Baked);
icu_properties_data::impl_props_join_c_v1!(Baked);
icu_properties_data::impl_props_lb_v1!(Baked);
icu_properties_data::impl_props_loe_v1!(Baked);
icu_properties_data::impl_props_lower_v1!(Baked);
icu_properties_data::impl_props_math_v1!(Baked);
icu_properties_data::impl_props_nchar_v1!(Baked);
icu_properties_data::impl_props_nfcinert_v1!(Baked);
icu_properties_data::impl_props_nfdinert_v1!(Baked);
icu_properties_data::impl_props_nfkcinert_v1!(Baked);
icu_properties_data::impl_props_nfkdinert_v1!(Baked);
icu_properties_data::impl_props_pat_syn_v1!(Baked);
icu_properties_data::impl_props_pat_ws_v1!(Baked);
icu_properties_data::impl_props_pcm_v1!(Baked);
icu_properties_data::impl_props_print_v1!(Baked);
icu_properties_data::impl_props_qmark_v1!(Baked);
icu_properties_data::impl_props_radical_v1!(Baked);
icu_properties_data::impl_props_ri_v1!(Baked);
icu_properties_data::impl_props_sb_v1!(Baked);
icu_properties_data::impl_props_sc_v1!(Baked);
icu_properties_data::impl_props_scx_v1!(Baked);
icu_properties_data::impl_props_sd_v1!(Baked);
icu_properties_data::impl_props_segstart_v1!(Baked);
icu_properties_data::impl_props_sensitive_v1!(Baked);
icu_properties_data::impl_props_sterm_v1!(Baked);
icu_properties_data::impl_props_term_v1!(Baked);
icu_properties_data::impl_props_uideo_v1!(Baked);
icu_properties_data::impl_props_upper_v1!(Baked);
icu_properties_data::impl_props_vs_v1!(Baked);
icu_properties_data::impl_props_wb_v1!(Baked);
icu_properties_data::impl_props_wspace_v1!(Baked);
icu_properties_data::impl_props_xdigit_v1!(Baked);
icu_properties_data::impl_props_xidc_v1!(Baked);
icu_properties_data::impl_props_xids_v1!(Baked);
};
// include the specialized structs for the compact representation of Bidi property data
pub mod bidi_data;
/// A set of characters which share a particular property value.
///
/// This data enum is extensible, more backends may be added in the future.
/// Old data can be used with newer code but not vice versa.
///
/// <div class="stab unstable">
/// 🚧 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.
/// </div>
#[derive(Debug, Eq, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
#[cfg_attr(
feature = "datagen",
derive(serde::Serialize, databake::Bake),
databake(path = icu_properties::provider),
)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
#[non_exhaustive]
pub enum PropertyCodePointSetV1<'data> {
/// The set of characters, represented as an inversion list
InversionList(#[cfg_attr(feature = "serde", serde(borrow))] CodePointInversionList<'data>),
// new variants should go BELOW existing ones
// Serde serializes based on variant name and index in the enum
// https://docs.rs/serde/latest/serde/trait.Serializer.html#tymethod.serialize_unit_variant
}
/// A map efficiently storing data about individual characters.
///
/// This data enum is extensible, more backends may be added in the future.
/// Old data can be used with newer code but not vice versa.
///
/// <div class="stab unstable">
/// 🚧 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.
/// </div>
#[derive(Clone, Debug, Eq, PartialEq, yoke::Yokeable, zerofrom::ZeroFrom)]
#[cfg_attr(
feature = "datagen",
derive(serde::Serialize, databake::Bake),
databake(path = icu_properties::provider),
)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
#[non_exhaustive]
pub enum PropertyCodePointMapV1<'data, T: TrieValue> {
/// A codepoint trie storing the data
CodePointTrie(#[cfg_attr(feature = "serde", serde(borrow))] CodePointTrie<'data, T>),
// new variants should go BELOW existing ones
// Serde serializes based on variant name and index in the enum
// https://docs.rs/serde/latest/serde/trait.Serializer.html#tymethod.serialize_unit_variant
}
/// A set of characters and strings which share a particular property value.
///
/// <div class="stab unstable">
/// 🚧 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.
/// </div>
#[derive(Debug, Eq, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
#[cfg_attr(
feature = "datagen",
derive(serde::Serialize, databake::Bake),
databake(path = icu_properties::provider),
)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
#[non_exhaustive]
pub enum PropertyUnicodeSetV1<'data> {
/// A set representing characters in an inversion list, and the strings in a list.
CPInversionListStrList(
#[cfg_attr(feature = "serde", serde(borrow))] CodePointInversionListAndStringList<'data>,
),
// new variants should go BELOW existing ones
// Serde serializes based on variant name and index in the enum
// https://docs.rs/serde/latest/serde/trait.Serializer.html#tymethod.serialize_unit_variant
}
impl<'data> PropertyUnicodeSetV1<'data> {
#[inline]
pub(crate) fn contains(&self, s: &str) -> bool {
match *self {
Self::CPInversionListStrList(ref l) => l.contains(s),
}
}
#[inline]
pub(crate) fn contains32(&self, cp: u32) -> bool {
match *self {
Self::CPInversionListStrList(ref l) => l.contains32(cp),
}
}
#[inline]
pub(crate) fn contains_char(&self, ch: char) -> bool {
match *self {
Self::CPInversionListStrList(ref l) => l.contains_char(ch),
}
}
#[inline]
pub(crate) fn from_code_point_inversion_list_string_list(
l: CodePointInversionListAndStringList<'static>,
) -> Self {
Self::CPInversionListStrList(l)
}
#[inline]
pub(crate) fn as_code_point_inversion_list_string_list(
&'_ self,
) -> Option<&'_ CodePointInversionListAndStringList<'data>> {
match *self {
Self::CPInversionListStrList(ref l) => Some(l),
// any other backing data structure that cannot return a CPInversionListStrList in O(1) time should return None
}
}
#[inline]
pub(crate) fn to_code_point_inversion_list_string_list(
&self,
) -> CodePointInversionListAndStringList<'_> {
match *self {
Self::CPInversionListStrList(ref t) => ZeroFrom::zero_from(t),
}
}
}
/// A struct that efficiently stores `Script` and `Script_Extensions` property data.
///
/// <div class="stab unstable">
/// 🚧 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.
/// </div>
#[icu_provider::data_struct(marker(
ScriptWithExtensionsPropertyV1Marker,
"props/scx@1",
singleton
))]
#[derive(Debug, Eq, PartialEq, Clone)]
#[cfg_attr(
feature = "datagen",
derive(serde::Serialize, databake::Bake),
databake(path = icu_properties::provider),
)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
pub struct ScriptWithExtensionsPropertyV1<'data> {
/// Note: The `ScriptWithExt` values in this array will assume a 12-bit layout. The 2
/// higher order bits 11..10 will indicate how to deduce the Script value and
/// Script_Extensions value, nearly matching the representation
/// [in ICU](https://github.com/unicode-org/icu/blob/main/icu4c/source/common/uprops.h):
///
/// | High order 2 bits value | Script | Script_Extensions |
/// |-------------------------|--------------------------------------------------------|----------------------------------------------------------------|
/// | 3 | First value in sub-array, index given by lower 10 bits | Sub-array excluding first value, index given by lower 10 bits |
/// | 2 | Script=Inherited | Entire sub-array, index given by lower 10 bits |
/// | 1 | Script=Common | Entire sub-array, index given by lower 10 bits |
/// | 0 | Value in lower 10 bits | `[ Script value ]` single-element array |
///
/// When the lower 10 bits of the value are used as an index, that index is
/// used for the outer-level vector of the nested `extensions` structure.
#[cfg_attr(feature = "serde", serde(borrow))]
pub trie: CodePointTrie<'data, ScriptWithExt>,
/// This companion structure stores Script_Extensions values, which are
/// themselves arrays / vectors. This structure only stores the values for
/// cases in which `scx(cp) != [ sc(cp) ]`. Each sub-vector is distinct. The
/// sub-vector represents the Script_Extensions array value for a code point,
/// and may also indicate Script value, as described for the `trie` field.
#[cfg_attr(feature = "serde", serde(borrow))]
pub extensions: VarZeroVec<'data, ZeroSlice<Script>>,
}
impl<'data> ScriptWithExtensionsPropertyV1<'data> {
// This method is intended to be used by constructors of deserialized data
// in a data provider.
#[doc(hidden)]
pub fn new(
trie: CodePointTrie<'data, ScriptWithExt>,
extensions: VarZeroVec<'data, ZeroSlice<Script>>,
) -> ScriptWithExtensionsPropertyV1<'data> {
ScriptWithExtensionsPropertyV1 { trie, extensions }
}
}
// See CodePointSetData for documentation of these functions
impl<'data> PropertyCodePointSetV1<'data> {
#[inline]
pub(crate) fn contains(&self, ch: char) -> bool {
match *self {
Self::InversionList(ref l) => l.contains(ch),
}
}
#[inline]
pub(crate) fn contains32(&self, ch: u32) -> bool {
match *self {
Self::InversionList(ref l) => l.contains32(ch),
}
}
#[inline]
pub(crate) fn iter_ranges(&self) -> impl Iterator<Item = RangeInclusive<u32>> + '_ {
match *self {
Self::InversionList(ref l) => l.iter_ranges(),
}
}
#[inline]
pub(crate) fn iter_ranges_complemented(
&self,
) -> impl Iterator<Item = RangeInclusive<u32>> + '_ {
match *self {
Self::InversionList(ref l) => l.iter_ranges_complemented(),
}
}
#[inline]
pub(crate) fn from_code_point_inversion_list(l: CodePointInversionList<'static>) -> Self {
Self::InversionList(l)
}
#[inline]
pub(crate) fn as_code_point_inversion_list(
&'_ self,
) -> Option<&'_ CodePointInversionList<'data>> {
match *self {
Self::InversionList(ref l) => Some(l),
// any other backing data structure that cannot return a CPInvList in O(1) time should return None
}
}
#[inline]
pub(crate) fn to_code_point_inversion_list(&self) -> CodePointInversionList<'_> {
match *self {
Self::InversionList(ref t) => ZeroFrom::zero_from(t),
}
}
}
// See CodePointMapData for documentation of these functions
impl<'data, T: TrieValue> PropertyCodePointMapV1<'data, T> {
#[inline]
pub(crate) fn get32(&self, ch: u32) -> T {
match *self {
Self::CodePointTrie(ref t) => t.get32(ch),
}
}
#[inline]
pub(crate) fn try_into_converted<P>(
self,
) -> Result<PropertyCodePointMapV1<'data, P>, ZeroVecError>
where
P: TrieValue,
{
match self {
Self::CodePointTrie(t) => t
.try_into_converted()
.map(PropertyCodePointMapV1::CodePointTrie),
}
}
#[inline]
pub(crate) fn get_set_for_value(&self, value: T) -> CodePointInversionList<'static> {
match *self {
Self::CodePointTrie(ref t) => t.get_set_for_value(value),
}
}
#[inline]
pub(crate) fn iter_ranges(&self) -> impl Iterator<Item = CodePointMapRange<T>> + '_ {
match *self {
Self::CodePointTrie(ref t) => t.iter_ranges(),
}
}
#[inline]
pub(crate) fn iter_ranges_mapped<'a, U: Eq + 'a>(
&'a self,
map: impl FnMut(T) -> U + Copy + 'a,
) -> impl Iterator<Item = CodePointMapRange<U>> + 'a {
match *self {
Self::CodePointTrie(ref t) => t.iter_ranges_mapped(map),
}
}
#[inline]
pub(crate) fn from_code_point_trie(trie: CodePointTrie<'static, T>) -> Self {
Self::CodePointTrie(trie)
}
#[inline]
pub(crate) fn as_code_point_trie(&self) -> Option<&CodePointTrie<'data, T>> {
match *self {
Self::CodePointTrie(ref t) => Some(t),
// any other backing data structure that cannot return a CPT in O(1) time should return None
}
}
#[inline]
pub(crate) fn to_code_point_trie(&self) -> CodePointTrie<'_, T> {
match *self {
Self::CodePointTrie(ref t) => ZeroFrom::zero_from(t),
}
}
}
macro_rules! expand {
(
($(($code_point_set_marker:ident, $bin_cp_s:literal),)+),
($(($unicode_set_marker:ident, $bin_us_s:literal, $us_singleton:literal),)+),
($(($code_point_map_marker:ident,
$name_value_marker:ident,
$((sparse: $value_short_name_marker_sparse:ident, $value_long_name_marker_sparse:ident),)?
$((linear: $value_short_name_marker_linear:ident, $value_long_name_marker_linear:ident ),)?
$((linear4: $value_short_name_marker_linear4:ident, $value_long_name_marker_linear4:ident ),)?
$enum_s:literal, $value_ty:ident),)+)
) => {
// Data keys that return code point sets (represented as CodePointSetData).
// For now, synonymous with binary properties of code points only.
$(
#[doc = core::concat!("Data marker for the '", $bin_cp_s, "' Unicode property")]
#[derive(Debug, Default)]
#[cfg_attr(
feature = "datagen",
derive(databake::Bake),
databake(path = icu_properties::provider),
)]
pub struct $code_point_set_marker;
impl DataMarker for $code_point_set_marker {
type Yokeable = PropertyCodePointSetV1<'static>;
}
impl KeyedDataMarker for $code_point_set_marker {
const KEY: DataKey = data_key!(concat!("props/", $bin_cp_s, "@1"), DataKeyMetadata::construct_internal(FallbackPriority::Language, None, None, true));
}
)+
// Data keys that return sets of strings + code points (represented as UnicodeSetData).
// Includes:
// - binary properties of strings + code points
// - exemplar characters
$(
#[doc = core::concat!("Data marker for the '", $bin_us_s, "' Unicode property")]
#[derive(Debug, Default)]
#[cfg_attr(
feature = "datagen",
derive(databake::Bake),
databake(path = icu_properties::provider),
)]
pub struct $unicode_set_marker;
impl DataMarker for $unicode_set_marker {
type Yokeable = PropertyUnicodeSetV1<'static>;
}
impl KeyedDataMarker for $unicode_set_marker {
const KEY: DataKey = data_key!(concat!("props/", $bin_us_s, "@1"), DataKeyMetadata::construct_internal(FallbackPriority::Language, None, None, $us_singleton));
}
)+
// Data keys that return code point map (represented as CodePointMapData).
// For now, synonymous with enumerated properties [of code points only].
$(
#[doc = core::concat!("Data marker for the '", $enum_s, "' Unicode property")]
#[derive(Debug, Default)]
#[cfg_attr(
feature = "datagen",
derive(databake::Bake),
databake(path = icu_properties::provider),
)]
pub struct $code_point_map_marker;
impl DataMarker for $code_point_map_marker {
type Yokeable = PropertyCodePointMapV1<'static, crate::$value_ty>;
}
impl KeyedDataMarker for $code_point_map_marker {
const KEY: DataKey = data_key!(concat!("props/", $enum_s, "@1"), DataKeyMetadata::construct_internal(FallbackPriority::Language, None, None, true));
}
#[doc = core::concat!("Data marker for parsing the names of the values of the '", $enum_s, "' Unicode property")]
#[derive(Debug, Default)]
#[cfg_attr(
feature = "datagen",
derive(databake::Bake),
databake(path = icu_properties::provider),
)]
pub struct $name_value_marker;
impl DataMarker for $name_value_marker {
type Yokeable = names::PropertyValueNameToEnumMapV1<'static>;
}
impl KeyedDataMarker for $name_value_marker {
const KEY: DataKey = data_key!(concat!("propnames/from/", $enum_s, "@1"), DataKeyMetadata::construct_internal(FallbackPriority::Language, None, None, true));
}
$(
#[doc = core::concat!("Data marker for producing short names of the values of the '", $enum_s, "' Unicode property")]
#[derive(Debug, Default)]
#[cfg_attr(
feature = "datagen",
derive(databake::Bake),
databake(path = icu_properties::provider),
)]
pub struct $value_short_name_marker_sparse;
impl DataMarker for $value_short_name_marker_sparse {
type Yokeable = names::PropertyEnumToValueNameSparseMapV1<'static>;
}
impl KeyedDataMarker for $value_short_name_marker_sparse {
const KEY: DataKey = data_key!(concat!("propnames/to/short/sparse/", $enum_s, "@1"), DataKeyMetadata::construct_internal(FallbackPriority::Language, None, None, true));
}
#[doc = core::concat!("Data marker for producing long names of the values of the '", $enum_s, "' Unicode property")]
#[derive(Debug, Default)]
#[cfg_attr(
feature = "datagen",
derive(databake::Bake),
databake(path = icu_properties::provider),
)]
pub struct $value_long_name_marker_sparse;
impl DataMarker for $value_long_name_marker_sparse {
type Yokeable = names::PropertyEnumToValueNameSparseMapV1<'static>;
}
impl KeyedDataMarker for $value_long_name_marker_sparse {
const KEY: DataKey = data_key!(concat!("propnames/to/long/sparse/", $enum_s, "@1"), DataKeyMetadata::construct_internal(FallbackPriority::Language, None, None, true));
}
)?
$(
#[doc = core::concat!("Data marker for producing short names of the values of the '", $enum_s, "' Unicode property")]
#[derive(Debug, Default)]
#[cfg_attr(
feature = "datagen",
derive(databake::Bake),
databake(path = icu_properties::provider),
)]
pub struct $value_short_name_marker_linear;
impl DataMarker for $value_short_name_marker_linear {
type Yokeable = names::PropertyEnumToValueNameLinearMapV1<'static>;
}
impl KeyedDataMarker for $value_short_name_marker_linear {
const KEY: DataKey = data_key!(concat!("propnames/to/short/linear/", $enum_s, "@1"), DataKeyMetadata::construct_internal(FallbackPriority::Language, None, None, true));
}
#[doc = core::concat!("Data marker for producing long names of the values of the '", $enum_s, "' Unicode property")]
#[derive(Debug, Default)]
#[cfg_attr(
feature = "datagen",
derive(databake::Bake),
databake(path = icu_properties::provider),
)]
pub struct $value_long_name_marker_linear;
impl DataMarker for $value_long_name_marker_linear {
type Yokeable = names::PropertyEnumToValueNameLinearMapV1<'static>;
}
impl KeyedDataMarker for $value_long_name_marker_linear {
const KEY: DataKey = data_key!(concat!("propnames/to/long/linear/", $enum_s, "@1"), DataKeyMetadata::construct_internal(FallbackPriority::Language, None, None, true));
}
)?
$(
#[doc = core::concat!("Data marker for producing short names of the values of the '", $enum_s, "' Unicode property")]
#[derive(Debug, Default)]
#[cfg_attr(
feature = "datagen",
derive(databake::Bake),
databake(path = icu_properties::provider),
)]
pub struct $value_short_name_marker_linear4;
impl DataMarker for $value_short_name_marker_linear4 {
type Yokeable = names::PropertyEnumToValueNameLinearTiny4MapV1<'static>;
}
impl KeyedDataMarker for $value_short_name_marker_linear4 {
const KEY: DataKey = data_key!(concat!("propnames/to/short/linear4/", $enum_s, "@1"), DataKeyMetadata::construct_internal(FallbackPriority::Language, None, None, true));
}
#[doc = core::concat!("Data marker for producing long names of the values of the '", $enum_s, "' Unicode property")]
#[derive(Debug, Default)]
#[cfg_attr(
feature = "datagen",
derive(databake::Bake),
databake(path = icu_properties::provider),
)]
pub struct $value_long_name_marker_linear4;
impl DataMarker for $value_long_name_marker_linear4 {
// Tiny4 is only for short names
type Yokeable = names::PropertyEnumToValueNameLinearMapV1<'static>;
}
impl KeyedDataMarker for $value_long_name_marker_linear4 {
const KEY: DataKey = data_key!(concat!("propnames/to/long/linear/", $enum_s, "@1"), DataKeyMetadata::construct_internal(FallbackPriority::Language, None, None, true));
}
)?
)+
/// All data keys in this module.
pub const KEYS: &[DataKey] = &[
$($code_point_set_marker::KEY,)+
$($unicode_set_marker::KEY,)+
$(
$code_point_map_marker::KEY,
$name_value_marker::KEY,
$($value_short_name_marker_sparse::KEY, $value_long_name_marker_sparse::KEY,)?
$($value_short_name_marker_linear::KEY, $value_long_name_marker_linear::KEY,)?
$($value_short_name_marker_linear4::KEY, $value_long_name_marker_linear4::KEY,)?
)+
bidi_data::BidiAuxiliaryPropertiesV1Marker::KEY,
GeneralCategoryMaskNameToValueV1Marker::KEY,
ScriptWithExtensionsPropertyV1Marker::KEY,
];
};
}
pub use self::names::GeneralCategoryMaskNameToValueV1Marker;
expand!(
(
// code point sets
(AsciiHexDigitV1Marker, "AHex"),
(AlnumV1Marker, "alnum"),
(AlphabeticV1Marker, "Alpha"),
(BidiControlV1Marker, "Bidi_C"),
(BidiMirroredV1Marker, "Bidi_M"),
(BlankV1Marker, "blank"),
(CasedV1Marker, "Cased"),
(CaseIgnorableV1Marker, "CI"),
(FullCompositionExclusionV1Marker, "Comp_Ex"),
(ChangesWhenCasefoldedV1Marker, "CWCF"),
(ChangesWhenCasemappedV1Marker, "CWCM"),
(ChangesWhenNfkcCasefoldedV1Marker, "CWKCF"),
(ChangesWhenLowercasedV1Marker, "CWL"),
(ChangesWhenTitlecasedV1Marker, "CWT"),
(ChangesWhenUppercasedV1Marker, "CWU"),
(DashV1Marker, "Dash"),
(DeprecatedV1Marker, "Dep"),
(DefaultIgnorableCodePointV1Marker, "DI"),
(DiacriticV1Marker, "Dia"),
(EmojiModifierBaseV1Marker, "EBase"),
(EmojiComponentV1Marker, "EComp"),
(EmojiModifierV1Marker, "EMod"),
(EmojiV1Marker, "Emoji"),
(EmojiPresentationV1Marker, "EPres"),
(ExtenderV1Marker, "Ext"),
(ExtendedPictographicV1Marker, "ExtPict"),
(GraphV1Marker, "graph"),
(GraphemeBaseV1Marker, "Gr_Base"),
(GraphemeExtendV1Marker, "Gr_Ext"),
(GraphemeLinkV1Marker, "Gr_Link"),
(HexDigitV1Marker, "Hex"),
(HyphenV1Marker, "Hyphen"),
(IdContinueV1Marker, "IDC"),
(IdeographicV1Marker, "Ideo"),
(IdStartV1Marker, "IDS"),
(IdsBinaryOperatorV1Marker, "IDSB"),
(IdsTrinaryOperatorV1Marker, "IDST"),
(JoinControlV1Marker, "Join_C"),
(LogicalOrderExceptionV1Marker, "LOE"),
(LowercaseV1Marker, "Lower"),
(MathV1Marker, "Math"),
(NoncharacterCodePointV1Marker, "NChar"),
(NfcInertV1Marker, "nfcinert"),
(NfdInertV1Marker, "nfdinert"),
(NfkcInertV1Marker, "nfkcinert"),
(NfkdInertV1Marker, "nfkdinert"),
(PatternSyntaxV1Marker, "Pat_Syn"),
(PatternWhiteSpaceV1Marker, "Pat_WS"),
(PrependedConcatenationMarkV1Marker, "PCM"),
(PrintV1Marker, "print"),
(QuotationMarkV1Marker, "QMark"),
(RadicalV1Marker, "Radical"),
(RegionalIndicatorV1Marker, "RI"),
(SoftDottedV1Marker, "SD"),
(SegmentStarterV1Marker, "segstart"),
(CaseSensitiveV1Marker, "Sensitive"),
(SentenceTerminalV1Marker, "STerm"),
(TerminalPunctuationV1Marker, "Term"),
(UnifiedIdeographV1Marker, "UIdeo"),
(UppercaseV1Marker, "Upper"),
(VariationSelectorV1Marker, "VS"),
(WhiteSpaceV1Marker, "WSpace"),
(XdigitV1Marker, "xdigit"),
(XidContinueV1Marker, "XIDC"),
(XidStartV1Marker, "XIDS"),
),
(
// UnicodeSets (code points + strings)
(BasicEmojiV1Marker, "Basic_Emoji", true),
(ExemplarCharactersMainV1Marker, "exemplarchars/main", false),
(
ExemplarCharactersAuxiliaryV1Marker,
"exemplarchars/auxiliary",
false
),
(
ExemplarCharactersPunctuationV1Marker,
"exemplarchars/punctuation",
false
),
(
ExemplarCharactersNumbersV1Marker,
"exemplarchars/numbers",
false
),
(
ExemplarCharactersIndexV1Marker,
"exemplarchars/index",
false
),
),
(
// code point maps
(
CanonicalCombiningClassV1Marker,
CanonicalCombiningClassNameToValueV1Marker,
(
sparse: CanonicalCombiningClassValueToShortNameV1Marker,
CanonicalCombiningClassValueToLongNameV1Marker
),
"ccc",
CanonicalCombiningClass
),
(
GeneralCategoryV1Marker,
GeneralCategoryNameToValueV1Marker,
(
linear: GeneralCategoryValueToShortNameV1Marker,
GeneralCategoryValueToLongNameV1Marker
),
"gc",
GeneralCategory
),
(
BidiClassV1Marker,
BidiClassNameToValueV1Marker,
(
linear: BidiClassValueToShortNameV1Marker,
BidiClassValueToLongNameV1Marker
),
"bc",
BidiClass
),
(
ScriptV1Marker,
ScriptNameToValueV1Marker,
(
linear4: ScriptValueToShortNameV1Marker,
ScriptValueToLongNameV1Marker
),
"sc",
Script
),
(
EastAsianWidthV1Marker,
EastAsianWidthNameToValueV1Marker,
(
linear: EastAsianWidthValueToShortNameV1Marker,
EastAsianWidthValueToLongNameV1Marker
),
"ea",
EastAsianWidth
),
(
LineBreakV1Marker,
LineBreakNameToValueV1Marker,
(
linear: LineBreakValueToShortNameV1Marker,
LineBreakValueToLongNameV1Marker
),
"lb",
LineBreak
),
(
GraphemeClusterBreakV1Marker,
GraphemeClusterBreakNameToValueV1Marker,
(
linear: GraphemeClusterBreakValueToShortNameV1Marker,
GraphemeClusterBreakValueToLongNameV1Marker
),
"GCB",
GraphemeClusterBreak
),
(
WordBreakV1Marker,
WordBreakNameToValueV1Marker,
(
linear: WordBreakValueToShortNameV1Marker,
WordBreakValueToLongNameV1Marker
),
"WB",
WordBreak
),
(
SentenceBreakV1Marker,
SentenceBreakNameToValueV1Marker,
(
linear: SentenceBreakValueToShortNameV1Marker,
SentenceBreakValueToLongNameV1Marker
),
"SB",
SentenceBreak
),
(
IndicSyllabicCategoryV1Marker,
IndicSyllabicCategoryNameToValueV1Marker,
(
linear: IndicSyllabicCategoryValueToShortNameV1Marker,
IndicSyllabicCategoryValueToLongNameV1Marker
),
"InSC",
IndicSyllabicCategory
),
// note: the names key for the GCM mask is handled above
)
);

View File

@ -0,0 +1,289 @@
// 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\] Data provider struct definitions for this ICU4X component.
//!
//! <div class="stab unstable">
//! 🚧 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.
//! </div>
//!
//! Read more about data providers: [`icu_provider`]
//!
//! This module provides an efficient storage of data serving the following
//! properties:
//! - `Bidi_Paired_Bracket`
//! - `Bidi_Paired_Bracket_Type`
//! - `Bidi_Mirrored`
//! - `Bidi_Mirroring_Glyph`
use displaydoc::Display;
use icu_collections::codepointtrie::{CodePointTrie, TrieValue};
use icu_provider::prelude::*;
use zerovec::ule::{AsULE, CharULE, ULE};
use zerovec::ZeroVecError;
/// A data provider struct for properties related to Bidi algorithms, including
/// mirroring and bracket pairing.
///
/// <div class="stab unstable">
/// 🚧 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.
/// </div>
#[icu_provider::data_struct(marker(
BidiAuxiliaryPropertiesV1Marker,
"props/bidiauxiliaryprops@1",
singleton
))]
#[derive(Debug, Eq, PartialEq, Clone)]
#[cfg_attr(
feature = "datagen",
derive(serde::Serialize, databake::Bake),
databake(path = icu_properties::provider::bidi_data),
)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
pub struct BidiAuxiliaryPropertiesV1<'data> {
/// A `CodePointTrie` efficiently storing the data from which property values
/// can be extracted or derived for the supported Bidi properties.
#[cfg_attr(feature = "serde", serde(borrow))]
pub trie: CodePointTrie<'data, MirroredPairedBracketData>,
}
impl<'data> BidiAuxiliaryPropertiesV1<'data> {
#[doc(hidden)]
pub fn new(
trie: CodePointTrie<'data, MirroredPairedBracketData>,
) -> BidiAuxiliaryPropertiesV1<'data> {
BidiAuxiliaryPropertiesV1 { trie }
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq, Ord, PartialOrd)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "datagen", derive(databake::Bake))]
#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider::bidi_data))]
#[doc(hidden)] // needed for datagen but not intended for users
pub struct MirroredPairedBracketData {
pub mirroring_glyph: char,
pub mirrored: bool,
pub paired_bracket_type: CheckedBidiPairedBracketType,
}
impl Default for MirroredPairedBracketData {
fn default() -> Self {
Self {
mirroring_glyph: 0 as char,
mirrored: false,
paired_bracket_type: CheckedBidiPairedBracketType::None,
}
}
}
impl From<MirroredPairedBracketData> for u32 {
fn from(mpbd: MirroredPairedBracketData) -> u32 {
let mut result = mpbd.mirroring_glyph as u32;
result |= (mpbd.mirrored as u32) << 21;
result |= (mpbd.paired_bracket_type as u32) << 22;
result
}
}
/// A `u32` serialized value of `MirroredPairedBracketData` did not encode either a valid Bidi_Mirroring_Glyph or a valid Bidi_Paired_Bracket_Type
#[derive(Display, Debug, Clone, Copy, PartialEq, Eq)]
#[displaydoc("Invalid MirroredPairedBracketData serialized in int: {0}")]
pub struct MirroredPairedBracketDataTryFromError(u32);
impl TryFrom<u32> for MirroredPairedBracketData {
type Error = MirroredPairedBracketDataTryFromError;
fn try_from(i: u32) -> Result<Self, MirroredPairedBracketDataTryFromError> {
let code_point = i & 0x1FFFFF;
let mirroring_glyph =
char::try_from_u32(code_point).map_err(|_| MirroredPairedBracketDataTryFromError(i))?;
let mirrored = ((i >> 21) & 0x1) == 1;
let paired_bracket_type = {
let value = ((i >> 22) & 0x3) as u8;
match value {
0 => CheckedBidiPairedBracketType::None,
1 => CheckedBidiPairedBracketType::Open,
2 => CheckedBidiPairedBracketType::Close,
_ => {
return Err(MirroredPairedBracketDataTryFromError(i));
}
}
};
Ok(MirroredPairedBracketData {
mirroring_glyph,
mirrored,
paired_bracket_type,
})
}
}
/// A closed Rust enum representing a closed set of the incoming Bidi_Paired_Bracket_Type
/// property values necessary in the internal representation of `MirroredPairedBracketData`
/// to satisfy the ULE invariants on valid values.
#[derive(Copy, Clone, Debug, PartialEq, Eq, Ord, PartialOrd)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "datagen", derive(databake::Bake))]
#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider::bidi_data))]
#[repr(u8)]
#[zerovec::make_ule(CheckedBidiPairedBracketTypeULE)]
// This enum is closed in order to help with ULE validation for MirroredPairedBracketData.
#[allow(clippy::exhaustive_enums)]
pub enum CheckedBidiPairedBracketType {
/// Not a paired bracket.
None = 0,
/// Open paired bracket.
Open = 1,
/// Close paired bracket.
Close = 2,
}
/// Bit layout for the 24 bits (0..=23) of the `[u8; 3]` ULE raw type.
/// LE means first byte is 0..=7, second byte 8..=15, third byte is 16..=23
/// 0..=20 Code point return value for Bidi_Mirroring_Glyph value
/// extracted with: mask = 0x1FFFFF <=> [bytes[0], bytes[1], bytes[2] & 0x1F]
/// 21..=21 Boolean for Bidi_Mirrored
/// extracted with: bitshift right by 21 followed by mask = 0x1 <=> (bytes[2] >> 5) & 0x1
/// 22..=23 Enum discriminant value for Bidi_Paired_Bracket_Type
/// extracted with: bitshift right by 22 followed by mask = 0x3 <=> (bytes[2] >> 6) & 0x3
/// <=> (bytes[2] >> 6) b/c we left fill with 0s on bitshift right for unsigned
/// numbers and a byte has 8 bits
#[doc(hidden)]
/// needed for datagen but not intended for users
#[derive(Copy, Clone, Hash, PartialEq, Eq, Debug)]
#[repr(packed)]
pub struct MirroredPairedBracketDataULE([u8; 3]);
// Safety (based on the safety checklist on the ULE trait):
// 1. MirroredPairedBracketDataULE does not include any uninitialized or padding bytes
// (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
// 2. MirroredPairedBracketDataULE is aligned to 1 byte.
// (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
// 3. The impl of validate_byte_slice() returns an error if any byte is not valid.
// 4. The impl of validate_byte_slice() returns an error if there are extra bytes.
// 5. The other ULE methods use the default impl.
// 6. MirroredPairedBracketDataULE byte equality is semantic equality because all bits
// are used, so no unused bits requires no extra work to zero out unused bits
unsafe impl ULE for MirroredPairedBracketDataULE {
#[inline]
fn validate_byte_slice(bytes: &[u8]) -> Result<(), ZeroVecError> {
if bytes.len() % 3 != 0 {
return Err(ZeroVecError::length::<Self>(bytes.len()));
}
// Validate the bytes
#[allow(clippy::indexing_slicing)] // Won't panic because the chunks are always 3 bytes long
for byte_triple in bytes.chunks_exact(3) {
// Bidi_Mirroring_Glyph validation
#[allow(clippy::unwrap_used)] // chunks_exact returns slices of length 3
let [byte0, byte1, byte2] = *<&[u8; 3]>::try_from(byte_triple).unwrap();
let mut mirroring_glyph_code_point: u32 = (byte2 & 0x1F) as u32;
mirroring_glyph_code_point = (mirroring_glyph_code_point << 8) | (byte1 as u32);
mirroring_glyph_code_point = (mirroring_glyph_code_point << 8) | (byte0 as u32);
let _mirroring_glyph =
char::from_u32(mirroring_glyph_code_point).ok_or(ZeroVecError::parse::<Self>())?;
// skip validating the Bidi_Mirrored boolean since it is always valid
// assert that Bidi_Paired_Bracket_Type cannot have a 4th value because it only
// has 3 values: Open, Close, None
if (byte2 & 0xC0) == 0xC0 {
return Err(ZeroVecError::parse::<Self>());
}
}
Ok(())
}
}
impl AsULE for MirroredPairedBracketData {
type ULE = MirroredPairedBracketDataULE;
#[inline]
fn to_unaligned(self) -> Self::ULE {
let mut ch = u32::from(self.mirroring_glyph);
ch |= u32::from(self.mirrored) << 21;
ch |= (self.paired_bracket_type as u32) << 22;
let [byte0, byte1, byte2, _] = ch.to_le_bytes();
MirroredPairedBracketDataULE([byte0, byte1, byte2])
}
#[inline]
fn from_unaligned(unaligned: Self::ULE) -> Self {
let [unaligned_byte0, unaligned_byte1, unaligned_byte2] = unaligned.0;
let mirroring_glyph_ule_bytes = &[unaligned_byte0, unaligned_byte1, unaligned_byte2 & 0x1F];
// Safe because the lower bits 20..0 of MirroredPairedBracketDataULE bytes are the CharULE bytes,
// and CharULE::from_unaligned is safe because bytes are defined to represent a valid Unicode code point.
let mirroring_glyph_ule =
unsafe { CharULE::from_byte_slice_unchecked(mirroring_glyph_ule_bytes) };
let mirroring_glyph = mirroring_glyph_ule
.first()
.map(|ule| char::from_unaligned(*ule))
.unwrap_or(char::REPLACEMENT_CHARACTER);
let mirrored = ((unaligned.0[2] >> 5) & 0x1) == 1;
let paired_bracket_type = {
let discriminant = unaligned.0[2] >> 6;
debug_assert!(
discriminant != 3,
"Bidi_Paired_Bracket_Type can only be Open/Close/None in MirroredPairedBracketData"
);
match discriminant {
1 => CheckedBidiPairedBracketType::Open,
2 => CheckedBidiPairedBracketType::Close,
_ => CheckedBidiPairedBracketType::None,
}
};
MirroredPairedBracketData {
mirroring_glyph,
mirrored,
paired_bracket_type,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_parse() {
// data for U+007B LEFT CURLY BRACKET
// serialize to ULE bytes
let data = MirroredPairedBracketData {
mirroring_glyph: '}',
mirrored: true,
paired_bracket_type: CheckedBidiPairedBracketType::Open,
};
let expected_bytes = &[0x7D, 0x0, 0x60];
assert_eq!(
expected_bytes,
MirroredPairedBracketDataULE::as_byte_slice(&[data.to_unaligned()])
);
// deserialize from ULE bytes
let ule = MirroredPairedBracketDataULE::parse_byte_slice(expected_bytes).unwrap();
let parsed_data = MirroredPairedBracketData::from_unaligned(*ule.first().unwrap());
assert_eq!(data, parsed_data);
}
#[test]
fn test_parse_error() {
// data for U+007B LEFT CURLY BRACKET
let ule_bytes = &mut [0x7D, 0x0, 0x60];
// Set discriminant value for the CheckedBidiPairedBracketType enum to be invalid.
// CheckedBidiPairedBracketType only has 3 values (discriminants => 0..=2), so the 4th
// expressible value from the 2 bits (3) should not parse successfully.
ule_bytes[2] |= 0xC0;
// deserialize from ULE bytes
let ule_parse_result = MirroredPairedBracketDataULE::parse_byte_slice(ule_bytes);
assert!(ule_parse_result.is_err());
}
}

View File

@ -0,0 +1,277 @@
// 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
//!
//! <div class="stab unstable">
//! 🚧 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.
//! </div>
//!
//! Read more about data providers: [`icu_provider`]
use alloc::boxed::Box;
use core::cmp::Ordering;
use core::str;
use icu_provider::prelude::*;
use tinystr::TinyStr4;
use zerovec::ule::{UnvalidatedStr, VarULE};
use zerovec::{maps::ZeroMapKV, VarZeroSlice, VarZeroVec, ZeroMap, ZeroVec};
/// This is a property name that can be "loose matched" as according to
/// [PropertyValueAliases.txt](https://www.unicode.org/Public/UCD/latest/ucd/PropertyValueAliases.txt)
///
/// (matched case-insensitively in ASCII, ignoring underscores, whitespace, and hyphens)
///
/// This is expected to be ASCII, but we do not rely on this invariant anywhere except during
/// datagen.
///
/// The Ord impl will sort things using strict equality, but in such a way that all loose-equal items
/// will sort into the same area, such that a map can be searched for both strict and loose equality.
///
/// <div class="stab unstable">
/// 🚧 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.
/// </div>
///
/// # Examples
///
/// Using a [`NormalizedPropertyNameStr`] as the key of a [`ZeroMap`]:
///
/// ```
/// use icu_properties::provider::names::NormalizedPropertyNameStr;
/// use zerovec::ZeroMap;
///
/// let map: ZeroMap<NormalizedPropertyNameStr, usize> = [
/// (NormalizedPropertyNameStr::from_str("A_BC"), 11),
/// (NormalizedPropertyNameStr::from_str("dEf"), 22),
/// (NormalizedPropertyNameStr::from_str("G_H-I"), 33),
/// ]
/// .into_iter()
/// .collect();
///
/// let key_approx = NormalizedPropertyNameStr::from_str("AB-C");
/// let key_exact = NormalizedPropertyNameStr::from_str("A_BC");
///
/// // Strict lookup:
/// assert_eq!(None, map.get_copied(key_approx));
/// assert_eq!(Some(11), map.get_copied(key_exact));
///
/// // Loose lookup:
/// assert_eq!(Some(11), map.get_copied_by(|u| u.cmp_loose(key_approx)));
/// assert_eq!(Some(11), map.get_copied_by(|u| u.cmp_loose(key_exact)));
/// ```
#[derive(PartialEq, Eq)] // VarULE wants these to be byte equality
#[derive(Debug, VarULE)]
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
#[repr(transparent)]
pub struct NormalizedPropertyNameStr(UnvalidatedStr);
/// This impl requires enabling the optional `serde` Cargo feature of the `icu_properties` crate
#[cfg(feature = "serde")]
impl<'de> serde::Deserialize<'de> for Box<NormalizedPropertyNameStr> {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
<Box<UnvalidatedStr>>::deserialize(deserializer).map(NormalizedPropertyNameStr::cast_box)
}
}
/// This impl requires enabling the optional `serde` Cargo feature of the `icu_properties` crate
#[cfg(feature = "serde")]
impl<'de, 'a> serde::Deserialize<'de> for &'a NormalizedPropertyNameStr
where
'de: 'a,
{
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
<&UnvalidatedStr>::deserialize(deserializer).map(NormalizedPropertyNameStr::cast_ref)
}
}
impl<'a> ZeroMapKV<'a> for NormalizedPropertyNameStr {
type Container = VarZeroVec<'a, NormalizedPropertyNameStr>;
type Slice = VarZeroSlice<NormalizedPropertyNameStr>;
type GetType = NormalizedPropertyNameStr;
type OwnedType = Box<NormalizedPropertyNameStr>;
}
/// The Ord/PartialOrd impl will sort things using strict equality, but in such a way that all loose-equal items
/// will sort into the same area, such that a map can be searched for both strict and loose equality.
impl PartialOrd for NormalizedPropertyNameStr {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
Some(self.cmp(other))
}
}
/// Normalize a character based on the "loose matching" described in PropertyValueAliases.txt,
/// returning `None` for skippable characters
///
/// ICU has [code for this][1] (and [during property lookup][2]) which we emulate.
/// In particular, ICU only does normalization within ASCII, which makes sense since character names
/// seem to be only ASCII.
///
/// [1]: https://github.com/unicode-org/icu/blob/288c4c7555915ce7b1fb675d94ddd495058fc039/icu4c/source/common/propname.cpp#L35
/// [2]: https://github.com/unicode-org/icu/blob/288c4c7555915ce7b1fb675d94ddd495058fc039/icu4c/source/common/propname.cpp#L226-L230
fn normalize_char(ch: u8) -> Option<u8> {
match ch {
// all ascii whitespace
ch if ch.is_ascii_whitespace() => None,
// underscores, hyphens, and the vertical tab character
// not covered by is_ascii_whitespace()
b'_' | b'-' | 0x0B => None,
// ignore case by lowercasing
ch => Some(ch.to_ascii_lowercase()),
}
}
/// The Ord impl will sort things using strict equality, but in such a way that all loose-equal items
/// will sort into the same area, such that a map can be searched for both strict and loose equality.
impl Ord for NormalizedPropertyNameStr {
fn cmp(&self, other: &Self) -> Ordering {
let cmp = self.cmp_loose(other);
// When loose equality holds, fall back to strict equality
if cmp == Ordering::Equal {
self.0.cmp(&other.0)
} else {
cmp
}
}
}
impl NormalizedPropertyNameStr {
/// Perform the loose comparison as defined in [`NormalizedPropertyNameStr`].
pub fn cmp_loose(&self, other: &Self) -> Ordering {
let self_iter = self.0.iter().copied().filter_map(normalize_char);
let other_iter = other.0.iter().copied().filter_map(normalize_char);
self_iter.cmp(other_iter)
}
/// Convert a string reference to a [`NormalizedPropertyNameStr`].
pub const fn from_str(s: &str) -> &Self {
Self::cast_ref(UnvalidatedStr::from_str(s))
}
/// Convert a [`UnvalidatedStr`] reference to a [`NormalizedPropertyNameStr`] reference.
pub const fn cast_ref(value: &UnvalidatedStr) -> &Self {
// Safety: repr(transparent)
unsafe { core::mem::transmute(value) }
}
/// Convert a [`UnvalidatedStr`] box to a [`NormalizedPropertyNameStr`] box.
pub const fn cast_box(value: Box<UnvalidatedStr>) -> Box<Self> {
// Safety: repr(transparent)
unsafe { core::mem::transmute(value) }
}
/// Get a [`NormalizedPropertyNameStr`] box from a byte slice.
pub fn boxed_from_bytes(b: &[u8]) -> Box<Self> {
Self::cast_box(UnvalidatedStr::from_boxed_bytes(b.into()))
}
}
/// A set of characters and strings which share a particular property value.
///
/// <div class="stab unstable">
/// 🚧 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.
/// </div>
#[derive(Debug, Clone, PartialEq)]
#[icu_provider::data_struct(marker(
GeneralCategoryMaskNameToValueV1Marker,
"propnames/from/gcm@1",
singleton,
))]
#[cfg_attr(
feature = "datagen",
derive(serde::Serialize, databake::Bake),
databake(path = icu_properties::provider::names),
)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
#[yoke(prove_covariance_manually)]
pub struct PropertyValueNameToEnumMapV1<'data> {
/// A map from names to their value discriminant
#[cfg_attr(feature = "serde", serde(borrow))]
pub map: ZeroMap<'data, NormalizedPropertyNameStr, u16>,
}
/// 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.
///
/// <div class="stab unstable">
/// 🚧 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.
/// </div>
#[derive(Debug, Clone, PartialEq)]
#[icu_provider::data_struct]
#[cfg_attr(
feature = "datagen",
derive(serde::Serialize, databake::Bake),
databake(path = icu_properties::provider::names),
)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
#[yoke(prove_covariance_manually)]
pub struct PropertyEnumToValueNameSparseMapV1<'data> {
/// A map from the value discriminant to the names
#[cfg_attr(feature = "serde", serde(borrow))]
pub map: ZeroMap<'data, u16, str>,
}
/// 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.
///
/// <div class="stab unstable">
/// 🚧 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.
/// </div>
#[derive(Debug, Clone, PartialEq)]
#[icu_provider::data_struct]
#[cfg_attr(
feature = "datagen",
derive(serde::Serialize, databake::Bake),
databake(path = icu_properties::provider::names),
)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
#[yoke(prove_covariance_manually)]
pub struct PropertyEnumToValueNameLinearMapV1<'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>,
}
/// 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.
///
/// <div class="stab unstable">
/// 🚧 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.
/// </div>
#[derive(Debug, Clone, PartialEq)]
#[icu_provider::data_struct]
#[cfg_attr(
feature = "datagen",
derive(serde::Serialize, databake::Bake),
databake(path = icu_properties::provider::names),
)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
#[yoke(prove_covariance_manually)]
pub struct PropertyEnumToValueNameLinearTiny4MapV1<'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, TinyStr4>,
}

View File

@ -0,0 +1,360 @@
// 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 ).
//! 🚧 \[Experimental\] This module is experimental and currently crate-private. Let us know if you
//! have a use case for this!
//!
//! This module contains utilities for working with properties where the specific property in use
//! is not known at compile time.
//!
//! For regex engines, [`crate::sets::load_for_ecma262_unstable()`] is a convenient API for working
//! with properties at runtime tailored for the use case of ECMA262-compatible regex engines.
#[cfg(doc)]
use crate::{maps, script, GeneralCategory, GeneralCategoryGroup, Script};
/// This type can represent any Unicode property.
///
/// This is intended to be used in situations where the exact unicode property needed is
/// only known at runtime, for example in regex engines.
///
/// The values are intended to be identical to ICU4C's UProperty enum
#[allow(clippy::exhaustive_structs)] // newtype
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
pub struct UnicodeProperty(pub u32);
#[allow(non_upper_case_globals)]
#[allow(unused)] // experimental, may be made public later
impl UnicodeProperty {
/// Binary property `Alphabetic`
pub const Alphabetic: Self = UnicodeProperty(0);
/// Binary property `ASCII_Hex_Digit`
pub const AsciiHexDigit: Self = UnicodeProperty(1);
/// Binary property `Bidi_Control`
pub const BidiControl: Self = UnicodeProperty(2);
/// Binary property `Bidi_Mirrored`
pub const BidiMirrored: Self = UnicodeProperty(3);
/// Binary property `Dash`
pub const Dash: Self = UnicodeProperty(4);
/// Binary property `Default_Ignorable_Code_Point`
pub const DefaultIgnorableCodePoint: Self = UnicodeProperty(5);
/// Binary property `Deprecated`
pub const Deprecated: Self = UnicodeProperty(6);
/// Binary property `Diacritic`
pub const Diacritic: Self = UnicodeProperty(7);
/// Binary property `Extender`
pub const Extender: Self = UnicodeProperty(8);
/// Binary property `Full_Composition_Exclusion`
pub const FullCompositionExclusion: Self = UnicodeProperty(9);
/// Binary property `Grapheme_Base`
pub const GraphemeBase: Self = UnicodeProperty(10);
/// Binary property `Grapheme_Extend`
pub const GraphemeExtend: Self = UnicodeProperty(11);
/// Binary property `Grapheme_Link`
pub const GraphemeLink: Self = UnicodeProperty(12);
/// Binary property `Hex_Digit`
pub const HexDigit: Self = UnicodeProperty(13);
/// Binary property `Hyphen`
pub const Hyphen: Self = UnicodeProperty(14);
/// Binary property `ID_Continue`
pub const IdContinue: Self = UnicodeProperty(15);
/// Binary property `ID_Start`
pub const IdStart: Self = UnicodeProperty(16);
/// Binary property `Ideographic`
pub const Ideographic: Self = UnicodeProperty(17);
/// Binary property `IDS_Binary_Operator`
pub const IdsBinaryOperator: Self = UnicodeProperty(18);
/// Binary property `IDS_Trinary_Operator`
pub const IdsTrinaryOperator: Self = UnicodeProperty(19);
/// Binary property `Join_Control`
pub const JoinControl: Self = UnicodeProperty(20);
/// Binary property `Logical_Order_Exception`
pub const LogicalOrderException: Self = UnicodeProperty(21);
/// Binary property `Lowercase`
pub const Lowercase: Self = UnicodeProperty(22);
/// Binary property `Math`
pub const Math: Self = UnicodeProperty(23);
/// Binary property `Noncharacter_Code_Point`
pub const NoncharacterCodePoint: Self = UnicodeProperty(24);
/// Binary property `Quotation_Mark`
pub const QuotationMark: Self = UnicodeProperty(25);
/// Binary property `Radical`
pub const Radical: Self = UnicodeProperty(26);
/// Binary property `Soft_Dotted`
pub const SoftDotted: Self = UnicodeProperty(27);
/// Binary property `Terminal_Punctuation`
pub const TerminalPunctuation: Self = UnicodeProperty(28);
/// Binary property `Unified_Ideograph`
pub const UnifiedIdeograph: Self = UnicodeProperty(29);
/// Binary property `Uppercase`
pub const Uppercase: Self = UnicodeProperty(30);
/// Binary property `White_Space`
pub const WhiteSpace: Self = UnicodeProperty(31);
/// Binary property `XID_Continue`
pub const XidContinue: Self = UnicodeProperty(32);
/// Binary property `XID_Start`
pub const XidStart: Self = UnicodeProperty(33);
/// Binary property `Case_Sensitive`
pub const CaseSensitive: Self = UnicodeProperty(34);
/// Binary property `Sentence_Terminal`
pub const SentenceTerminal: Self = UnicodeProperty(35);
/// Binary property `Variation_Selector`
pub const VariationSelector: Self = UnicodeProperty(36);
/// Binary property `NFD_Inert`
pub const NfdInert: Self = UnicodeProperty(37);
/// Binary property `NFKD_Inert`
pub const NfkdInert: Self = UnicodeProperty(38);
/// Binary property `NFC_Inert`
pub const NfcInert: Self = UnicodeProperty(39);
/// Binary property `NFKC_Inert`
pub const NfkcInert: Self = UnicodeProperty(40);
/// Binary property `Segment_Starter`
pub const SegmentStarter: Self = UnicodeProperty(41);
/// Binary property `Pattern_Syntax`
pub const PatternSyntax: Self = UnicodeProperty(42);
/// Binary property `Pattern_White_Space`
pub const PatternWhiteSpace: Self = UnicodeProperty(43);
/// Binary property `alnum`
pub const Alnum: Self = UnicodeProperty(44);
/// Binary property `blank`
pub const Blank: Self = UnicodeProperty(45);
/// Binary property `graph`
pub const Graph: Self = UnicodeProperty(46);
/// Binary property `print`
pub const Print: Self = UnicodeProperty(47);
/// Binary property `xdigit`
pub const XDigit: Self = UnicodeProperty(48);
/// Binary property `Cased`
pub const Cased: Self = UnicodeProperty(49);
/// Binary property `Case_Ignorable`
pub const CaseIgnorable: Self = UnicodeProperty(50);
/// Binary property `Changes_When_Lowercased`
pub const ChangesWhenLowercased: Self = UnicodeProperty(51);
/// Binary property `Changes_When_Uppercased`
pub const ChangesWhenUppercased: Self = UnicodeProperty(52);
/// Binary property `Changes_When_Titlecased`
pub const ChangesWhenTitlecased: Self = UnicodeProperty(53);
/// Binary property `Changes_When_Casefolded`
pub const ChangesWhenCasefolded: Self = UnicodeProperty(54);
/// Binary property `Changes_When_Casemapped`
pub const ChangesWhenCasemapped: Self = UnicodeProperty(55);
/// Binary property `Changes_When_NFKC_Casefolded`
pub const ChangesWhenNfkcCasefolded: Self = UnicodeProperty(56);
/// Binary property `Emoji`
pub const Emoji: Self = UnicodeProperty(57);
/// Binary property `Emoji_Presentation`
pub const EmojiPresentation: Self = UnicodeProperty(58);
/// Binary property `Emoji_Modifier`
pub const EmojiModifier: Self = UnicodeProperty(59);
/// Binary property `Emoji_Modifier_Base`
pub const EmojiModifierBase: Self = UnicodeProperty(60);
/// Binary property `Emoji_Component`
pub const EmojiComponent: Self = UnicodeProperty(61);
/// Binary property `Regional_Indicator`
pub const RegionalIndicator: Self = UnicodeProperty(62);
/// Binary property `Prepended_Concatenation_Mark`
pub const PrependedConcatenationMark: Self = UnicodeProperty(63);
/// Binary property `Extended_Pictographic`
pub const ExtendedPictographic: Self = UnicodeProperty(64);
/// Binary property `Basic_Emoji`
pub const BasicEmoji: Self = UnicodeProperty(65);
/// Binary property `Emoji_Keycap_Sequence`
pub const EmojiKeycapSequence: Self = UnicodeProperty(66);
/// Binary property `RGI_Emoji_Modifier_Sequence`
pub const RgiEmojiModifierSequence: Self = UnicodeProperty(67);
/// Binary property `RGI_Emoji_Flag_Sequence`
pub const RgiEmojiFlagSequence: Self = UnicodeProperty(68);
/// Binary property `RGI_Emoji_Tag_Sequence`
pub const RgiEmojiTagSequence: Self = UnicodeProperty(69);
/// Binary property `RGI_Emoji_ZWJ_Sequence`
pub const RgiEmojiZWJSequence: Self = UnicodeProperty(70);
/// Binary property `RGI_Emoji`
pub const RgiEmoji: Self = UnicodeProperty(71);
const BINARY_MAX: Self = Self::RgiEmoji;
/// Enumerated property `Bidi_Class`
pub const BidiClass: Self = UnicodeProperty(0x1000);
/// Enumerated property `Block`
pub const Block: Self = UnicodeProperty(0x1001);
/// Enumerated property `Canonical_Combining_Class`
pub const CombiningClass: Self = UnicodeProperty(0x1002);
/// Enumerated property `Decomposition_Type`
pub const DecompositionType: Self = UnicodeProperty(0x1003);
/// Enumerated property `East_Asian_Width`
pub const EastAsianWidth: Self = UnicodeProperty(0x1004);
/// Enumerated property `General_Category`
pub const GeneralCategory: Self = UnicodeProperty(0x1005);
/// Enumerated property `Joining_Group`
pub const JoiningGroup: Self = UnicodeProperty(0x1006);
/// Enumerated property `Joining_Type`
pub const JoiningType: Self = UnicodeProperty(0x1007);
/// Enumerated property `Line_Break`
pub const LineBreak: Self = UnicodeProperty(0x1008);
/// Enumerated property `Numeric_Type`
pub const NumericType: Self = UnicodeProperty(0x1009);
/// Enumerated property `Script`
pub const Script: Self = UnicodeProperty(0x100A);
/// Enumerated property `Hangul_Syllable_Type`
pub const HangulSyllableType: Self = UnicodeProperty(0x100B);
/// Enumerated property `NFD_Quick_Check`
pub const NFDQuickCheck: Self = UnicodeProperty(0x100C);
/// Enumerated property `NFKD_Quick_Check`
pub const NFKDQuickCheck: Self = UnicodeProperty(0x100D);
/// Enumerated property `NFC_Quick_Check`
pub const NFCQuickCheck: Self = UnicodeProperty(0x100E);
/// Enumerated property `NFKC_Quick_Check`
pub const NFKCQuickCheck: Self = UnicodeProperty(0x100F);
/// Enumerated property `Lead_Canonical_Combining_Class`
pub const LeadCanonicalCombiningClass: Self = UnicodeProperty(0x1010);
/// Enumerated property `Trail_Canonical_Combining_Class`
pub const TrailCanonicalCombiningClass: Self = UnicodeProperty(0x1011);
/// Enumerated property `Grapheme_Cluster_Break`
pub const GraphemeClusterBreak: Self = UnicodeProperty(0x1012);
/// Enumerated property `Sentence_Break`
pub const SentenceBreak: Self = UnicodeProperty(0x1013);
/// Enumerated property `Word_Break`
pub const WordBreak: Self = UnicodeProperty(0x1014);
/// Enumerated property `Bidi_Paired_Bracket_Type`
pub const BidiPairedBracketType: Self = UnicodeProperty(0x1015);
/// Enumerated property `Indic_Positional_Category`
pub const IndicPositionalCategory: Self = UnicodeProperty(0x1016);
/// Enumerated property `Indic_Syllabic_Category`
pub const IndicSyllabicCategory: Self = UnicodeProperty(0x1017);
/// Enumerated property `Vertical_Orientation`
pub const VerticalOrientation: Self = UnicodeProperty(0x1018);
const ENUMERATED_MAX: Self = Self::VerticalOrientation;
/// Mask property `General_Category_Mask`
pub const GeneralCategoryMask: Self = UnicodeProperty(0x2000);
/// Double property `Numeric_Value`
pub const NumericValue: Self = UnicodeProperty(0x3000);
/// String property `Age`
pub const Age: Self = UnicodeProperty(0x4000);
/// String property `Bidi_Mirroring_Glyph`
pub const BidiMirroringGlyph: Self = UnicodeProperty(0x4001);
/// String property `Case_Folding`
pub const CaseFolding: Self = UnicodeProperty(0x4002);
/// String property `ISO_Comment`
pub const ISOComment: Self = UnicodeProperty(0x4003);
/// String property `Lowercase_Mapping`
pub const LowercaseMapping: Self = UnicodeProperty(0x4004);
/// String property `Name`
pub const Name: Self = UnicodeProperty(0x4005);
/// String property `Simple_Case_Folding`
pub const SimpleCaseFolding: Self = UnicodeProperty(0x4006);
/// String property `Simple_Lowercase_Mapping`
pub const SimpleLowercaseMapping: Self = UnicodeProperty(0x4007);
/// String property `Simple_Titlecase_Mapping`
pub const SimpleTitlecaseMapping: Self = UnicodeProperty(0x4008);
/// String property `Simple_Uppercase_Mapping`
pub const SimpleUppercaseMapping: Self = UnicodeProperty(0x4009);
/// String property `Titlecase_Mapping`
pub const TitlecaseMapping: Self = UnicodeProperty(0x400A);
/// String property `Unicode_1_Name`
pub const Unicode1_Name: Self = UnicodeProperty(0x400B);
/// String property `Uppercase_Mapping`
pub const UppercaseMapping: Self = UnicodeProperty(0x400C);
/// String property `Bidi_Paired_Bracket`
pub const BidiPairedBracket: Self = UnicodeProperty(0x400D);
const STRING_MAX: Self = Self::BidiPairedBracket;
/// Misc property `Script_Extensions`
pub const ScriptExtensions: Self = UnicodeProperty(0x7000);
}
#[allow(unused)] // experimental, may be made public later
impl UnicodeProperty {
/// Given a property name (long, short, or alias), returns the corresponding [`UnicodeProperty`]
/// value for it provided it belongs to the [subset relevant for ECMA262 regexes][subset]
///
/// Returns none if the name does not match any of the names in this subset. Performs
/// strict matching of names.
///
/// If using this to implement an ECMA262-compliant regex engine, please note these caveats:
///
/// - This only returns binary and enumerated properties, as well as [`Self::ScriptExtensions`].
/// Lookup can be performed sufficiently with [`Self::load_ecma262_binary_property_unstable()`],
/// [`maps::load_general_category()`], [`maps::load_script()`] and [`script::load_script_with_extensions_unstable()`].
/// - This does not handle the `Any`, `Assigned`, or `ASCII` pseudoproperties, since they are not
/// defined as properties.
/// - `Any` can be expressed as the range `[\u{0}-\u{10FFFF}]`
/// - `Assigned` can be expressed as the inverse of the set `gc=Cn` (i.e., `\P{gc=Cn}`).
/// - `ASCII` can be expressed as the range `[\u{0}-\u{7F}]`
/// - ECMA262 regexes transparently allow `General_Category_Mask` values for `GeneralCategory`.
/// This method does not return [`Self::GeneralCategoryMask`], and instead relies on the caller to use mask-related lookup
/// functions where necessary.
/// - ECMA262 regexes allow treating `General_Category` (and `gcm`) values as binary properties,
/// e.g. you can do things like `\p{Lu}` as shortform for `\p{gc=Lu}`. This method does not do so
/// since these are property values, not properties, but you can use
/// [`GeneralCategory::get_name_to_enum_mapper()`] or [`GeneralCategoryGroup::get_name_to_enum_mapper()`]
/// to handle this.
///
///
/// [subset]: https://tc39.es/ecma262/#table-nonbinary-unicode-properties
pub fn parse_ecma262_name(name: &str) -> Option<Self> {
let prop = match name {
"General_Category" | "gc" => Self::GeneralCategory,
"Script" | "sc" => Self::Script,
"Script_Extensions" | "scx" => Self::ScriptExtensions,
"ASCII_Hex_Digit" | "AHex" => Self::AsciiHexDigit,
"Alphabetic" | "Alpha" => Self::Alphabetic,
"Bidi_Control" | "Bidi_C" => Self::BidiControl,
"Bidi_Mirrored" | "Bidi_M" => Self::BidiMirrored,
"Case_Ignorable" | "CI" => Self::CaseIgnorable,
"Cased" => Self::Cased,
"Changes_When_Casefolded" | "CWCF" => Self::ChangesWhenCasefolded,
"Changes_When_Casemapped" | "CWCM" => Self::ChangesWhenCasemapped,
"Changes_When_Lowercased" | "CWL" => Self::ChangesWhenLowercased,
"Changes_When_NFKC_Casefolded" | "CWKCF" => Self::ChangesWhenNfkcCasefolded,
"Changes_When_Titlecased" | "CWT" => Self::ChangesWhenTitlecased,
"Changes_When_Uppercased" | "CWU" => Self::ChangesWhenUppercased,
"Dash" => Self::Dash,
"Default_Ignorable_Code_Point" | "DI" => Self::DefaultIgnorableCodePoint,
"Deprecated" | "Dep" => Self::Deprecated,
"Diacritic" | "Dia" => Self::Diacritic,
"Emoji" => Self::Emoji,
"Emoji_Component" | "EComp" => Self::EmojiComponent,
"Emoji_Modifier" | "EMod" => Self::EmojiModifier,
"Emoji_Modifier_Base" | "EBase" => Self::EmojiModifierBase,
"Emoji_Presentation" | "EPres" => Self::EmojiPresentation,
"Extended_Pictographic" | "ExtPict" => Self::ExtendedPictographic,
"Extender" | "Ext" => Self::Extender,
"Grapheme_Base" | "Gr_Base" => Self::GraphemeBase,
"Grapheme_Extend" | "Gr_Ext" => Self::GraphemeExtend,
"Hex_Digit" | "Hex" => Self::HexDigit,
"IDS_Binary_Operator" | "IDSB" => Self::IdsBinaryOperator,
"IDS_Trinary_Operator" | "IDST" => Self::IdsTrinaryOperator,
"ID_Continue" | "IDC" => Self::IdContinue,
"ID_Start" | "IDS" => Self::IdStart,
"Ideographic" | "Ideo" => Self::Ideographic,
"Join_Control" | "Join_C" => Self::JoinControl,
"Logical_Order_Exception" | "LOE" => Self::LogicalOrderException,
"Lowercase" | "Lower" => Self::Lowercase,
"Math" => Self::Math,
"Noncharacter_Code_Point" | "NChar" => Self::NoncharacterCodePoint,
"Pattern_Syntax" | "Pat_Syn" => Self::PatternSyntax,
"Pattern_White_Space" | "Pat_WS" => Self::PatternWhiteSpace,
"Quotation_Mark" | "QMark" => Self::QuotationMark,
"Radical" => Self::Radical,
"Regional_Indicator" | "RI" => Self::RegionalIndicator,
"Sentence_Terminal" | "STerm" => Self::SentenceTerminal,
"Soft_Dotted" | "SD" => Self::SoftDotted,
"Terminal_Punctuation" | "Term" => Self::TerminalPunctuation,
"Unified_Ideograph" | "UIdeo" => Self::UnifiedIdeograph,
"Uppercase" | "Upper" => Self::Uppercase,
"Variation_Selector" | "VS" => Self::VariationSelector,
"White_Space" | "space" => Self::WhiteSpace,
"XID_Continue" | "XIDC" => Self::XidContinue,
"XID_Start" | "XIDS" => Self::XidStart,
_ => return None,
};
Some(prop)
}
}

View File

@ -0,0 +1,648 @@
// 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 ).
//! Data and APIs for supporting both Script and Script_Extensions property
//! values in an efficient structure.
use crate::error::PropertiesError;
use crate::props::Script;
use crate::props::ScriptULE;
use crate::provider::*;
use core::iter::FromIterator;
use core::ops::RangeInclusive;
use icu_collections::codepointinvlist::CodePointInversionList;
use icu_provider::prelude::*;
use zerovec::{ule::AsULE, ZeroSlice};
/// The number of bits at the low-end of a `ScriptWithExt` value used for
/// storing the `Script` value (or `extensions` index).
const SCRIPT_VAL_LENGTH: u16 = 10;
/// The bit mask necessary to retrieve the `Script` value (or `extensions` index)
/// from a `ScriptWithExt` value.
const SCRIPT_X_SCRIPT_VAL: u16 = (1 << SCRIPT_VAL_LENGTH) - 1;
/// An internal-use only pseudo-property that represents the values stored in
/// the trie of the special data structure [`ScriptWithExtensionsPropertyV1`].
///
/// Note: The will assume a 12-bit layout. The 2 higher order bits in positions
/// 11..10 will indicate how to deduce the Script value and Script_Extensions,
/// and the lower 10 bits 9..0 indicate either the Script value or the index
/// into the `extensions` structure.
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "datagen", derive(databake::Bake))]
#[cfg_attr(feature = "datagen", databake(path = icu_properties::script))]
#[repr(transparent)]
#[doc(hidden)]
// `ScriptWithExt` not intended as public-facing but for `ScriptWithExtensionsPropertyV1` constructor
#[allow(clippy::exhaustive_structs)] // this type is stable
pub struct ScriptWithExt(pub u16);
#[allow(missing_docs)] // These constants don't need individual documentation.
#[allow(non_upper_case_globals)]
#[doc(hidden)] // `ScriptWithExt` not intended as public-facing but for `ScriptWithExtensionsPropertyV1` constructor
impl ScriptWithExt {
pub const Unknown: ScriptWithExt = ScriptWithExt(0);
}
impl AsULE for ScriptWithExt {
type ULE = ScriptULE;
#[inline]
fn to_unaligned(self) -> Self::ULE {
Script(self.0).to_unaligned()
}
#[inline]
fn from_unaligned(unaligned: Self::ULE) -> Self {
ScriptWithExt(Script::from_unaligned(unaligned).0)
}
}
#[doc(hidden)] // `ScriptWithExt` not intended as public-facing but for `ScriptWithExtensionsPropertyV1` constructor
impl ScriptWithExt {
/// Returns whether the [`ScriptWithExt`] value has Script_Extensions and
/// also indicates a Script value of [`Script::Common`].
///
/// # Examples
///
/// ```
/// use icu::properties::script::ScriptWithExt;
///
/// assert!(ScriptWithExt(0x04FF).is_common());
/// assert!(ScriptWithExt(0x0400).is_common());
///
/// assert!(!ScriptWithExt(0x08FF).is_common());
/// assert!(!ScriptWithExt(0x0800).is_common());
///
/// assert!(!ScriptWithExt(0x0CFF).is_common());
/// assert!(!ScriptWithExt(0x0C00).is_common());
///
/// assert!(!ScriptWithExt(0xFF).is_common());
/// assert!(!ScriptWithExt(0x0).is_common());
/// ```
pub fn is_common(&self) -> bool {
self.0 >> SCRIPT_VAL_LENGTH == 1
}
/// Returns whether the [`ScriptWithExt`] value has Script_Extensions and
/// also indicates a Script value of [`Script::Inherited`].
///
/// # Examples
///
/// ```
/// use icu::properties::script::ScriptWithExt;
///
/// assert!(!ScriptWithExt(0x04FF).is_inherited());
/// assert!(!ScriptWithExt(0x0400).is_inherited());
///
/// assert!(ScriptWithExt(0x08FF).is_inherited());
/// assert!(ScriptWithExt(0x0800).is_inherited());
///
/// assert!(!ScriptWithExt(0x0CFF).is_inherited());
/// assert!(!ScriptWithExt(0x0C00).is_inherited());
///
/// assert!(!ScriptWithExt(0xFF).is_inherited());
/// assert!(!ScriptWithExt(0x0).is_inherited());
/// ```
pub fn is_inherited(&self) -> bool {
self.0 >> SCRIPT_VAL_LENGTH == 2
}
/// Returns whether the [`ScriptWithExt`] value has Script_Extensions and
/// also indicates that the Script value is neither [`Script::Common`] nor
/// [`Script::Inherited`].
///
/// # Examples
///
/// ```
/// use icu::properties::script::ScriptWithExt;
///
/// assert!(!ScriptWithExt(0x04FF).is_other());
/// assert!(!ScriptWithExt(0x0400).is_other());
///
/// assert!(!ScriptWithExt(0x08FF).is_other());
/// assert!(!ScriptWithExt(0x0800).is_other());
///
/// assert!(ScriptWithExt(0x0CFF).is_other());
/// assert!(ScriptWithExt(0x0C00).is_other());
///
/// assert!(!ScriptWithExt(0xFF).is_other());
/// assert!(!ScriptWithExt(0x0).is_other());
/// ```
pub fn is_other(&self) -> bool {
self.0 >> SCRIPT_VAL_LENGTH == 3
}
/// Returns whether the [`ScriptWithExt`] value has Script_Extensions.
///
/// # Examples
///
/// ```
/// use icu::properties::script::ScriptWithExt;
///
/// assert!(ScriptWithExt(0x04FF).has_extensions());
/// assert!(ScriptWithExt(0x0400).has_extensions());
///
/// assert!(ScriptWithExt(0x08FF).has_extensions());
/// assert!(ScriptWithExt(0x0800).has_extensions());
///
/// assert!(ScriptWithExt(0x0CFF).has_extensions());
/// assert!(ScriptWithExt(0x0C00).has_extensions());
///
/// assert!(!ScriptWithExt(0xFF).has_extensions());
/// assert!(!ScriptWithExt(0x0).has_extensions());
/// ```
pub fn has_extensions(&self) -> bool {
let high_order_bits = self.0 >> SCRIPT_VAL_LENGTH;
high_order_bits > 0
}
}
impl From<ScriptWithExt> for u32 {
fn from(swe: ScriptWithExt) -> Self {
swe.0 as u32
}
}
impl From<ScriptWithExt> for Script {
fn from(swe: ScriptWithExt) -> Self {
Script(swe.0)
}
}
/// A struct that wraps a [`Script`] array, such as in the return value for
/// [`get_script_extensions_val()`](ScriptWithExtensionsBorrowed::get_script_extensions_val).
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub struct ScriptExtensionsSet<'a> {
values: &'a ZeroSlice<Script>,
}
impl ScriptExtensionsSet<'_> {
/// Returns whether this set contains the given script.
///
/// # Example
///
/// ```
/// use icu::properties::{script, Script};
/// let swe = script::script_with_extensions();
///
/// assert!(swe
/// .get_script_extensions_val(0x11303) // GRANTHA SIGN VISARGA
/// .contains(&Script::Grantha));
/// ```
pub fn contains(&self, x: &Script) -> bool {
ZeroSlice::binary_search(self.values, x).is_ok()
}
/// Gets an iterator over the elements.
///
/// # Example
///
/// ```
/// use icu::properties::{script, Script};
/// let swe = script::script_with_extensions();
///
/// assert_eq!(
/// swe.get_script_extensions_val('௫' as u32) // U+0BEB TAMIL DIGIT FIVE
/// .iter()
/// .collect::<Vec<Script>>(),
/// vec![Script::Tamil, Script::Grantha]
/// );
/// ```
pub fn iter(&self) -> impl DoubleEndedIterator<Item = Script> + '_ {
ZeroSlice::iter(self.values)
}
/// For accessing this set as an array instead of an iterator
/// only needed for the FFI bindings; shouldn't be used directly from Rust
#[doc(hidden)]
pub fn array_len(&self) -> usize {
self.values.len()
}
/// For accessing this set as an array instead of an iterator
/// only needed for the FFI bindings; shouldn't be used directly from Rust
#[doc(hidden)]
pub fn array_get(&self, index: usize) -> Option<Script> {
self.values.get(index)
}
}
/// A wrapper around script extensions data. Can be obtained via [`load_script_with_extensions_unstable()`] and
/// related getters.
///
/// Most useful methods are on [`ScriptWithExtensionsBorrowed`] obtained by calling [`ScriptWithExtensions::as_borrowed()`]
#[derive(Debug)]
pub struct ScriptWithExtensions {
data: DataPayload<ScriptWithExtensionsPropertyV1Marker>,
}
/// A borrowed wrapper around script extension data, returned by
/// [`ScriptWithExtensions::as_borrowed()`]. More efficient to query.
#[derive(Clone, Copy, Debug)]
pub struct ScriptWithExtensionsBorrowed<'a> {
data: &'a ScriptWithExtensionsPropertyV1<'a>,
}
impl ScriptWithExtensions {
/// Construct a borrowed version of this type that can be queried.
///
/// This avoids a potential small underlying cost per API call (ex: `contains()`) by consolidating it
/// up front.
#[inline]
pub fn as_borrowed(&self) -> ScriptWithExtensionsBorrowed<'_> {
ScriptWithExtensionsBorrowed {
data: self.data.get(),
}
}
/// Construct a new one from loaded data
///
/// Typically it is preferable to use getters like [`load_script_with_extensions_unstable()`] instead
pub fn from_data(data: DataPayload<ScriptWithExtensionsPropertyV1Marker>) -> Self {
Self { data }
}
}
impl<'a> ScriptWithExtensionsBorrowed<'a> {
/// Returns the `Script` property value for this code point.
///
/// # Examples
///
/// ```
/// use icu::properties::{script, Script};
///
/// let swe = script::script_with_extensions();
///
/// // U+0640 ARABIC TATWEEL
/// assert_eq!(swe.get_script_val(0x0640), Script::Common); // main Script value
/// assert_ne!(swe.get_script_val(0x0640), Script::Arabic);
/// assert_ne!(swe.get_script_val(0x0640), Script::Syriac);
/// assert_ne!(swe.get_script_val(0x0640), Script::Thaana);
///
/// // U+0650 ARABIC KASRA
/// assert_eq!(swe.get_script_val(0x0650), Script::Inherited); // main Script value
/// assert_ne!(swe.get_script_val(0x0650), Script::Arabic);
/// assert_ne!(swe.get_script_val(0x0650), Script::Syriac);
/// assert_ne!(swe.get_script_val(0x0650), Script::Thaana);
///
/// // U+0660 ARABIC-INDIC DIGIT ZERO
/// assert_ne!(swe.get_script_val(0x0660), Script::Common);
/// assert_eq!(swe.get_script_val(0x0660), Script::Arabic); // main Script value
/// assert_ne!(swe.get_script_val(0x0660), Script::Syriac);
/// assert_ne!(swe.get_script_val(0x0660), Script::Thaana);
///
/// // U+FDF2 ARABIC LIGATURE ALLAH ISOLATED FORM
/// assert_ne!(swe.get_script_val(0xFDF2), Script::Common);
/// assert_eq!(swe.get_script_val(0xFDF2), Script::Arabic); // main Script value
/// assert_ne!(swe.get_script_val(0xFDF2), Script::Syriac);
/// assert_ne!(swe.get_script_val(0xFDF2), Script::Thaana);
/// ```
pub fn get_script_val(self, code_point: u32) -> Script {
let sc_with_ext = self.data.trie.get32(code_point);
if sc_with_ext.is_other() {
let ext_idx = sc_with_ext.0 & SCRIPT_X_SCRIPT_VAL;
let scx_val = self.data.extensions.get(ext_idx as usize);
let scx_first_sc = scx_val.and_then(|scx| scx.get(0));
let default_sc_val = Script::Unknown;
scx_first_sc.unwrap_or(default_sc_val)
} else if sc_with_ext.is_common() {
Script::Common
} else if sc_with_ext.is_inherited() {
Script::Inherited
} else {
let script_val = sc_with_ext.0;
Script(script_val)
}
}
// Returns the Script_Extensions value for a code_point when the trie value
// is already known.
// This private helper method exists to prevent code duplication in callers like
// `get_script_extensions_val`, `get_script_extensions_set`, and `has_script`.
fn get_scx_val_using_trie_val(
self,
sc_with_ext_ule: &'a <ScriptWithExt as AsULE>::ULE,
) -> &'a ZeroSlice<Script> {
let sc_with_ext = ScriptWithExt::from_unaligned(*sc_with_ext_ule);
if sc_with_ext.is_other() {
let ext_idx = sc_with_ext.0 & SCRIPT_X_SCRIPT_VAL;
let ext_subarray = self.data.extensions.get(ext_idx as usize);
// In the OTHER case, where the 2 higher-order bits of the
// `ScriptWithExt` value in the trie doesn't indicate the Script value,
// the Script value is copied/inserted into the first position of the
// `extensions` array. So we must remove it to return the actual scx array val.
let scx_slice = ext_subarray
.and_then(|zslice| zslice.as_ule_slice().get(1..))
.unwrap_or_default();
ZeroSlice::from_ule_slice(scx_slice)
} else if sc_with_ext.is_common() || sc_with_ext.is_inherited() {
let ext_idx = sc_with_ext.0 & SCRIPT_X_SCRIPT_VAL;
let scx_val = self.data.extensions.get(ext_idx as usize);
scx_val.unwrap_or_default()
} else {
// Note: `Script` and `ScriptWithExt` are both represented as the same
// u16 value when the `ScriptWithExt` has no higher-order bits set.
let script_ule_slice = core::slice::from_ref(sc_with_ext_ule);
ZeroSlice::from_ule_slice(script_ule_slice)
}
}
/// Return the `Script_Extensions` property value for this code point.
///
/// If `code_point` has Script_Extensions, then return the Script codes in
/// the Script_Extensions. In this case, the Script property value
/// (normally Common or Inherited) is not included in the [`ScriptExtensionsSet`].
///
/// If c does not have Script_Extensions, then the one Script code is put
/// into the [`ScriptExtensionsSet`] and also returned.
///
/// If c is not a valid code point, then return an empty [`ScriptExtensionsSet`].
///
/// # Examples
///
/// ```
/// use icu::properties::{script, Script};
///
/// let swe = script::script_with_extensions();
///
/// assert_eq!(
/// swe.get_script_extensions_val('𐓐' as u32) // U+104D0 OSAGE CAPITAL LETTER KHA
/// .iter()
/// .collect::<Vec<Script>>(),
/// vec![Script::Osage]
/// );
/// assert_eq!(
/// swe.get_script_extensions_val('🥳' as u32) // U+1F973 FACE WITH PARTY HORN AND PARTY HAT
/// .iter()
/// .collect::<Vec<Script>>(),
/// vec![Script::Common]
/// );
/// assert_eq!(
/// swe.get_script_extensions_val(0x200D) // ZERO WIDTH JOINER
/// .iter()
/// .collect::<Vec<Script>>(),
/// vec![Script::Inherited]
/// );
/// assert_eq!(
/// swe.get_script_extensions_val('௫' as u32) // U+0BEB TAMIL DIGIT FIVE
/// .iter()
/// .collect::<Vec<Script>>(),
/// vec![Script::Tamil, Script::Grantha]
/// );
/// ```
pub fn get_script_extensions_val(self, code_point: u32) -> ScriptExtensionsSet<'a> {
let sc_with_ext_ule = self.data.trie.get32_ule(code_point);
ScriptExtensionsSet {
values: match sc_with_ext_ule {
Some(ule_ref) => self.get_scx_val_using_trie_val(ule_ref),
None => ZeroSlice::from_ule_slice(&[]),
},
}
}
/// Returns whether `script` is contained in the Script_Extensions
/// property value if the code_point has Script_Extensions, otherwise
/// if the code point does not have Script_Extensions then returns
/// whether the Script property value matches.
///
/// Some characters are commonly used in multiple scripts. For more information,
/// see UAX #24: <http://www.unicode.org/reports/tr24/>.
///
/// # Examples
///
/// ```
/// use icu::properties::{script, Script};
///
/// let swe = script::script_with_extensions();
///
/// // U+0650 ARABIC KASRA
/// assert!(!swe.has_script(0x0650, Script::Inherited)); // main Script value
/// assert!(swe.has_script(0x0650, Script::Arabic));
/// assert!(swe.has_script(0x0650, Script::Syriac));
/// assert!(!swe.has_script(0x0650, Script::Thaana));
///
/// // U+0660 ARABIC-INDIC DIGIT ZERO
/// assert!(!swe.has_script(0x0660, Script::Common)); // main Script value
/// assert!(swe.has_script(0x0660, Script::Arabic));
/// assert!(!swe.has_script(0x0660, Script::Syriac));
/// assert!(swe.has_script(0x0660, Script::Thaana));
///
/// // U+FDF2 ARABIC LIGATURE ALLAH ISOLATED FORM
/// assert!(!swe.has_script(0xFDF2, Script::Common));
/// assert!(swe.has_script(0xFDF2, Script::Arabic)); // main Script value
/// assert!(!swe.has_script(0xFDF2, Script::Syriac));
/// assert!(swe.has_script(0xFDF2, Script::Thaana));
/// ```
pub fn has_script(self, code_point: u32, script: Script) -> bool {
let sc_with_ext_ule = if let Some(scwe_ule) = self.data.trie.get32_ule(code_point) {
scwe_ule
} else {
return false;
};
let sc_with_ext = <ScriptWithExt as AsULE>::from_unaligned(*sc_with_ext_ule);
if !sc_with_ext.has_extensions() {
let script_val = sc_with_ext.0;
script == Script(script_val)
} else {
let scx_val = self.get_scx_val_using_trie_val(sc_with_ext_ule);
let script_find = scx_val.iter().find(|&sc| sc == script);
script_find.is_some()
}
}
/// Returns all of the matching `CodePointMapRange`s for the given [`Script`]
/// in which `has_script` will return true for all of the contained code points.
///
/// # Examples
///
/// ```
/// use icu::properties::{script, Script};
///
/// let swe = script::script_with_extensions();
///
/// let syriac_script_extensions_ranges = swe.get_script_extensions_ranges(Script::Syriac);
///
/// let exp_ranges = vec![
/// 0x060C..=0x060C, // ARABIC COMMA
/// 0x061B..=0x061C, // ARABIC SEMICOLON, ARABIC LETTER MARK
/// 0x061F..=0x061F, // ARABIC QUESTION MARK
/// 0x0640..=0x0640, // ARABIC TATWEEL
/// 0x064B..=0x0655, // ARABIC FATHATAN..ARABIC HAMZA BELOW
/// 0x0670..=0x0670, // ARABIC LETTER SUPERSCRIPT ALEF
/// 0x0700..=0x070D, // Syriac block begins at U+0700
/// 0x070F..=0x074A, // Syriac block
/// 0x074D..=0x074F, // Syriac block ends at U+074F
/// 0x0860..=0x086A, // Syriac Supplement block is U+0860..=U+086F
/// 0x1DF8..=0x1DF8, // U+1DF8 COMBINING DOT ABOVE LEFT
/// 0x1DFA..=0x1DFA, // U+1DFA COMBINING DOT BELOW LEFT
/// ];
/// let mut exp_ranges_iter = exp_ranges.iter();
///
/// for act_range in syriac_script_extensions_ranges {
/// let exp_range = exp_ranges_iter
/// .next()
/// .expect("There are too many ranges returned by get_script_extensions_ranges()");
/// assert_eq!(act_range.start(), exp_range.start());
/// assert_eq!(act_range.end(), exp_range.end());
/// }
/// assert!(
/// exp_ranges_iter.next().is_none(),
/// "There are too few ranges returned by get_script_extensions_ranges()"
/// );
/// ```
pub fn get_script_extensions_ranges(
self,
script: Script,
) -> impl Iterator<Item = RangeInclusive<u32>> + 'a {
self.data
.trie
.iter_ranges_mapped(move |value| {
let sc_with_ext = ScriptWithExt(value.0);
if sc_with_ext.has_extensions() {
self.get_scx_val_using_trie_val(&sc_with_ext.to_unaligned())
.iter()
.any(|sc| sc == script)
} else {
script == sc_with_ext.into()
}
})
.filter(|v| v.value)
.map(|v| v.range)
}
/// Returns a [`CodePointInversionList`] for the given [`Script`] which represents all
/// code points for which `has_script` will return true.
///
/// # Examples
///
/// ```
/// use icu::properties::{script, Script};
///
/// let swe = script::script_with_extensions();
///
/// let syriac = swe.get_script_extensions_set(Script::Syriac);
///
/// assert!(!syriac.contains32(0x061E)); // ARABIC TRIPLE DOT PUNCTUATION MARK
/// assert!(syriac.contains32(0x061F)); // ARABIC QUESTION MARK
/// assert!(!syriac.contains32(0x0620)); // ARABIC LETTER KASHMIRI YEH
///
/// assert!(syriac.contains32(0x0700)); // SYRIAC END OF PARAGRAPH
/// assert!(syriac.contains32(0x074A)); // SYRIAC BARREKH
/// assert!(!syriac.contains32(0x074B)); // unassigned
/// assert!(syriac.contains32(0x074F)); // SYRIAC LETTER SOGDIAN FE
/// assert!(!syriac.contains32(0x0750)); // ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW
///
/// assert!(syriac.contains32(0x1DF8)); // COMBINING DOT ABOVE LEFT
/// assert!(!syriac.contains32(0x1DF9)); // COMBINING WIDE INVERTED BRIDGE BELOW
/// assert!(syriac.contains32(0x1DFA)); // COMBINING DOT BELOW LEFT
/// assert!(!syriac.contains32(0x1DFB)); // COMBINING DELETION MARK
/// ```
pub fn get_script_extensions_set(self, script: Script) -> CodePointInversionList<'a> {
CodePointInversionList::from_iter(self.get_script_extensions_ranges(script))
}
}
impl ScriptWithExtensionsBorrowed<'static> {
/// Cheaply converts a `ScriptWithExtensionsBorrowed<'static>` into a `ScriptWithExtensions`.
pub const fn static_to_owned(self) -> ScriptWithExtensions {
ScriptWithExtensions {
data: DataPayload::from_static_ref(self.data),
}
}
}
/// Returns a [`ScriptWithExtensionsBorrowed`] struct that represents the data for the Script
/// and Script_Extensions properties.
///
/// ✨ *Enabled with the `compiled_data` Cargo feature.*
///
/// [📚 Help choosing a constructor](icu_provider::constructors)
///
/// # Examples
///
/// ```
/// use icu::properties::{script, Script};
/// let swe = script::script_with_extensions();
///
/// // get the `Script` property value
/// assert_eq!(swe.get_script_val(0x0640), Script::Common); // U+0640 ARABIC TATWEEL
/// assert_eq!(swe.get_script_val(0x0650), Script::Inherited); // U+0650 ARABIC KASRA
/// assert_eq!(swe.get_script_val(0x0660), Script::Arabic); // // U+0660 ARABIC-INDIC DIGIT ZERO
/// assert_eq!(swe.get_script_val(0xFDF2), Script::Arabic); // U+FDF2 ARABIC LIGATURE ALLAH ISOLATED FORM
///
/// // get the `Script_Extensions` property value
/// assert_eq!(
/// swe.get_script_extensions_val(0x0640) // U+0640 ARABIC TATWEEL
/// .iter().collect::<Vec<Script>>(),
/// vec![Script::Arabic, Script::Syriac, Script::Mandaic, Script::Manichaean,
/// Script::PsalterPahlavi, Script::Adlam, Script::HanifiRohingya, Script::Sogdian,
/// Script::OldUyghur]
/// );
/// assert_eq!(
/// swe.get_script_extensions_val('🥳' as u32) // U+1F973 FACE WITH PARTY HORN AND PARTY HAT
/// .iter().collect::<Vec<Script>>(),
/// vec![Script::Common]
/// );
/// assert_eq!(
/// swe.get_script_extensions_val(0x200D) // ZERO WIDTH JOINER
/// .iter().collect::<Vec<Script>>(),
/// vec![Script::Inherited]
/// );
/// assert_eq!(
/// swe.get_script_extensions_val('௫' as u32) // U+0BEB TAMIL DIGIT FIVE
/// .iter().collect::<Vec<Script>>(),
/// vec![Script::Tamil, Script::Grantha]
/// );
///
/// // check containment of a `Script` value in the `Script_Extensions` value
/// // U+0650 ARABIC KASRA
/// assert!(!swe.has_script(0x0650, Script::Inherited)); // main Script value
/// assert!(swe.has_script(0x0650, Script::Arabic));
/// assert!(swe.has_script(0x0650, Script::Syriac));
/// assert!(!swe.has_script(0x0650, Script::Thaana));
///
/// // get a `CodePointInversionList` for when `Script` value is contained in `Script_Extensions` value
/// let syriac = swe.get_script_extensions_set(Script::Syriac);
/// assert!(syriac.contains32(0x0650)); // ARABIC KASRA
/// assert!(!syriac.contains32(0x0660)); // ARABIC-INDIC DIGIT ZERO
/// assert!(!syriac.contains32(0xFDF2)); // ARABIC LIGATURE ALLAH ISOLATED FORM
/// assert!(syriac.contains32(0x0700)); // SYRIAC END OF PARAGRAPH
/// assert!(syriac.contains32(0x074A)); // SYRIAC BARREKH
/// ```
#[cfg(feature = "compiled_data")]
pub const fn script_with_extensions() -> ScriptWithExtensionsBorrowed<'static> {
ScriptWithExtensionsBorrowed {
data: crate::provider::Baked::SINGLETON_PROPS_SCX_V1,
}
}
icu_provider::gen_any_buffer_data_constructors!(
locale: skip,
options: skip,
result: Result<ScriptWithExtensions, PropertiesError>,
#[cfg(skip)]
functions: [
script_with_extensions,
load_script_with_extensions_with_any_provider,
load_script_with_extensions_with_buffer_provider,
load_script_with_extensions_unstable,
]
);
#[doc = icu_provider::gen_any_buffer_unstable_docs!(UNSTABLE, script_with_extensions)]
pub fn load_script_with_extensions_unstable(
provider: &(impl DataProvider<ScriptWithExtensionsPropertyV1Marker> + ?Sized),
) -> Result<ScriptWithExtensions, PropertiesError> {
Ok(ScriptWithExtensions::from_data(
provider
.load(Default::default())
.and_then(DataResponse::take_payload)?,
))
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,248 @@
// 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 crate::provider::bidi_data::{
CheckedBidiPairedBracketType, MirroredPairedBracketData, MirroredPairedBracketDataTryFromError,
};
use crate::script::ScriptWithExt;
use crate::{
BidiClass, CanonicalCombiningClass, EastAsianWidth, GeneralCategory, GeneralCategoryGroup,
GraphemeClusterBreak, IndicSyllabicCategory, LineBreak, Script, SentenceBreak, WordBreak,
};
use core::convert::TryInto;
use core::num::TryFromIntError;
use zerovec::ule::{AsULE, RawBytesULE};
use icu_collections::codepointtrie::TrieValue;
use core::convert::TryFrom;
impl TrieValue for CanonicalCombiningClass {
type TryFromU32Error = TryFromIntError;
fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
u8::try_from(i).map(Self)
}
fn to_u32(self) -> u32 {
u32::from(self.0)
}
}
impl TrieValue for BidiClass {
type TryFromU32Error = TryFromIntError;
fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
u8::try_from(i).map(Self)
}
fn to_u32(self) -> u32 {
u32::from(self.0)
}
}
impl TrieValue for GeneralCategory {
type TryFromU32Error = &'static str;
fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
// If the u32 is out of range, fall back to u8::MAX, which is out of range of the GeneralCategory enum.
GeneralCategory::new_from_u8(i.try_into().unwrap_or(u8::MAX))
.ok_or("Cannot parse GeneralCategory from integer")
}
fn to_u32(self) -> u32 {
u32::from(self as u8)
}
}
impl TrieValue for Script {
type TryFromU32Error = TryFromIntError;
fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
u16::try_from(i).map(Script)
}
fn to_u32(self) -> u32 {
u32::from(self.0)
}
}
impl TrieValue for ScriptWithExt {
type TryFromU32Error = TryFromIntError;
fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
u16::try_from(i).map(Self)
}
fn to_u32(self) -> u32 {
u32::from(self.0)
}
}
impl TrieValue for EastAsianWidth {
type TryFromU32Error = TryFromIntError;
fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
u8::try_from(i).map(Self)
}
fn to_u32(self) -> u32 {
u32::from(self.0)
}
}
impl TrieValue for LineBreak {
type TryFromU32Error = TryFromIntError;
fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
u8::try_from(i).map(Self)
}
fn to_u32(self) -> u32 {
u32::from(self.0)
}
}
impl TrieValue for GraphemeClusterBreak {
type TryFromU32Error = TryFromIntError;
fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
u8::try_from(i).map(Self)
}
fn to_u32(self) -> u32 {
u32::from(self.0)
}
}
impl TrieValue for WordBreak {
type TryFromU32Error = TryFromIntError;
fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
u8::try_from(i).map(Self)
}
fn to_u32(self) -> u32 {
u32::from(self.0)
}
}
impl TrieValue for SentenceBreak {
type TryFromU32Error = TryFromIntError;
fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
u8::try_from(i).map(Self)
}
fn to_u32(self) -> u32 {
u32::from(self.0)
}
}
impl TrieValue for CheckedBidiPairedBracketType {
type TryFromU32Error = TryFromIntError;
fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
Ok(match i {
1 => CheckedBidiPairedBracketType::Open,
2 => CheckedBidiPairedBracketType::Close,
_ => CheckedBidiPairedBracketType::None,
})
}
}
impl TrieValue for IndicSyllabicCategory {
type TryFromU32Error = TryFromIntError;
fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
u8::try_from(i).map(Self)
}
fn to_u32(self) -> u32 {
u32::from(self.0)
}
}
// GCG is not used inside tries, but it is used in the name lookup type, and we want
// to squeeze it into a u16 for storage. Its named mask values are specced so we can
// do this in code.
//
// This is done by:
// - Single-value masks are translated to their corresponding GeneralCategory values
// - we know all of the multi-value masks and we give them special values
// - Anything else goes to 0xFF00, though this code path shouldn't be hit unless working with malformed icuexportdata
//
// In the reverse direction, unknown values go to the empty mask, but this codepath should not be hit except
// with malformed ICU4X generated data.
impl AsULE for GeneralCategoryGroup {
type ULE = RawBytesULE<2>;
fn to_unaligned(self) -> Self::ULE {
let value = gcg_to_packed_u16(self);
value.to_unaligned()
}
fn from_unaligned(ule: Self::ULE) -> Self {
let value = ule.as_unsigned_int();
packed_u16_to_gcg(value)
}
}
fn packed_u16_to_gcg(value: u16) -> GeneralCategoryGroup {
match value {
0xFFFF => GeneralCategoryGroup::CasedLetter,
0xFFFE => GeneralCategoryGroup::Letter,
0xFFFD => GeneralCategoryGroup::Mark,
0xFFFC => GeneralCategoryGroup::Number,
0xFFFB => GeneralCategoryGroup::Separator,
0xFFFA => GeneralCategoryGroup::Other,
0xFFF9 => GeneralCategoryGroup::Punctuation,
0xFFF8 => GeneralCategoryGroup::Symbol,
v if v < 32 => GeneralCategory::new_from_u8(v as u8)
.map(|gc| gc.into())
.unwrap_or(GeneralCategoryGroup(0)),
// unknown values produce an empty mask
_ => GeneralCategoryGroup(0),
}
}
fn gcg_to_packed_u16(gcg: GeneralCategoryGroup) -> u16 {
// if it's a single property, translate to that property
if gcg.0.count_ones() == 1 {
// inverse operation of a bitshift
gcg.0.trailing_zeros() as u16
} else {
match gcg {
GeneralCategoryGroup::CasedLetter => 0xFFFF,
GeneralCategoryGroup::Letter => 0xFFFE,
GeneralCategoryGroup::Mark => 0xFFFD,
GeneralCategoryGroup::Number => 0xFFFC,
GeneralCategoryGroup::Separator => 0xFFFB,
GeneralCategoryGroup::Other => 0xFFFA,
GeneralCategoryGroup::Punctuation => 0xFFF9,
GeneralCategoryGroup::Symbol => 0xFFF8,
_ => 0xFF00, // random sentinel value
}
}
}
impl TrieValue for GeneralCategoryGroup {
type TryFromU32Error = TryFromIntError;
fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
// Even though we're dealing with u32s here, TrieValue is about converting
// trie storage types to the actual type. This type will always be a packed u16
// in our case since the names map upcasts from u16
u16::try_from(i).map(packed_u16_to_gcg)
}
fn to_u32(self) -> u32 {
u32::from(gcg_to_packed_u16(self))
}
}
impl TrieValue for MirroredPairedBracketData {
type TryFromU32Error = MirroredPairedBracketDataTryFromError;
fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
Self::try_from(i)
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,33 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package]
edition = "2021"
rust-version = "1.67"
name = "icu_properties_data"
version = "1.4.0"
authors = ["The ICU4X Project Developers"]
include = [
"data/**/*",
"src/**/*",
"examples/**/*",
"benches/**/*",
"tests/**/*",
"Cargo.toml",
"LICENSE",
"README.md",
]
description = "Data for the icu_properties crate"
homepage = "https://icu4x.unicode.org"
readme = "README.md"
categories = ["internationalization"]
license-file = "LICENSE"
repository = "https://github.com/unicode-org/icu4x"

View File

@ -0,0 +1,44 @@
UNICODE LICENSE V3
COPYRIGHT AND PERMISSION NOTICE
Copyright © 2020-2023 Unicode, Inc.
NOTICE TO USER: Carefully read the following legal agreement. BY
DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
Permission is hereby granted, free of charge, to any person obtaining a
copy of data files and any associated documentation (the "Data Files") or
software and any associated documentation (the "Software") to deal in the
Data Files or Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, and/or sell
copies of the Data Files or Software, and to permit persons to whom the
Data Files or Software are furnished to do so, provided that either (a)
this copyright and permission notice appear with all copies of the Data
Files or Software, or (b) this copyright and permission notice appear in
associated Documentation.
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
THIRD PARTY RIGHTS.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
FILES OR SOFTWARE.
Except as contained in this notice, the name of a copyright holder shall
not be used in advertising or otherwise to promote the sale, use or other
dealings in these Data Files or Software without prior written
authorization of the copyright holder.
Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.

View File

@ -0,0 +1,11 @@
# icu_properties_data [![crates.io](https://img.shields.io/crates/v/icu_properties_data)](https://crates.io/crates/icu_properties_data)
<!-- cargo-rdme start -->
Data for the icu_properties crate
<!-- cargo-rdme end -->
## More Information
For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).

View File

@ -0,0 +1,596 @@
// @generated
/// Marks a type as a data provider. You can then use macros like
/// `impl_core_helloworld_v1` to add implementations.
///
/// ```ignore
/// struct MyProvider;
/// const _: () = {
/// include!("path/to/generated/macros.rs");
/// make_provider!(MyProvider);
/// impl_core_helloworld_v1!(MyProvider);
/// }
/// ```
#[doc(hidden)]
#[macro_export]
macro_rules! __make_provider {
($ name : ty) => {
#[clippy::msrv = "1.67"]
impl $name {
#[doc(hidden)]
#[allow(dead_code)]
pub const MUST_USE_MAKE_PROVIDER_MACRO: () = ();
}
};
}
#[doc(inline)]
pub use __make_provider as make_provider;
#[macro_use]
#[path = "macros/propnames_from_gcb_v1.rs.data"]
mod propnames_from_gcb_v1;
#[doc(inline)]
pub use __impl_propnames_from_gcb_v1 as impl_propnames_from_gcb_v1;
#[macro_use]
#[path = "macros/propnames_from_insc_v1.rs.data"]
mod propnames_from_insc_v1;
#[doc(inline)]
pub use __impl_propnames_from_insc_v1 as impl_propnames_from_insc_v1;
#[macro_use]
#[path = "macros/propnames_from_sb_v1.rs.data"]
mod propnames_from_sb_v1;
#[doc(inline)]
pub use __impl_propnames_from_sb_v1 as impl_propnames_from_sb_v1;
#[macro_use]
#[path = "macros/propnames_from_wb_v1.rs.data"]
mod propnames_from_wb_v1;
#[doc(inline)]
pub use __impl_propnames_from_wb_v1 as impl_propnames_from_wb_v1;
#[macro_use]
#[path = "macros/propnames_from_bc_v1.rs.data"]
mod propnames_from_bc_v1;
#[doc(inline)]
pub use __impl_propnames_from_bc_v1 as impl_propnames_from_bc_v1;
#[macro_use]
#[path = "macros/propnames_from_ccc_v1.rs.data"]
mod propnames_from_ccc_v1;
#[doc(inline)]
pub use __impl_propnames_from_ccc_v1 as impl_propnames_from_ccc_v1;
#[macro_use]
#[path = "macros/propnames_from_ea_v1.rs.data"]
mod propnames_from_ea_v1;
#[doc(inline)]
pub use __impl_propnames_from_ea_v1 as impl_propnames_from_ea_v1;
#[macro_use]
#[path = "macros/propnames_from_gc_v1.rs.data"]
mod propnames_from_gc_v1;
#[doc(inline)]
pub use __impl_propnames_from_gc_v1 as impl_propnames_from_gc_v1;
#[macro_use]
#[path = "macros/propnames_from_gcm_v1.rs.data"]
mod propnames_from_gcm_v1;
#[doc(inline)]
pub use __impl_propnames_from_gcm_v1 as impl_propnames_from_gcm_v1;
#[macro_use]
#[path = "macros/propnames_from_lb_v1.rs.data"]
mod propnames_from_lb_v1;
#[doc(inline)]
pub use __impl_propnames_from_lb_v1 as impl_propnames_from_lb_v1;
#[macro_use]
#[path = "macros/propnames_from_sc_v1.rs.data"]
mod propnames_from_sc_v1;
#[doc(inline)]
pub use __impl_propnames_from_sc_v1 as impl_propnames_from_sc_v1;
#[macro_use]
#[path = "macros/propnames_to_long_linear_gcb_v1.rs.data"]
mod propnames_to_long_linear_gcb_v1;
#[doc(inline)]
pub use __impl_propnames_to_long_linear_gcb_v1 as impl_propnames_to_long_linear_gcb_v1;
#[macro_use]
#[path = "macros/propnames_to_long_linear_insc_v1.rs.data"]
mod propnames_to_long_linear_insc_v1;
#[doc(inline)]
pub use __impl_propnames_to_long_linear_insc_v1 as impl_propnames_to_long_linear_insc_v1;
#[macro_use]
#[path = "macros/propnames_to_long_linear_sb_v1.rs.data"]
mod propnames_to_long_linear_sb_v1;
#[doc(inline)]
pub use __impl_propnames_to_long_linear_sb_v1 as impl_propnames_to_long_linear_sb_v1;
#[macro_use]
#[path = "macros/propnames_to_long_linear_wb_v1.rs.data"]
mod propnames_to_long_linear_wb_v1;
#[doc(inline)]
pub use __impl_propnames_to_long_linear_wb_v1 as impl_propnames_to_long_linear_wb_v1;
#[macro_use]
#[path = "macros/propnames_to_long_linear_bc_v1.rs.data"]
mod propnames_to_long_linear_bc_v1;
#[doc(inline)]
pub use __impl_propnames_to_long_linear_bc_v1 as impl_propnames_to_long_linear_bc_v1;
#[macro_use]
#[path = "macros/propnames_to_long_linear_ea_v1.rs.data"]
mod propnames_to_long_linear_ea_v1;
#[doc(inline)]
pub use __impl_propnames_to_long_linear_ea_v1 as impl_propnames_to_long_linear_ea_v1;
#[macro_use]
#[path = "macros/propnames_to_long_linear_gc_v1.rs.data"]
mod propnames_to_long_linear_gc_v1;
#[doc(inline)]
pub use __impl_propnames_to_long_linear_gc_v1 as impl_propnames_to_long_linear_gc_v1;
#[macro_use]
#[path = "macros/propnames_to_long_linear_lb_v1.rs.data"]
mod propnames_to_long_linear_lb_v1;
#[doc(inline)]
pub use __impl_propnames_to_long_linear_lb_v1 as impl_propnames_to_long_linear_lb_v1;
#[macro_use]
#[path = "macros/propnames_to_long_linear_sc_v1.rs.data"]
mod propnames_to_long_linear_sc_v1;
#[doc(inline)]
pub use __impl_propnames_to_long_linear_sc_v1 as impl_propnames_to_long_linear_sc_v1;
#[macro_use]
#[path = "macros/propnames_to_long_sparse_ccc_v1.rs.data"]
mod propnames_to_long_sparse_ccc_v1;
#[doc(inline)]
pub use __impl_propnames_to_long_sparse_ccc_v1 as impl_propnames_to_long_sparse_ccc_v1;
#[macro_use]
#[path = "macros/propnames_to_short_linear_gcb_v1.rs.data"]
mod propnames_to_short_linear_gcb_v1;
#[doc(inline)]
pub use __impl_propnames_to_short_linear_gcb_v1 as impl_propnames_to_short_linear_gcb_v1;
#[macro_use]
#[path = "macros/propnames_to_short_linear_insc_v1.rs.data"]
mod propnames_to_short_linear_insc_v1;
#[doc(inline)]
pub use __impl_propnames_to_short_linear_insc_v1 as impl_propnames_to_short_linear_insc_v1;
#[macro_use]
#[path = "macros/propnames_to_short_linear_sb_v1.rs.data"]
mod propnames_to_short_linear_sb_v1;
#[doc(inline)]
pub use __impl_propnames_to_short_linear_sb_v1 as impl_propnames_to_short_linear_sb_v1;
#[macro_use]
#[path = "macros/propnames_to_short_linear_wb_v1.rs.data"]
mod propnames_to_short_linear_wb_v1;
#[doc(inline)]
pub use __impl_propnames_to_short_linear_wb_v1 as impl_propnames_to_short_linear_wb_v1;
#[macro_use]
#[path = "macros/propnames_to_short_linear_bc_v1.rs.data"]
mod propnames_to_short_linear_bc_v1;
#[doc(inline)]
pub use __impl_propnames_to_short_linear_bc_v1 as impl_propnames_to_short_linear_bc_v1;
#[macro_use]
#[path = "macros/propnames_to_short_linear_ea_v1.rs.data"]
mod propnames_to_short_linear_ea_v1;
#[doc(inline)]
pub use __impl_propnames_to_short_linear_ea_v1 as impl_propnames_to_short_linear_ea_v1;
#[macro_use]
#[path = "macros/propnames_to_short_linear_gc_v1.rs.data"]
mod propnames_to_short_linear_gc_v1;
#[doc(inline)]
pub use __impl_propnames_to_short_linear_gc_v1 as impl_propnames_to_short_linear_gc_v1;
#[macro_use]
#[path = "macros/propnames_to_short_linear_lb_v1.rs.data"]
mod propnames_to_short_linear_lb_v1;
#[doc(inline)]
pub use __impl_propnames_to_short_linear_lb_v1 as impl_propnames_to_short_linear_lb_v1;
#[macro_use]
#[path = "macros/propnames_to_short_linear4_sc_v1.rs.data"]
mod propnames_to_short_linear4_sc_v1;
#[doc(inline)]
pub use __impl_propnames_to_short_linear4_sc_v1 as impl_propnames_to_short_linear4_sc_v1;
#[macro_use]
#[path = "macros/propnames_to_short_sparse_ccc_v1.rs.data"]
mod propnames_to_short_sparse_ccc_v1;
#[doc(inline)]
pub use __impl_propnames_to_short_sparse_ccc_v1 as impl_propnames_to_short_sparse_ccc_v1;
#[macro_use]
#[path = "macros/props_ahex_v1.rs.data"]
mod props_ahex_v1;
#[doc(inline)]
pub use __impl_props_ahex_v1 as impl_props_ahex_v1;
#[macro_use]
#[path = "macros/props_alpha_v1.rs.data"]
mod props_alpha_v1;
#[doc(inline)]
pub use __impl_props_alpha_v1 as impl_props_alpha_v1;
#[macro_use]
#[path = "macros/props_basic_emoji_v1.rs.data"]
mod props_basic_emoji_v1;
#[doc(inline)]
pub use __impl_props_basic_emoji_v1 as impl_props_basic_emoji_v1;
#[macro_use]
#[path = "macros/props_bidi_c_v1.rs.data"]
mod props_bidi_c_v1;
#[doc(inline)]
pub use __impl_props_bidi_c_v1 as impl_props_bidi_c_v1;
#[macro_use]
#[path = "macros/props_bidi_m_v1.rs.data"]
mod props_bidi_m_v1;
#[doc(inline)]
pub use __impl_props_bidi_m_v1 as impl_props_bidi_m_v1;
#[macro_use]
#[path = "macros/props_ci_v1.rs.data"]
mod props_ci_v1;
#[doc(inline)]
pub use __impl_props_ci_v1 as impl_props_ci_v1;
#[macro_use]
#[path = "macros/props_cwcf_v1.rs.data"]
mod props_cwcf_v1;
#[doc(inline)]
pub use __impl_props_cwcf_v1 as impl_props_cwcf_v1;
#[macro_use]
#[path = "macros/props_cwcm_v1.rs.data"]
mod props_cwcm_v1;
#[doc(inline)]
pub use __impl_props_cwcm_v1 as impl_props_cwcm_v1;
#[macro_use]
#[path = "macros/props_cwkcf_v1.rs.data"]
mod props_cwkcf_v1;
#[doc(inline)]
pub use __impl_props_cwkcf_v1 as impl_props_cwkcf_v1;
#[macro_use]
#[path = "macros/props_cwl_v1.rs.data"]
mod props_cwl_v1;
#[doc(inline)]
pub use __impl_props_cwl_v1 as impl_props_cwl_v1;
#[macro_use]
#[path = "macros/props_cwt_v1.rs.data"]
mod props_cwt_v1;
#[doc(inline)]
pub use __impl_props_cwt_v1 as impl_props_cwt_v1;
#[macro_use]
#[path = "macros/props_cwu_v1.rs.data"]
mod props_cwu_v1;
#[doc(inline)]
pub use __impl_props_cwu_v1 as impl_props_cwu_v1;
#[macro_use]
#[path = "macros/props_cased_v1.rs.data"]
mod props_cased_v1;
#[doc(inline)]
pub use __impl_props_cased_v1 as impl_props_cased_v1;
#[macro_use]
#[path = "macros/props_comp_ex_v1.rs.data"]
mod props_comp_ex_v1;
#[doc(inline)]
pub use __impl_props_comp_ex_v1 as impl_props_comp_ex_v1;
#[macro_use]
#[path = "macros/props_di_v1.rs.data"]
mod props_di_v1;
#[doc(inline)]
pub use __impl_props_di_v1 as impl_props_di_v1;
#[macro_use]
#[path = "macros/props_dash_v1.rs.data"]
mod props_dash_v1;
#[doc(inline)]
pub use __impl_props_dash_v1 as impl_props_dash_v1;
#[macro_use]
#[path = "macros/props_dep_v1.rs.data"]
mod props_dep_v1;
#[doc(inline)]
pub use __impl_props_dep_v1 as impl_props_dep_v1;
#[macro_use]
#[path = "macros/props_dia_v1.rs.data"]
mod props_dia_v1;
#[doc(inline)]
pub use __impl_props_dia_v1 as impl_props_dia_v1;
#[macro_use]
#[path = "macros/props_ebase_v1.rs.data"]
mod props_ebase_v1;
#[doc(inline)]
pub use __impl_props_ebase_v1 as impl_props_ebase_v1;
#[macro_use]
#[path = "macros/props_ecomp_v1.rs.data"]
mod props_ecomp_v1;
#[doc(inline)]
pub use __impl_props_ecomp_v1 as impl_props_ecomp_v1;
#[macro_use]
#[path = "macros/props_emod_v1.rs.data"]
mod props_emod_v1;
#[doc(inline)]
pub use __impl_props_emod_v1 as impl_props_emod_v1;
#[macro_use]
#[path = "macros/props_epres_v1.rs.data"]
mod props_epres_v1;
#[doc(inline)]
pub use __impl_props_epres_v1 as impl_props_epres_v1;
#[macro_use]
#[path = "macros/props_emoji_v1.rs.data"]
mod props_emoji_v1;
#[doc(inline)]
pub use __impl_props_emoji_v1 as impl_props_emoji_v1;
#[macro_use]
#[path = "macros/props_ext_v1.rs.data"]
mod props_ext_v1;
#[doc(inline)]
pub use __impl_props_ext_v1 as impl_props_ext_v1;
#[macro_use]
#[path = "macros/props_extpict_v1.rs.data"]
mod props_extpict_v1;
#[doc(inline)]
pub use __impl_props_extpict_v1 as impl_props_extpict_v1;
#[macro_use]
#[path = "macros/props_gcb_v1.rs.data"]
mod props_gcb_v1;
#[doc(inline)]
pub use __impl_props_gcb_v1 as impl_props_gcb_v1;
#[macro_use]
#[path = "macros/props_gr_base_v1.rs.data"]
mod props_gr_base_v1;
#[doc(inline)]
pub use __impl_props_gr_base_v1 as impl_props_gr_base_v1;
#[macro_use]
#[path = "macros/props_gr_ext_v1.rs.data"]
mod props_gr_ext_v1;
#[doc(inline)]
pub use __impl_props_gr_ext_v1 as impl_props_gr_ext_v1;
#[macro_use]
#[path = "macros/props_gr_link_v1.rs.data"]
mod props_gr_link_v1;
#[doc(inline)]
pub use __impl_props_gr_link_v1 as impl_props_gr_link_v1;
#[macro_use]
#[path = "macros/props_hex_v1.rs.data"]
mod props_hex_v1;
#[doc(inline)]
pub use __impl_props_hex_v1 as impl_props_hex_v1;
#[macro_use]
#[path = "macros/props_hyphen_v1.rs.data"]
mod props_hyphen_v1;
#[doc(inline)]
pub use __impl_props_hyphen_v1 as impl_props_hyphen_v1;
#[macro_use]
#[path = "macros/props_idc_v1.rs.data"]
mod props_idc_v1;
#[doc(inline)]
pub use __impl_props_idc_v1 as impl_props_idc_v1;
#[macro_use]
#[path = "macros/props_ids_v1.rs.data"]
mod props_ids_v1;
#[doc(inline)]
pub use __impl_props_ids_v1 as impl_props_ids_v1;
#[macro_use]
#[path = "macros/props_idsb_v1.rs.data"]
mod props_idsb_v1;
#[doc(inline)]
pub use __impl_props_idsb_v1 as impl_props_idsb_v1;
#[macro_use]
#[path = "macros/props_idst_v1.rs.data"]
mod props_idst_v1;
#[doc(inline)]
pub use __impl_props_idst_v1 as impl_props_idst_v1;
#[macro_use]
#[path = "macros/props_ideo_v1.rs.data"]
mod props_ideo_v1;
#[doc(inline)]
pub use __impl_props_ideo_v1 as impl_props_ideo_v1;
#[macro_use]
#[path = "macros/props_insc_v1.rs.data"]
mod props_insc_v1;
#[doc(inline)]
pub use __impl_props_insc_v1 as impl_props_insc_v1;
#[macro_use]
#[path = "macros/props_join_c_v1.rs.data"]
mod props_join_c_v1;
#[doc(inline)]
pub use __impl_props_join_c_v1 as impl_props_join_c_v1;
#[macro_use]
#[path = "macros/props_loe_v1.rs.data"]
mod props_loe_v1;
#[doc(inline)]
pub use __impl_props_loe_v1 as impl_props_loe_v1;
#[macro_use]
#[path = "macros/props_lower_v1.rs.data"]
mod props_lower_v1;
#[doc(inline)]
pub use __impl_props_lower_v1 as impl_props_lower_v1;
#[macro_use]
#[path = "macros/props_math_v1.rs.data"]
mod props_math_v1;
#[doc(inline)]
pub use __impl_props_math_v1 as impl_props_math_v1;
#[macro_use]
#[path = "macros/props_nchar_v1.rs.data"]
mod props_nchar_v1;
#[doc(inline)]
pub use __impl_props_nchar_v1 as impl_props_nchar_v1;
#[macro_use]
#[path = "macros/props_pcm_v1.rs.data"]
mod props_pcm_v1;
#[doc(inline)]
pub use __impl_props_pcm_v1 as impl_props_pcm_v1;
#[macro_use]
#[path = "macros/props_pat_syn_v1.rs.data"]
mod props_pat_syn_v1;
#[doc(inline)]
pub use __impl_props_pat_syn_v1 as impl_props_pat_syn_v1;
#[macro_use]
#[path = "macros/props_pat_ws_v1.rs.data"]
mod props_pat_ws_v1;
#[doc(inline)]
pub use __impl_props_pat_ws_v1 as impl_props_pat_ws_v1;
#[macro_use]
#[path = "macros/props_qmark_v1.rs.data"]
mod props_qmark_v1;
#[doc(inline)]
pub use __impl_props_qmark_v1 as impl_props_qmark_v1;
#[macro_use]
#[path = "macros/props_ri_v1.rs.data"]
mod props_ri_v1;
#[doc(inline)]
pub use __impl_props_ri_v1 as impl_props_ri_v1;
#[macro_use]
#[path = "macros/props_radical_v1.rs.data"]
mod props_radical_v1;
#[doc(inline)]
pub use __impl_props_radical_v1 as impl_props_radical_v1;
#[macro_use]
#[path = "macros/props_sb_v1.rs.data"]
mod props_sb_v1;
#[doc(inline)]
pub use __impl_props_sb_v1 as impl_props_sb_v1;
#[macro_use]
#[path = "macros/props_sd_v1.rs.data"]
mod props_sd_v1;
#[doc(inline)]
pub use __impl_props_sd_v1 as impl_props_sd_v1;
#[macro_use]
#[path = "macros/props_sterm_v1.rs.data"]
mod props_sterm_v1;
#[doc(inline)]
pub use __impl_props_sterm_v1 as impl_props_sterm_v1;
#[macro_use]
#[path = "macros/props_sensitive_v1.rs.data"]
mod props_sensitive_v1;
#[doc(inline)]
pub use __impl_props_sensitive_v1 as impl_props_sensitive_v1;
#[macro_use]
#[path = "macros/props_term_v1.rs.data"]
mod props_term_v1;
#[doc(inline)]
pub use __impl_props_term_v1 as impl_props_term_v1;
#[macro_use]
#[path = "macros/props_uideo_v1.rs.data"]
mod props_uideo_v1;
#[doc(inline)]
pub use __impl_props_uideo_v1 as impl_props_uideo_v1;
#[macro_use]
#[path = "macros/props_upper_v1.rs.data"]
mod props_upper_v1;
#[doc(inline)]
pub use __impl_props_upper_v1 as impl_props_upper_v1;
#[macro_use]
#[path = "macros/props_vs_v1.rs.data"]
mod props_vs_v1;
#[doc(inline)]
pub use __impl_props_vs_v1 as impl_props_vs_v1;
#[macro_use]
#[path = "macros/props_wb_v1.rs.data"]
mod props_wb_v1;
#[doc(inline)]
pub use __impl_props_wb_v1 as impl_props_wb_v1;
#[macro_use]
#[path = "macros/props_wspace_v1.rs.data"]
mod props_wspace_v1;
#[doc(inline)]
pub use __impl_props_wspace_v1 as impl_props_wspace_v1;
#[macro_use]
#[path = "macros/props_xidc_v1.rs.data"]
mod props_xidc_v1;
#[doc(inline)]
pub use __impl_props_xidc_v1 as impl_props_xidc_v1;
#[macro_use]
#[path = "macros/props_xids_v1.rs.data"]
mod props_xids_v1;
#[doc(inline)]
pub use __impl_props_xids_v1 as impl_props_xids_v1;
#[macro_use]
#[path = "macros/props_alnum_v1.rs.data"]
mod props_alnum_v1;
#[doc(inline)]
pub use __impl_props_alnum_v1 as impl_props_alnum_v1;
#[macro_use]
#[path = "macros/props_bc_v1.rs.data"]
mod props_bc_v1;
#[doc(inline)]
pub use __impl_props_bc_v1 as impl_props_bc_v1;
#[macro_use]
#[path = "macros/props_bidiauxiliaryprops_v1.rs.data"]
mod props_bidiauxiliaryprops_v1;
#[doc(inline)]
pub use __impl_props_bidiauxiliaryprops_v1 as impl_props_bidiauxiliaryprops_v1;
#[macro_use]
#[path = "macros/props_blank_v1.rs.data"]
mod props_blank_v1;
#[doc(inline)]
pub use __impl_props_blank_v1 as impl_props_blank_v1;
#[macro_use]
#[path = "macros/props_ccc_v1.rs.data"]
mod props_ccc_v1;
#[doc(inline)]
pub use __impl_props_ccc_v1 as impl_props_ccc_v1;
#[macro_use]
#[path = "macros/props_ea_v1.rs.data"]
mod props_ea_v1;
#[doc(inline)]
pub use __impl_props_ea_v1 as impl_props_ea_v1;
#[macro_use]
#[path = "macros/props_exemplarchars_auxiliary_v1.rs.data"]
mod props_exemplarchars_auxiliary_v1;
#[doc(inline)]
pub use __impl_props_exemplarchars_auxiliary_v1 as impl_props_exemplarchars_auxiliary_v1;
#[macro_use]
#[path = "macros/props_exemplarchars_index_v1.rs.data"]
mod props_exemplarchars_index_v1;
#[doc(inline)]
pub use __impl_props_exemplarchars_index_v1 as impl_props_exemplarchars_index_v1;
#[macro_use]
#[path = "macros/props_exemplarchars_main_v1.rs.data"]
mod props_exemplarchars_main_v1;
#[doc(inline)]
pub use __impl_props_exemplarchars_main_v1 as impl_props_exemplarchars_main_v1;
#[macro_use]
#[path = "macros/props_exemplarchars_numbers_v1.rs.data"]
mod props_exemplarchars_numbers_v1;
#[doc(inline)]
pub use __impl_props_exemplarchars_numbers_v1 as impl_props_exemplarchars_numbers_v1;
#[macro_use]
#[path = "macros/props_exemplarchars_punctuation_v1.rs.data"]
mod props_exemplarchars_punctuation_v1;
#[doc(inline)]
pub use __impl_props_exemplarchars_punctuation_v1 as impl_props_exemplarchars_punctuation_v1;
#[macro_use]
#[path = "macros/props_gc_v1.rs.data"]
mod props_gc_v1;
#[doc(inline)]
pub use __impl_props_gc_v1 as impl_props_gc_v1;
#[macro_use]
#[path = "macros/props_graph_v1.rs.data"]
mod props_graph_v1;
#[doc(inline)]
pub use __impl_props_graph_v1 as impl_props_graph_v1;
#[macro_use]
#[path = "macros/props_lb_v1.rs.data"]
mod props_lb_v1;
#[doc(inline)]
pub use __impl_props_lb_v1 as impl_props_lb_v1;
#[macro_use]
#[path = "macros/props_nfcinert_v1.rs.data"]
mod props_nfcinert_v1;
#[doc(inline)]
pub use __impl_props_nfcinert_v1 as impl_props_nfcinert_v1;
#[macro_use]
#[path = "macros/props_nfdinert_v1.rs.data"]
mod props_nfdinert_v1;
#[doc(inline)]
pub use __impl_props_nfdinert_v1 as impl_props_nfdinert_v1;
#[macro_use]
#[path = "macros/props_nfkcinert_v1.rs.data"]
mod props_nfkcinert_v1;
#[doc(inline)]
pub use __impl_props_nfkcinert_v1 as impl_props_nfkcinert_v1;
#[macro_use]
#[path = "macros/props_nfkdinert_v1.rs.data"]
mod props_nfkdinert_v1;
#[doc(inline)]
pub use __impl_props_nfkdinert_v1 as impl_props_nfkdinert_v1;
#[macro_use]
#[path = "macros/props_print_v1.rs.data"]
mod props_print_v1;
#[doc(inline)]
pub use __impl_props_print_v1 as impl_props_print_v1;
#[macro_use]
#[path = "macros/props_sc_v1.rs.data"]
mod props_sc_v1;
#[doc(inline)]
pub use __impl_props_sc_v1 as impl_props_sc_v1;
#[macro_use]
#[path = "macros/props_scx_v1.rs.data"]
mod props_scx_v1;
#[doc(inline)]
pub use __impl_props_scx_v1 as impl_props_scx_v1;
#[macro_use]
#[path = "macros/props_segstart_v1.rs.data"]
mod props_segstart_v1;
#[doc(inline)]
pub use __impl_props_segstart_v1 as impl_props_segstart_v1;
#[macro_use]
#[path = "macros/props_xdigit_v1.rs.data"]
mod props_xdigit_v1;
#[doc(inline)]
pub use __impl_props_xdigit_v1 as impl_props_xdigit_v1;

View File

@ -0,0 +1,32 @@
// @generated
/// Implement `DataProvider<BidiClassNameToValueV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_from_bc_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_FROM_BC_V1: &'static <icu::properties::provider::BidiClassNameToValueV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyValueNameToEnumMapV1 {
map: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b".\0\0\0\0\0\x02\0\x04\0\x11\0\x1E\0\x1F\0!\x001\0A\0C\0E\0G\0I\0X\0j\0}\0\x91\0\x94\0\x95\0\xA2\0\xB9\0\xCE\0\xE4\0\xE7\0\xEA\0\xED\0\xFC\0\xFF\0\x01\x01\x0E\x01!\x01$\x01'\x01=\x01T\x01U\x01b\x01y\x01\x8E\x01\xA4\x01\xA7\x01\xAA\x01\xAD\x01\xAE\x01\xBF\x01\xCA\x01ALANArabic_LetterArabic_NumberBBNBoundary_NeutralCommon_SeparatorCSENESETEuropean_NumberEuropean_SeparatorEuropean_TerminatorFirst_Strong_IsolateFSILLeft_To_RightLeft_To_Right_EmbeddingLeft_To_Right_IsolateLeft_To_Right_OverrideLRELRILRONonspacing_MarkNSMONOther_NeutralParagraph_SeparatorPDFPDIPop_Directional_FormatPop_Directional_IsolateRRight_To_LeftRight_To_Left_EmbeddingRight_To_Left_IsolateRight_To_Left_OverrideRLERLIRLOSSegment_SeparatorWhite_SpaceWS") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\r\0\x05\0\r\0\x05\0\x07\0\x12\0\x12\0\x06\0\x06\0\x02\0\x03\0\x04\0\x02\0\x03\0\x04\0\x13\0\x13\0\0\0\0\0\x0B\0\x14\0\x0C\0\x0B\0\x14\0\x0C\0\x11\0\x11\0\n\0\n\0\x07\0\x10\0\x16\0\x10\0\x16\0\x01\0\x01\0\x0E\0\x15\0\x0F\0\x0E\0\x15\0\x0F\0\x08\0\x08\0\t\0\t\0") })
},
};
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::BidiClassNameToValueV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::BidiClassNameToValueV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_FROM_BC_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::BidiClassNameToValueV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,32 @@
// @generated
/// Implement `DataProvider<CanonicalCombiningClassNameToValueV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_from_ccc_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_FROM_CCC_V1: &'static <icu::properties::provider::CanonicalCombiningClassNameToValueV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyValueNameToEnumMapV1 {
map: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"O\0\0\0\0\0\x01\0\x06\0\x10\0\x1B\0\x1D\0\x1F\0\"\0&\0)\0-\0;\0O\0]\0p\0q\0v\0\x80\0\x8B\0\x8D\0\x8F\0\x94\0\x9A\0\xA0\0\xA5\0\xAB\0\xB0\0\xB6\0\xBC\0\xC1\0\xC7\0\xCD\0\xD3\0\xD8\0\xDD\0\xE2\0\xE7\0\xEC\0\xF1\0\xF6\0\xFB\0\0\x01\x05\x01\n\x01\x0F\x01\x14\x01\x19\x01\x1E\x01#\x01(\x01-\x012\x017\x01<\x01A\x01F\x01K\x01P\x01R\x01T\x01`\x01l\x01p\x01{\x01\x89\x01\x8B\x01\x97\x01\x99\x01\x9A\x01\x9E\x01\xA0\x01\xAD\x01\xAF\x01\xB4\x01\xB6\x01\xBD\x01\xBE\x01\xC3\x01\xC9\x01AAboveAbove_LeftAbove_RightALARATAATARATBATBLAttached_AboveAttached_Above_RightAttached_BelowAttached_Below_LeftBBelowBelow_LeftBelow_RightBLBRCCC10CCC103CCC107CCC11CCC118CCC12CCC122CCC129CCC13CCC130CCC132CCC133CCC14CCC15CCC16CCC17CCC18CCC19CCC20CCC21CCC22CCC23CCC24CCC25CCC26CCC27CCC28CCC29CCC30CCC31CCC32CCC33CCC34CCC35CCC36CCC84CCC91DADBDouble_AboveDouble_BelowHANRHan_ReadingIota_SubscriptISKana_VoicingKVLLeftNKNot_ReorderedNRNuktaOVOverlayRRightViramaVR") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xE6\0\xE6\0\xE4\0\xE8\0\xE4\0\xE8\0\xD6\0\xD8\0\xCA\0\xC8\0\xD6\0\xD8\0\xCA\0\xC8\0\xDC\0\xDC\0\xDA\0\xDE\0\xDA\0\xDE\0\n\0g\0k\0\x0B\0v\0\x0C\0z\0\x81\0\r\0\x82\0\x84\0\x85\0\x0E\0\x0F\0\x10\0\x11\0\x12\0\x13\0\x14\0\x15\0\x16\0\x17\0\x18\0\x19\0\x1A\0\x1B\0\x1C\0\x1D\0\x1E\0\x1F\0 \0!\0\"\0#\0$\0T\0[\0\xEA\0\xE9\0\xEA\0\xE9\0\x06\0\x06\0\xF0\0\xF0\0\x08\0\x08\0\xE0\0\xE0\0\x07\0\0\0\0\0\x07\0\x01\0\x01\0\xE2\0\xE2\0\t\0\t\0") })
},
};
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::CanonicalCombiningClassNameToValueV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::CanonicalCombiningClassNameToValueV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_FROM_CCC_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::CanonicalCombiningClassNameToValueV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,32 @@
// @generated
/// Implement `DataProvider<EastAsianWidthNameToValueV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_from_ea_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_FROM_EA_V1: &'static <icu::properties::provider::EastAsianWidthNameToValueV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyValueNameToEnumMapV1 {
map: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x0C\0\0\0\0\0\x01\0\n\0\x0B\0\x14\0\x15\0\x1E\0\x1F\0!\0'\0.\0/\0AAmbiguousFFullwidthHHalfwidthNNaNarrowNeutralWWide") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x01\0\x01\0\x03\0\x03\0\x02\0\x02\0\0\0\x04\0\x04\0\0\0\x05\0\x05\0") })
},
};
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::EastAsianWidthNameToValueV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::EastAsianWidthNameToValueV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_FROM_EA_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::EastAsianWidthNameToValueV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,32 @@
// @generated
/// Implement `DataProvider<GeneralCategoryNameToValueV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_from_gc_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_FROM_GC_V1: &'static <icu::properties::provider::GeneralCategoryNameToValueV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyValueNameToEnumMapV1 {
map: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b">\0\0\0\0\0\x02\0\x04\0\x15\0\x17\0\x1C\0\x1E\x003\0:\0<\0K\0[\0i\0n\0|\0\x8D\0\x93\0\xA6\0\xB3\0\xC1\0\xC3\0\xC5\0\xC7\0\xD7\0\xD9\0\xDB\0\xE6\0\xE8\0\xEA\0\xEC\0\xFB\0\n\x01\x0C\x01\x0E\x01\x10\x01\x1F\x01/\x01;\x01G\x01X\x01d\x01w\x01y\x01{\x01}\x01\x7F\x01\x81\x01\x83\x01\x8E\x01\x90\x01\x92\x01\x94\x01\x96\x01\x98\x01\xA7\x01\xB3\x01\xBC\x01\xCC\x01\xD6\x01\xE6\x01\xE8\x01\xEA\x01CcCfClose_PunctuationCncntrlCoConnector_PunctuationControlCsCurrency_SymbolDash_PunctuationDecimal_NumberdigitEnclosing_MarkFinal_PunctuationFormatInitial_PunctuationLetter_NumberLine_SeparatorLlLmLoLowercase_LetterLtLuMath_SymbolMcMeMnModifier_LetterModifier_SymbolNdNlNoNonspacing_MarkOpen_PunctuationOther_LetterOther_NumberOther_PunctuationOther_SymbolParagraph_SeparatorPcPdPePfPiPoPrivate_UsePsScSkSmSoSpace_SeparatorSpacing_MarkSurrogateTitlecase_LetterUnassignedUppercase_LetterZlZpZs") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x0F\0\x10\0\x15\0\0\0\x0F\0\x11\0\x16\0\x0F\0\x12\0\x19\0\x13\0\t\0\t\0\x07\0\x1D\0\x10\0\x1C\0\n\0\r\0\x02\0\x04\0\x05\0\x02\0\x03\0\x01\0\x18\0\x08\0\x07\0\x06\0\x04\0\x1A\0\t\0\n\0\x0B\0\x06\0\x14\0\x05\0\x0B\0\x17\0\x1B\0\x0E\0\x16\0\x13\0\x15\0\x1D\0\x1C\0\x17\0\x11\0\x14\0\x19\0\x1A\0\x18\0\x1B\0\x0C\0\x08\0\x12\0\x03\0\0\0\x01\0\r\0\x0E\0\x0C\0") })
},
};
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::GeneralCategoryNameToValueV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::GeneralCategoryNameToValueV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_FROM_GC_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::GeneralCategoryNameToValueV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,32 @@
// @generated
/// Implement `DataProvider<GraphemeClusterBreakNameToValueV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_from_gcb_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_FROM_GCB_V1: &'static <icu::properties::provider::GraphemeClusterBreakNameToValueV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyValueNameToEnumMapV1 {
map: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x1C\0\0\0\0\0\x02\0\t\0\x0B\0\r\0\x13\0\x1D\0 \0\"\0,\0.\x004\x007\0E\0F\0H\0J\0M\0R\0T\0[\0m\0o\0q\0|\0}\0~\0\x80\0CNControlCREBE_BaseE_Base_GAZEBGEME_ModifierEXExtendGAZGlue_After_ZwjLLFLVLVTOtherPPPrependRegional_IndicatorRISMSpacingMarkTVXXZWJ") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x01\0\x01\0\x02\0\r\0\r\0\x0E\0\x0E\0\x0F\0\x0F\0\x03\0\x03\0\x10\0\x10\0\x04\0\x05\0\x06\0\x07\0\0\0\x0B\0\x0B\0\x0C\0\x0C\0\n\0\n\0\x08\0\t\0\0\0\x11\0") })
},
};
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::GraphemeClusterBreakNameToValueV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::GraphemeClusterBreakNameToValueV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_FROM_GCB_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::GraphemeClusterBreakNameToValueV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,32 @@
// @generated
/// Implement `DataProvider<GeneralCategoryMaskNameToValueV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_from_gcm_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_FROM_GCM_V1: &'static <icu::properties::provider::names::GeneralCategoryMaskNameToValueV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyValueNameToEnumMapV1 {
map: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"P\0\0\0\0\0\x01\0\r\0\x0F\0\x11\0\"\0$\0)\0+\09\0N\0U\0W\0f\0v\0\x84\0\x89\0\x97\0\xA8\0\xAE\0\xC1\0\xC2\0\xC4\0\xCA\0\xD7\0\xE5\0\xE7\0\xE9\0\xEB\0\xFB\0\xFD\0\xFF\0\0\x01\x04\x01\x0F\x01\x11\x01\x13\x01\x15\x01$\x013\x014\x016\x018\x01:\x01I\x01O\x01_\x01d\x01p\x01|\x01\x8D\x01\x99\x01\x9A\x01\xAD\x01\xAF\x01\xB1\x01\xB3\x01\xB5\x01\xB7\x01\xB9\x01\xC4\x01\xC6\x01\xCB\x01\xD6\x01\xD7\x01\xD9\x01\xE2\x01\xE4\x01\xE6\x01\xE8\x01\xF7\x01\x03\x02\x0C\x02\x12\x02\"\x02,\x02<\x02=\x02?\x02A\x02CCased_LetterCcCfClose_PunctuationCncntrlCoCombining_MarkConnector_PunctuationControlCsCurrency_SymbolDash_PunctuationDecimal_NumberdigitEnclosing_MarkFinal_PunctuationFormatInitial_PunctuationLLCLetterLetter_NumberLine_SeparatorLlLmLoLowercase_LetterLtLuMMarkMath_SymbolMcMeMnModifier_LetterModifier_SymbolNNdNlNoNonspacing_MarkNumberOpen_PunctuationOtherOther_LetterOther_NumberOther_PunctuationOther_SymbolPParagraph_SeparatorPcPdPePfPiPoPrivate_UsePspunctPunctuationSScSeparatorSkSmSoSpace_SeparatorSpacing_MarkSurrogateSymbolTitlecase_LetterUnassignedUppercase_LetterZZlZpZs") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xFA\xFF\xFF\xFF\x0F\0\x10\0\x15\0\0\0\x0F\0\x11\0\xFD\xFF\x16\0\x0F\0\x12\0\x19\0\x13\0\t\0\t\0\x07\0\x1D\0\x10\0\x1C\0\xFE\xFF\xFF\xFF\xFE\xFF\n\0\r\0\x02\0\x04\0\x05\0\x02\0\x03\0\x01\0\xFD\xFF\xFD\xFF\x18\0\x08\0\x07\0\x06\0\x04\0\x1A\0\xFC\xFF\t\0\n\0\x0B\0\x06\0\xFC\xFF\x14\0\xFA\xFF\x05\0\x0B\0\x17\0\x1B\0\xF9\xFF\x0E\0\x16\0\x13\0\x15\0\x1D\0\x1C\0\x17\0\x11\0\x14\0\xF9\xFF\xF9\xFF\xF8\xFF\x19\0\xFB\xFF\x1A\0\x18\0\x1B\0\x0C\0\x08\0\x12\0\xF8\xFF\x03\0\0\0\x01\0\xFB\xFF\r\0\x0E\0\x0C\0") })
},
};
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::names::GeneralCategoryMaskNameToValueV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::names::GeneralCategoryMaskNameToValueV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_FROM_GCM_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::names::GeneralCategoryMaskNameToValueV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,32 @@
// @generated
/// Implement `DataProvider<IndicSyllabicCategoryNameToValueV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_from_insc_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_FROM_INSC_V1: &'static <icu::properties::provider::IndicSyllabicCategoryNameToValueV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyValueNameToEnumMapV1 {
map: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"$\0\0\0\0\0\x08\0\r\0\"\x003\0<\0J\0Y\0n\0\x89\0\x99\0\xA9\0\xBE\0\xD7\0\xE9\0\xFC\0\x16\x01,\x01;\x01L\x01R\x01b\x01l\x01q\x01w\x01\x84\x01\x89\x01\x94\x01\xA4\x01\xB5\x01\xC0\x01\xC9\x01\xCF\x01\xD6\x01\xDB\x01\xEA\x01AvagrahaBinduBrahmi_Joining_NumberCantillation_MarkConsonantConsonant_DeadConsonant_FinalConsonant_Head_LetterConsonant_Initial_PostfixedConsonant_KillerConsonant_MedialConsonant_PlaceholderConsonant_Preceding_RephaConsonant_PrefixedConsonant_SubjoinedConsonant_Succeeding_RephaConsonant_With_StackerGemination_MarkInvisible_StackerJoinerModifying_LetterNon_JoinerNuktaNumberNumber_JoinerOtherPure_KillerRegister_ShifterSyllable_ModifierTone_LetterTone_MarkViramaVisargaVowelVowel_DependentVowel_Independent") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x01\0\x02\0\x03\0\x04\0\x05\0\x06\0\x07\0\x08\0\t\0\n\0\x0B\0\x0C\0\r\0\x0E\0\x0F\0\x10\0\x11\0\x12\0\x13\0\x14\0\x15\0\x16\0\x17\0\x18\0\x19\0\0\0\x1A\0\x1B\0\x1C\0\x1D\0\x1E\0\x1F\0 \0!\0\"\0#\0") })
},
};
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::IndicSyllabicCategoryNameToValueV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::IndicSyllabicCategoryNameToValueV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_FROM_INSC_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::IndicSyllabicCategoryNameToValueV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,32 @@
// @generated
/// Implement `DataProvider<LineBreakNameToValueV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_from_lb_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_FROM_LB_V1: &'static <icu::properties::provider::LineBreakNameToValueV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyValueNameToEnumMapV1 {
map: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"[\0\0\0\0\0\x02\0\x04\0\n\0\x18\0$\0&\x000\09\0;\0=\0?\0A\0C\0E\0P\0\\\0f\0s\0\x82\0\x84\0\x86\0\x88\0\x99\0\xAA\0\xAC\0\xBA\0\xC9\0\xE5\0\xF5\0\xF7\0\xF9\0\xFB\0\x01\x01\x03\x01\r\x01\x0F\x01\x1A\x01\x1C\x01 \x01\"\x01$\x011\x013\x015\x01;\x01=\x01H\x01J\x01W\x01b\x01m\x01o\x01q\x01s\x01u\x01w\x01\x80\x01\x8F\x01\x98\x01\x9A\x01\xA4\x01\xA6\x01\xA8\x01\xAF\x01\xB1\x01\xC1\x01\xC3\x01\xD2\x01\xD4\x01\xE2\x01\xE4\x01\xED\x01\xFF\x01\x01\x02\x03\x02\x05\x02\x07\x02\x0C\x02\x15\x02\x17\x02\x1E\x02 \x02\"\x02(\x024\x026\x02A\x02C\x02E\x02H\x02AIAKAksaraAksara_PrebaseAksara_StartALAlphabeticAmbiguousAPASB2BABBBKBreak_AfterBreak_BeforeBreak_BothBreak_SymbolsCarriage_ReturnCBCJCLClose_ParenthesisClose_PunctuationCMCombining_MarkComplex_ContextConditional_Japanese_StarterContingent_BreakCPCREBE_BaseEME_ModifierEXExclamationGLGlueH2H3Hebrew_LetterHLHYHyphenIDIdeographicINInfix_NumericInseparableInseperableISJLJTJVLFLine_FeedMandatory_BreakNext_LineNLNonstarterNSNUNumericOPOpen_PunctuationPOPostfix_NumericPRPrefix_NumericQUQuotationRegional_IndicatorRISASGSPSpaceSurrogateSYUnknownVFVIViramaVirama_FinalWJWord_JoinerXXZWZWJZWSpace") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x01\0+\0+\0,\0-\0\x02\0\x02\0\x01\0,\0-\0\x03\0\x04\0\x05\0\x06\0\x04\0\x05\0\x03\0\x1B\0\n\0\x07\0%\0\x08\0$\0\x08\0\t\0\t\0\x18\0%\0\x07\0$\0\n\0(\0(\0)\0)\0\x0B\0\x0B\0\x0C\0\x0C\0\x1F\0 \0&\0&\0\r\0\r\0\x0E\0\x0E\0\x0F\0\x10\0\x0F\0\x0F\0\x10\0!\0\"\0#\0\x11\0\x11\0\x06\0\x1D\0\x1D\0\x12\0\x12\0\x13\0\x13\0\x14\0\x14\0\x15\0\x15\0\x16\0\x16\0\x17\0\x17\0'\0'\0\x18\0\x19\0\x1A\0\x1A\0\x19\0\x1B\0\0\0.\0/\0/\0.\0\x1E\0\x1E\0\0\0\x1C\0*\0\x1C\0") })
},
};
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::LineBreakNameToValueV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::LineBreakNameToValueV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_FROM_LB_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::LineBreakNameToValueV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,32 @@
// @generated
/// Implement `DataProvider<SentenceBreakNameToValueV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_from_sb_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_FROM_SB_V1: &'static <icu::properties::provider::SentenceBreakNameToValueV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyValueNameToEnumMapV1 {
map: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x1C\0\0\0\0\0\x02\0\x07\0\t\0\x0E\0\x10\0\x12\0\x18\0\x1A\0 \0\"\0$\0&\0+\0-\x004\0;\0@\0B\0K\0M\0P\0R\0T\0V\0[\0]\0b\0ATATermCLCloseCREXExtendFOFormatLELFLOLowerNUNumericOLetterOtherSCSContinueSESepSPSpSTSTermUPUpperXX") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x01\0\x01\0\x02\0\x02\0\x0B\0\x0C\0\x0C\0\x03\0\x03\0\x06\0\r\0\x04\0\x04\0\x05\0\x05\0\x06\0\0\0\x0E\0\x0E\0\x07\0\x07\0\x08\0\x08\0\t\0\t\0\n\0\n\0\0\0") })
},
};
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::SentenceBreakNameToValueV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::SentenceBreakNameToValueV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_FROM_SB_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::SentenceBreakNameToValueV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,32 @@
// @generated
/// Implement `DataProvider<WordBreakNameToValueV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_from_wb_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_FROM_WB_V1: &'static <icu::properties::provider::WordBreakNameToValueV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyValueNameToEnumMapV1 {
map: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b")\0\0\0\0\0\x07\0\t\0\x15\0\x17\0\x19\0\x1F\0)\0,\0.\08\0:\0@\0L\0N\0T\0W\0e\0r\0t\0v\0~\0\x80\0\x82\0\x84\0\x8D\0\x93\0\x9C\0\x9E\0\xA0\0\xA7\0\xA9\0\xAB\0\xB2\0\xB7\0\xC9\0\xCB\0\xD7\0\xD9\0\xE2\0\xE4\0ALetterCRDouble_QuoteDQEBE_BaseE_Base_GAZEBGEME_ModifierEXExtendExtendNumLetFOFormatGAZGlue_After_ZwjHebrew_LetterHLKAKatakanaLELFMBMidLetterMidNumMidNumLetMLMNNewlineNLNUNumericOtherRegional_IndicatorRISingle_QuoteSQWSegSpaceXXZWJ") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x01\0\x08\0\x10\0\x10\0\x11\0\x11\0\x12\0\x12\0\x13\0\x13\0\x07\0\t\0\x07\0\x02\0\x02\0\x14\0\x14\0\x0E\0\x0E\0\x03\0\x03\0\x01\0\n\0\x0B\0\x04\0\x05\0\x0B\0\x04\0\x05\0\x0C\0\x0C\0\x06\0\x06\0\0\0\r\0\r\0\x0F\0\x0F\0\x16\0\0\0\x15\0") })
},
};
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::WordBreakNameToValueV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::WordBreakNameToValueV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_FROM_WB_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::WordBreakNameToValueV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,27 @@
// @generated
/// Implement `DataProvider<BidiClassValueToLongNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_long_linear_bc_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_LONG_LINEAR_BC_V1: &'static <icu::properties::provider::BidiClassValueToLongNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameLinearMapV1 { map: unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x17\0\0\0\0\0\r\0\x1A\0)\0;\0N\0[\0k\0~\0\x8F\0\x9A\0\xA7\0\xBE\0\xD4\0\xE1\0\xF8\0\x0E\x01$\x013\x01C\x01W\x01l\x01\x81\x01Left_To_RightRight_To_LeftEuropean_NumberEuropean_SeparatorEuropean_TerminatorArabic_NumberCommon_SeparatorParagraph_SeparatorSegment_SeparatorWhite_SpaceOther_NeutralLeft_To_Right_EmbeddingLeft_To_Right_OverrideArabic_LetterRight_To_Left_EmbeddingRight_To_Left_OverridePop_Directional_FormatNonspacing_MarkBoundary_NeutralFirst_Strong_IsolateLeft_To_Right_IsolateRight_To_Left_IsolatePop_Directional_Isolate") } };
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::BidiClassValueToLongNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::BidiClassValueToLongNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_LONG_LINEAR_BC_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::BidiClassValueToLongNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,27 @@
// @generated
/// Implement `DataProvider<EastAsianWidthValueToLongNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_long_linear_ea_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_LONG_LINEAR_EA_V1: &'static <icu::properties::provider::EastAsianWidthValueToLongNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameLinearMapV1 { map: unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x06\0\0\0\0\0\x07\0\x10\0\x19\0\"\0(\0NeutralAmbiguousHalfwidthFullwidthNarrowWide") } };
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::EastAsianWidthValueToLongNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::EastAsianWidthValueToLongNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_LONG_LINEAR_EA_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::EastAsianWidthValueToLongNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,27 @@
// @generated
/// Implement `DataProvider<GeneralCategoryValueToLongNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_long_linear_gc_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_LONG_LINEAR_GC_V1: &'static <icu::properties::provider::GeneralCategoryValueToLongNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameLinearMapV1 { map: unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x1E\0\0\0\0\0\n\0\x1A\0*\0:\0I\0U\0d\0r\0~\0\x8C\0\x99\0\xA5\0\xB4\0\xC2\0\xD5\0\xDC\0\xE2\0\xED\0\xF6\0\x06\x01\x16\x01'\x01<\x01M\x01X\x01g\x01v\x01\x82\x01\x95\x01UnassignedUppercase_LetterLowercase_LetterTitlecase_LetterModifier_LetterOther_LetterNonspacing_MarkEnclosing_MarkSpacing_MarkDecimal_NumberLetter_NumberOther_NumberSpace_SeparatorLine_SeparatorParagraph_SeparatorControlFormatPrivate_UseSurrogateDash_PunctuationOpen_PunctuationClose_PunctuationConnector_PunctuationOther_PunctuationMath_SymbolCurrency_SymbolModifier_SymbolOther_SymbolInitial_PunctuationFinal_Punctuation") } };
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::GeneralCategoryValueToLongNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::GeneralCategoryValueToLongNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_LONG_LINEAR_GC_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::GeneralCategoryValueToLongNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,27 @@
// @generated
/// Implement `DataProvider<GraphemeClusterBreakValueToLongNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_long_linear_gcb_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_LONG_LINEAR_GCB_V1: &'static <icu::properties::provider::GraphemeClusterBreakValueToLongNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameLinearMapV1 { map: unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x12\0\0\0\0\0\x05\0\x0C\0\x0E\0\x14\0\x15\0\x17\0\x19\0\x1C\0\x1D\0\x1E\0)\x000\0B\0H\0R\0\\\0j\0OtherControlCRExtendLLFLVLVTTVSpacingMarkPrependRegional_IndicatorE_BaseE_Base_GAZE_ModifierGlue_After_ZwjZWJ") } };
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::GraphemeClusterBreakValueToLongNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::GraphemeClusterBreakValueToLongNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_LONG_LINEAR_GCB_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::GraphemeClusterBreakValueToLongNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,27 @@
// @generated
/// Implement `DataProvider<IndicSyllabicCategoryValueToLongNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_long_linear_insc_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_LONG_LINEAR_INSC_V1: &'static <icu::properties::provider::IndicSyllabicCategoryValueToLongNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameLinearMapV1 { map: unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"$\0\0\0\0\0\x05\0\r\0\x12\0'\08\0A\0O\0^\0s\0\x8E\0\x9E\0\xAE\0\xC3\0\xDC\0\xEE\0\x01\x01\x1B\x011\x01@\x01Q\x01W\x01g\x01q\x01v\x01|\x01\x89\x01\x94\x01\xA4\x01\xB5\x01\xC0\x01\xC9\x01\xCF\x01\xD6\x01\xDB\x01\xEA\x01OtherAvagrahaBinduBrahmi_Joining_NumberCantillation_MarkConsonantConsonant_DeadConsonant_FinalConsonant_Head_LetterConsonant_Initial_PostfixedConsonant_KillerConsonant_MedialConsonant_PlaceholderConsonant_Preceding_RephaConsonant_PrefixedConsonant_SubjoinedConsonant_Succeeding_RephaConsonant_With_StackerGemination_MarkInvisible_StackerJoinerModifying_LetterNon_JoinerNuktaNumberNumber_JoinerPure_KillerRegister_ShifterSyllable_ModifierTone_LetterTone_MarkViramaVisargaVowelVowel_DependentVowel_Independent") } };
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::IndicSyllabicCategoryValueToLongNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::IndicSyllabicCategoryValueToLongNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_LONG_LINEAR_INSC_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::IndicSyllabicCategoryValueToLongNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,27 @@
// @generated
/// Implement `DataProvider<LineBreakValueToLongNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_long_linear_lb_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_LONG_LINEAR_LB_V1: &'static <icu::properties::provider::LineBreakValueToLongNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameLinearMapV1 { map: unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"0\0\0\0\0\0\x07\0\x10\0\x1A\0$\0/\0;\0J\0Z\0k\0y\0\x88\0\x93\0\x97\0\x9D\0\xA8\0\xB3\0\xC0\0\xC9\0\xD3\0\xDA\0\xEA\0\xF9\0\x07\x01\x10\x01\x1F\x01(\x01-\x01:\x01A\x01J\x01U\x01W\x01Y\x01[\x01]\x01_\x01p\x01\x8C\x01\x99\x01\xAB\x01\xB1\x01\xBB\x01\xBE\x01\xC4\x01\xD2\x01\xDE\x01\xEA\x01UnknownAmbiguousAlphabeticBreak_BothBreak_AfterBreak_BeforeMandatory_BreakContingent_BreakClose_PunctuationCombining_MarkCarriage_ReturnExclamationGlueHyphenIdeographicInseparableInfix_NumericLine_FeedNonstarterNumericOpen_PunctuationPostfix_NumericPrefix_NumericQuotationComplex_ContextSurrogateSpaceBreak_SymbolsZWSpaceNext_LineWord_JoinerH2H3JLJTJVClose_ParenthesisConditional_Japanese_StarterHebrew_LetterRegional_IndicatorE_BaseE_ModifierZWJAksaraAksara_PrebaseAksara_StartVirama_FinalVirama") } };
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::LineBreakValueToLongNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::LineBreakValueToLongNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_LONG_LINEAR_LB_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::LineBreakValueToLongNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,27 @@
// @generated
/// Implement `DataProvider<SentenceBreakValueToLongNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_long_linear_sb_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_LONG_LINEAR_SB_V1: &'static <icu::properties::provider::SentenceBreakValueToLongNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameLinearMapV1 { map: unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x0F\0\0\0\0\0\x05\0\n\0\x0F\0\x15\0\x1A\0!\0(\0+\0-\x002\x007\09\0?\0A\0OtherATermCloseFormatLowerNumericOLetterSepSpSTermUpperCRExtendLFSContinue") } };
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::SentenceBreakValueToLongNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::SentenceBreakValueToLongNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_LONG_LINEAR_SB_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::SentenceBreakValueToLongNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,27 @@
// @generated
/// Implement `DataProvider<ScriptValueToLongNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_long_linear_sc_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_LONG_LINEAR_SC_V1: &'static <icu::properties::provider::ScriptValueToLongNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameLinearMapV1 { map: unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\xC8\0\0\0\0\0\x06\0\x0F\0\x15\0\x1D\0$\0,\x004\0:\0B\0I\0S\0[\0c\0i\0n\0v\0~\0\x81\0\x87\0\x8D\0\x95\0\x9C\0\xA4\0\xA9\0\xAC\0\xB1\0\xBA\0\xC3\0\xCA\0\xCF\0\xD9\0\xDE\0\xE3\0\xEA\0\xF0\0\xF5\0\xFB\0\x01\x01\x05\x01\x0C\x01\x1F\x01!\x01(\x01/\x014\x01<\x01C\x01J\x01O\x01W\x01^\x01e\x01k\x01s\x01\x87\x01\x8F\x01\x99\x01\xA3\x01\xAF\x01\xBA\x01\xC2\x01\xCD\x01\xD5\x01\xDA\x01\xDE\x01\xE4\x01\xE8\x01\xEC\x01\xF0\x01\xF4\x01\xF8\x01\x0C\x02\x10\x02\x14\x02\x18\x02$\x021\x025\x02=\x02E\x02I\x02M\x02S\x02[\x02b\x02f\x02z\x02}\x02\x87\x02\x91\x02\x99\x02\xA3\x02\xA7\x02\xAB\x02\xAF\x02\xB3\x02\xB7\x02\xBB\x02\xBF\x02\xC2\x02\xC6\x02\xCF\x02\xD3\x02\xDA\x02\xE0\x02\xE4\x02\xEC\x02\xF2\x02\xF8\x02\0\x03\x06\x03\x10\x03\x1B\x03$\x03(\x034\x03D\x03K\x03Q\x03U\x03[\x03e\x03z\x03\x89\x03\x8D\x03\xA3\x03\xAC\x03\xB4\x03\xB8\x03\xBC\x03\xC1\x03\xC5\x03\xC9\x03\xDA\x03\xE3\x03\xEB\x03\xF2\x03\xF9\x03\xFD\x03\x01\x04\x0E\x04\x1E\x04/\x048\x04A\x04J\x04U\x04Y\x04]\x04`\x04e\x04l\x04x\x04}\x04\x83\x04\x87\x04\x9C\x04\xA2\x04\xA9\x04\xBB\x04\xC3\x04\xC7\x04\xCD\x04\xD1\x04\xD8\x04\xE3\x04\xEA\x04\xEF\x04\xF8\x04\xFF\x04\x03\x05\x08\x05\x0C\x05\x10\x05\x14\x05!\x05(\x058\x05=\x05J\x05Q\x05\\\x05k\x05r\x05}\x05\x84\x05\x9A\x05\xA5\x05\xAB\x05\xB5\x05\xC0\x05\xD3\x05\xD9\x05\xE5\x05\xEF\x05\xF5\x05\xF9\x05\x01\x06\x05\x06CommonInheritedArabicArmenianBengaliBopomofoCherokeeCopticCyrillicDeseretDevanagariEthiopicGeorgianGothicGreekGujaratiGurmukhiHanHangulHebrewHiraganaKannadaKatakanaKhmerLaoLatinMalayalamMongolianMyanmarOghamOld_ItalicOriyaRunicSinhalaSyriacTamilTeluguThaanaThaiTibetanCanadian_AboriginalYiTagalogHanunooBuhidTagbanwaBrailleCypriotLimbuLinear_BOsmanyaShavianTai_LeUgariticKatakana_Or_HiraganaBugineseGlagoliticKharoshthiSyloti_NagriNew_Tai_LueTifinaghOld_PersianBalineseBatakBlisBrahmiChamCirtCyrsEgydEgyhEgyptian_HieroglyphsGeokHansHantPahawh_HmongOld_HungarianIndsJavaneseKayah_LiLatfLatgLepchaLinear_AMandaicMayaMeroitic_HieroglyphsNkoOld_TurkicOld_PermicPhags_PaPhoenicianMiaoRoroSaraSyreSyrjSyrnTengVaiVispCuneiformZxxxUnknownCarianJpanTai_ThamLycianLydianOl_ChikiRejangSaurashtraSignWritingSundaneseMoonMeetei_MayekImperial_AramaicAvestanChakmaKoreKaithiManichaeanInscriptional_PahlaviPsalter_PahlaviPhlvInscriptional_ParthianSamaritanTai_VietZmthZsymBamumLisuNkgbOld_South_ArabianBassa_VahDuployanElbasanGranthaKpelLomaMende_KikakuiMeroitic_CursiveOld_North_ArabianNabataeanPalmyreneKhudawadiWarang_CitiAfakJurcMroNushuSharadaSora_SompengTakriTangutWoleAnatolian_HieroglyphsKhojkiTirhutaCaucasian_AlbanianMahajaniAhomHatranModiMultaniPau_Cin_HauSiddhamAdlamBhaiksukiMarchenNewaOsageHanbJamoZsyeMasaram_GondiSoyomboZanabazar_SquareDograGunjala_GondiMakasarMedefaidrinHanifi_RohingyaSogdianOld_SogdianElymaicNyiakeng_Puachue_HmongNandinagariWanchoChorasmianDives_AkuruKhitan_Small_ScriptYezidiCypro_MinoanOld_UyghurTangsaTotoVithkuqiKawiNag_Mundari") } };
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::ScriptValueToLongNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::ScriptValueToLongNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_LONG_LINEAR_SC_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::ScriptValueToLongNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,27 @@
// @generated
/// Implement `DataProvider<WordBreakValueToLongNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_long_linear_wb_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_LONG_LINEAR_WB_V1: &'static <icu::properties::provider::WordBreakValueToLongNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameLinearMapV1 { map: unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x17\0\0\0\0\0\x05\0\x0C\0\x12\0\x1A\0#\0)\x000\0<\0>\0D\0F\0O\0V\0h\0u\0\x81\0\x8D\0\x93\0\x9D\0\xA7\0\xB5\0\xB8\0OtherALetterFormatKatakanaMidLetterMidNumNumericExtendNumLetCRExtendLFMidNumLetNewlineRegional_IndicatorHebrew_LetterSingle_QuoteDouble_QuoteE_BaseE_Base_GAZE_ModifierGlue_After_ZwjZWJWSegSpace") } };
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::WordBreakValueToLongNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::WordBreakValueToLongNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_LONG_LINEAR_WB_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::WordBreakValueToLongNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,32 @@
// @generated
/// Implement `DataProvider<CanonicalCombiningClassValueToLongNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_long_sparse_ccc_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_LONG_SPARSE_CCC_V1: &'static <icu::properties::provider::CanonicalCombiningClassValueToLongNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameSparseMapV1 {
map: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\x01\0\x06\0\x07\0\x08\0\t\0\n\0\x0B\0\x0C\0\r\0\x0E\0\x0F\0\x10\0\x11\0\x12\0\x13\0\x14\0\x15\0\x16\0\x17\0\x18\0\x19\0\x1A\0\x1B\0\x1C\0\x1D\0\x1E\0\x1F\0 \0!\0\"\0#\0$\0T\0[\0g\0k\0v\0z\0\x81\0\x82\0\x84\0\x85\0\xC8\0\xCA\0\xD6\0\xD8\0\xDA\0\xDC\0\xDE\0\xE0\0\xE2\0\xE4\0\xE6\0\xE8\0\xE9\0\xEA\0\xF0\0") }, unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b":\0\0\0\0\0\r\0\x14\0\x1F\0$\x000\x006\0;\0@\0E\0J\0O\0T\0Y\0^\0c\0h\0m\0r\0w\0|\0\x81\0\x86\0\x8B\0\x90\0\x95\0\x9A\0\x9F\0\xA4\0\xA9\0\xAE\0\xB3\0\xB8\0\xBD\0\xC2\0\xC7\0\xCD\0\xD3\0\xD9\0\xDF\0\xE5\0\xEB\0\xF1\0\xF7\0\n\x01\x18\x01&\x01:\x01D\x01I\x01T\x01X\x01]\x01g\x01l\x01w\x01\x83\x01\x8F\x01Not_ReorderedOverlayHan_ReadingNuktaKana_VoicingViramaCCC10CCC11CCC12CCC13CCC14CCC15CCC16CCC17CCC18CCC19CCC20CCC21CCC22CCC23CCC24CCC25CCC26CCC27CCC28CCC29CCC30CCC31CCC32CCC33CCC34CCC35CCC36CCC84CCC91CCC103CCC107CCC118CCC122CCC129CCC130CCC132CCC133Attached_Below_LeftAttached_BelowAttached_AboveAttached_Above_RightBelow_LeftBelowBelow_RightLeftRightAbove_LeftAboveAbove_RightDouble_BelowDouble_AboveIota_Subscript") })
},
};
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::CanonicalCombiningClassValueToLongNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::CanonicalCombiningClassValueToLongNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_LONG_SPARSE_CCC_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::CanonicalCombiningClassValueToLongNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,27 @@
// @generated
/// Implement `DataProvider<ScriptValueToShortNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_short_linear4_sc_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_SHORT_LINEAR4_SC_V1: &'static <icu::properties::provider::ScriptValueToShortNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameLinearTiny4MapV1 { map: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"ZyyyZinhArabArmnBengBopoCherCoptCyrlDsrtDevaEthiGeorGothGrekGujrGuruHaniHangHebrHiraKndaKanaKhmrLaooLatnMlymMongMymrOgamItalOryaRunrSinhSyrcTamlTeluThaaThaiTibtCansYiiiTglgHanoBuhdTagbBraiCprtLimbLinbOsmaShawTaleUgarHrktBugiGlagKharSyloTaluTfngXpeoBaliBatkBlisBrahChamCirtCyrsEgydEgyhEgypGeokHansHantHmngHungIndsJavaKaliLatfLatgLepcLinaMandMayaMeroNkooOrkhPermPhagPhnxPlrdRoroSaraSyreSyrjSyrnTengVaiiVispXsuxZxxxZzzzCariJpanLanaLyciLydiOlckRjngSaurSgnwSundMoonMteiArmiAvstCakmKoreKthiManiPhliPhlpPhlvPrtiSamrTavtZmthZsymBamuLisuNkgbSarbBassDuplElbaGranKpelLomaMendMercNarbNbatPalmSindWaraAfakJurcMrooNshuShrdSoraTakrTangWoleHluwKhojTirhAghbMahjAhomHatrModiMultPaucSiddAdlmBhksMarcNewaOsgeHanbJamoZsyeGonmSoyoZanbDogrGongMakaMedfRohgSogdSogoElymHmnpNandWchoChrsDiakKitsYeziCpmnOugrTnsaTotoVithKawiNagm") } };
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::ScriptValueToShortNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::ScriptValueToShortNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_SHORT_LINEAR4_SC_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::ScriptValueToShortNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,27 @@
// @generated
/// Implement `DataProvider<BidiClassValueToShortNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_short_linear_bc_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_SHORT_LINEAR_BC_V1: &'static <icu::properties::provider::BidiClassValueToShortNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameLinearMapV1 { map: unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x17\0\0\0\0\0\x01\0\x02\0\x04\0\x06\0\x08\0\n\0\x0C\0\r\0\x0E\0\x10\0\x12\0\x15\0\x18\0\x1A\0\x1D\0 \0#\0&\0(\0+\0.\x001\0LRENESETANCSBSWSONLRELROALRLERLOPDFNSMBNFSILRIRLIPDI") } };
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::BidiClassValueToShortNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::BidiClassValueToShortNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_SHORT_LINEAR_BC_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::BidiClassValueToShortNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,27 @@
// @generated
/// Implement `DataProvider<EastAsianWidthValueToShortNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_short_linear_ea_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_SHORT_LINEAR_EA_V1: &'static <icu::properties::provider::EastAsianWidthValueToShortNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameLinearMapV1 { map: unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x06\0\0\0\0\0\x01\0\x02\0\x03\0\x04\0\x06\0NAHFNaW") } };
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::EastAsianWidthValueToShortNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::EastAsianWidthValueToShortNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_SHORT_LINEAR_EA_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::EastAsianWidthValueToShortNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,27 @@
// @generated
/// Implement `DataProvider<GeneralCategoryValueToShortNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_short_linear_gc_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_SHORT_LINEAR_GC_V1: &'static <icu::properties::provider::GeneralCategoryValueToShortNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameLinearMapV1 { map: unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x1E\0\0\0\0\0\x02\0\x04\0\x06\0\x08\0\n\0\x0C\0\x0E\0\x10\0\x12\0\x14\0\x16\0\x18\0\x1A\0\x1C\0\x1E\0 \0\"\0$\0&\0(\0*\0,\0.\x000\x002\x004\x006\08\0:\0CnLuLlLtLmLoMnMeMcNdNlNoZsZlZpCcCfCoCsPdPsPePcPoSmScSkSoPiPf") } };
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::GeneralCategoryValueToShortNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::GeneralCategoryValueToShortNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_SHORT_LINEAR_GC_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::GeneralCategoryValueToShortNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,27 @@
// @generated
/// Implement `DataProvider<GraphemeClusterBreakValueToShortNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_short_linear_gcb_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_SHORT_LINEAR_GCB_V1: &'static <icu::properties::provider::GraphemeClusterBreakValueToShortNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameLinearMapV1 { map: unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x12\0\0\0\0\0\x02\0\x04\0\x06\0\x08\0\t\0\x0B\0\r\0\x10\0\x11\0\x12\0\x14\0\x16\0\x18\0\x1A\0\x1D\0\x1F\0\"\0XXCNCREXLLFLVLVTTVSMPPRIEBEBGEMGAZZWJ") } };
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::GraphemeClusterBreakValueToShortNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::GraphemeClusterBreakValueToShortNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_SHORT_LINEAR_GCB_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::GraphemeClusterBreakValueToShortNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,27 @@
// @generated
/// Implement `DataProvider<IndicSyllabicCategoryValueToShortNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_short_linear_insc_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_SHORT_LINEAR_INSC_V1: &'static <icu::properties::provider::IndicSyllabicCategoryValueToShortNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameLinearMapV1 { map: unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"$\0\0\0\0\0\x05\0\r\0\x12\0'\08\0A\0O\0^\0s\0\x8E\0\x9E\0\xAE\0\xC3\0\xDC\0\xEE\0\x01\x01\x1B\x011\x01@\x01Q\x01W\x01g\x01q\x01v\x01|\x01\x89\x01\x94\x01\xA4\x01\xB5\x01\xC0\x01\xC9\x01\xCF\x01\xD6\x01\xDB\x01\xEA\x01OtherAvagrahaBinduBrahmi_Joining_NumberCantillation_MarkConsonantConsonant_DeadConsonant_FinalConsonant_Head_LetterConsonant_Initial_PostfixedConsonant_KillerConsonant_MedialConsonant_PlaceholderConsonant_Preceding_RephaConsonant_PrefixedConsonant_SubjoinedConsonant_Succeeding_RephaConsonant_With_StackerGemination_MarkInvisible_StackerJoinerModifying_LetterNon_JoinerNuktaNumberNumber_JoinerPure_KillerRegister_ShifterSyllable_ModifierTone_LetterTone_MarkViramaVisargaVowelVowel_DependentVowel_Independent") } };
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::IndicSyllabicCategoryValueToShortNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::IndicSyllabicCategoryValueToShortNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_SHORT_LINEAR_INSC_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::IndicSyllabicCategoryValueToShortNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,27 @@
// @generated
/// Implement `DataProvider<LineBreakValueToShortNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_short_linear_lb_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_SHORT_LINEAR_LB_V1: &'static <icu::properties::provider::LineBreakValueToShortNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameLinearMapV1 { map: unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"0\0\0\0\0\0\x02\0\x04\0\x06\0\x08\0\n\0\x0C\0\x0E\0\x10\0\x12\0\x14\0\x16\0\x18\0\x1A\0\x1C\0\x1E\0 \0\"\0$\0&\0(\0*\0,\0.\x000\x002\x004\x006\08\0:\0<\0>\0@\0B\0D\0F\0H\0J\0L\0N\0P\0R\0T\0W\0Y\0[\0]\0_\0XXAIALB2BABBBKCBCLCMCREXGLHYIDINISLFNSNUOPPOPRQUSASGSPSYZWNLWJH2H3JLJTJVCPCJHLRIEBEMZWJAKAPASVFVI") } };
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::LineBreakValueToShortNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::LineBreakValueToShortNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_SHORT_LINEAR_LB_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::LineBreakValueToShortNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,27 @@
// @generated
/// Implement `DataProvider<SentenceBreakValueToShortNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_short_linear_sb_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_SHORT_LINEAR_SB_V1: &'static <icu::properties::provider::SentenceBreakValueToShortNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameLinearMapV1 { map: unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x0F\0\0\0\0\0\x02\0\x04\0\x06\0\x08\0\n\0\x0C\0\x0E\0\x10\0\x12\0\x14\0\x16\0\x18\0\x1A\0\x1C\0XXATCLFOLONULESESPSTUPCREXLFSC") } };
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::SentenceBreakValueToShortNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::SentenceBreakValueToShortNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_SHORT_LINEAR_SB_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::SentenceBreakValueToShortNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,27 @@
// @generated
/// Implement `DataProvider<WordBreakValueToShortNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_short_linear_wb_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_SHORT_LINEAR_WB_V1: &'static <icu::properties::provider::WordBreakValueToShortNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameLinearMapV1 { map: unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x17\0\0\0\0\0\x02\0\x04\0\x06\0\x08\0\n\0\x0C\0\x0E\0\x10\0\x12\0\x18\0\x1A\0\x1C\0\x1E\0 \0\"\0$\0&\0(\0+\0-\x000\x003\0XXLEFOKAMLMNNUEXCRExtendLFMBNLRIHLSQDQEBEBGEMGAZZWJWSegSpace") } };
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::WordBreakValueToShortNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::WordBreakValueToShortNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_SHORT_LINEAR_WB_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::WordBreakValueToShortNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,32 @@
// @generated
/// Implement `DataProvider<CanonicalCombiningClassValueToShortNameV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_propnames_to_short_sparse_ccc_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPNAMES_TO_SHORT_SPARSE_CCC_V1: &'static <icu::properties::provider::CanonicalCombiningClassValueToShortNameV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::names::PropertyEnumToValueNameSparseMapV1 {
map: unsafe {
#[allow(unused_unsafe)]
zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\x01\0\x06\0\x07\0\x08\0\t\0\n\0\x0B\0\x0C\0\r\0\x0E\0\x0F\0\x10\0\x11\0\x12\0\x13\0\x14\0\x15\0\x16\0\x17\0\x18\0\x19\0\x1A\0\x1B\0\x1C\0\x1D\0\x1E\0\x1F\0 \0!\0\"\0#\0$\0T\0[\0g\0k\0v\0z\0\x81\0\x82\0\x84\0\x85\0\xC8\0\xCA\0\xD6\0\xD8\0\xDA\0\xDC\0\xDE\0\xE0\0\xE2\0\xE4\0\xE6\0\xE8\0\xE9\0\xEA\0\xF0\0") }, unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b":\0\0\0\0\0\x02\0\x04\0\x08\0\n\0\x0C\0\x0E\0\x13\0\x18\0\x1D\0\"\0'\0,\x001\x006\0;\0@\0E\0J\0O\0T\0Y\0^\0c\0h\0m\0r\0w\0|\0\x81\0\x86\0\x8B\0\x90\0\x95\0\x9A\0\x9F\0\xA5\0\xAB\0\xB1\0\xB7\0\xBD\0\xC3\0\xC9\0\xCF\0\xD3\0\xD6\0\xD9\0\xDD\0\xDF\0\xE0\0\xE2\0\xE3\0\xE4\0\xE6\0\xE7\0\xE9\0\xEB\0\xED\0NROVHANRNKKVVRCCC10CCC11CCC12CCC13CCC14CCC15CCC16CCC17CCC18CCC19CCC20CCC21CCC22CCC23CCC24CCC25CCC26CCC27CCC28CCC29CCC30CCC31CCC32CCC33CCC34CCC35CCC36CCC84CCC91CCC103CCC107CCC118CCC122CCC129CCC130CCC132CCC133ATBLATBATAATARBLBBRLRALAARDBDAIS") })
},
};
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::CanonicalCombiningClassValueToShortNameV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::CanonicalCombiningClassValueToShortNameV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPNAMES_TO_SHORT_SPARSE_CCC_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::CanonicalCombiningClassValueToShortNameV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,30 @@
// @generated
/// Implement `DataProvider<AsciiHexDigitV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_props_ahex_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPS_AHEX_V1: &'static <icu::properties::provider::AsciiHexDigitV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::PropertyCodePointSetV1::InversionList(unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"0\0\0\0:\0\0\0A\0\0\0G\0\0\0a\0\0\0g\0\0\0") }, 22u32)
});
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::AsciiHexDigitV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::AsciiHexDigitV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPS_AHEX_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::AsciiHexDigitV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,30 @@
// @generated
/// Implement `DataProvider<BidiControlV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_props_bidi_c_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPS_BIDI_C_V1: &'static <icu::properties::provider::BidiControlV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::PropertyCodePointSetV1::InversionList(unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x1C\x06\0\0\x1D\x06\0\0\x0E \0\0\x10 \0\0* \0\0/ \0\0f \0\0j \0\0") }, 12u32)
});
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::BidiControlV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::BidiControlV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPS_BIDI_C_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::BidiControlV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,30 @@
// @generated
/// Implement `DataProvider<BidiMirroredV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_props_bidi_m_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPS_BIDI_M_V1: &'static <icu::properties::provider::BidiMirroredV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::PropertyCodePointSetV1::InversionList(unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"(\0\0\0*\0\0\0<\0\0\0=\0\0\0>\0\0\0?\0\0\0[\0\0\0\\\0\0\0]\0\0\0^\0\0\0{\0\0\0|\0\0\0}\0\0\0~\0\0\0\xAB\0\0\0\xAC\0\0\0\xBB\0\0\0\xBC\0\0\0:\x0F\0\0>\x0F\0\0\x9B\x16\0\0\x9D\x16\0\09 \0\0; \0\0E \0\0G \0\0} \0\0\x7F \0\0\x8D \0\0\x8F \0\0@!\0\0A!\0\0\x01\"\0\0\x05\"\0\0\x08\"\0\0\x0E\"\0\0\x11\"\0\0\x12\"\0\0\x15\"\0\0\x17\"\0\0\x1A\"\0\0\x1E\"\0\0\x1F\"\0\0#\"\0\0$\"\0\0%\"\0\0&\"\0\0'\"\0\0+\"\0\x004\"\0\09\"\0\0:\"\0\0;\"\0\0M\"\0\0R\"\0\0V\"\0\0_\"\0\0a\"\0\0b\"\0\0c\"\0\0d\"\0\0l\"\0\0n\"\0\0\x8D\"\0\0\x8F\"\0\0\x93\"\0\0\x98\"\0\0\x99\"\0\0\xA2\"\0\0\xA4\"\0\0\xA6\"\0\0\xB9\"\0\0\xBE\"\0\0\xC0\"\0\0\xC9\"\0\0\xCE\"\0\0\xD0\"\0\0\xD2\"\0\0\xD6\"\0\0\xEE\"\0\0\xF0\"\0\0\0#\0\0\x08#\0\0\x0C#\0\0 #\0\0\"#\0\0)#\0\0+#\0\0h'\0\0v'\0\0\xC0'\0\0\xC1'\0\0\xC3'\0\0\xC7'\0\0\xC8'\0\0\xCA'\0\0\xCB'\0\0\xCE'\0\0\xD3'\0\0\xD7'\0\0\xDC'\0\0\xDF'\0\0\xE2'\0\0\xF0'\0\0\x83)\0\0\x99)\0\0\x9B)\0\0\xA1)\0\0\xA2)\0\0\xB0)\0\0\xB8)\0\0\xB9)\0\0\xC0)\0\0\xC6)\0\0\xC9)\0\0\xCA)\0\0\xCE)\0\0\xD3)\0\0\xD4)\0\0\xD6)\0\0\xD8)\0\0\xDD)\0\0\xE1)\0\0\xE2)\0\0\xE3)\0\0\xE6)\0\0\xE8)\0\0\xEA)\0\0\xF4)\0\0\xFA)\0\0\xFC)\0\0\xFE)\0\0\n*\0\0\x1D*\0\0\x1E*\0\0\"*\0\0$*\0\0%*\0\0&*\0\0'*\0\0)*\0\0**\0\0+*\0\0/*\0\x004*\0\x006*\0\0<*\0\0?*\0\0W*\0\0Y*\0\0d*\0\0f*\0\0j*\0\0n*\0\0o*\0\0q*\0\0s*\0\0u*\0\0y*\0\0\xA4*\0\0\xA6*\0\0\xAE*\0\0\xAF*\0\0\xD7*\0\0\xDC*\0\0\xDD*\0\0\xDE*\0\0\xDF*\0\0\xE2*\0\0\xE7*\0\0\xEC*\0\0\xEF*\0\0\xF3*\0\0\xF4*\0\0\xF7*\0\0\xFC*\0\0\xFD*\0\0\xFE*\0\0\xFE+\0\0\xFF+\0\0\x02.\0\0\x06.\0\0\t.\0\0\x0B.\0\0\x0C.\0\0\x0E.\0\0\x1C.\0\0\x1E.\0\0 .\0\0*.\0\0U.\0\0].\0\0\x080\0\0\x120\0\0\x140\0\0\x1C0\0\0Y\xFE\0\0_\xFE\0\0d\xFE\0\0f\xFE\0\0\x08\xFF\0\0\n\xFF\0\0\x1C\xFF\0\0\x1D\xFF\0\0\x1E\xFF\0\0\x1F\xFF\0\0;\xFF\0\0<\xFF\0\0=\xFF\0\0>\xFF\0\0[\xFF\0\0\\\xFF\0\0]\xFF\0\0^\xFF\0\0_\xFF\0\0a\xFF\0\0b\xFF\0\0d\xFF\0\0\xDB\xD6\x01\0\xDC\xD6\x01\0\x15\xD7\x01\0\x16\xD7\x01\0O\xD7\x01\0P\xD7\x01\0\x89\xD7\x01\0\x8A\xD7\x01\0\xC3\xD7\x01\0\xC4\xD7\x01\0") }, 553u32)
});
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::BidiMirroredV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::BidiMirroredV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPS_BIDI_M_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::BidiMirroredV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,30 @@
// @generated
/// Implement `DataProvider<BlankV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_props_blank_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPS_BLANK_V1: &'static <icu::properties::provider::BlankV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::PropertyCodePointSetV1::InversionList(unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\t\0\0\0\n\0\0\0 \0\0\0!\0\0\0\xA0\0\0\0\xA1\0\0\0\x80\x16\0\0\x81\x16\0\0\0 \0\0\x0B \0\0/ \0\x000 \0\0_ \0\0` \0\0\x000\0\0\x010\0\0") }, 18u32)
});
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::BlankV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::BlankV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPS_BLANK_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::BlankV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,30 @@
// @generated
/// Implement `DataProvider<CasedV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_props_cased_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPS_CASED_V1: &'static <icu::properties::provider::CasedV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::PropertyCodePointSetV1::InversionList(unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0a\0\0\0{\0\0\0\xAA\0\0\0\xAB\0\0\0\xB5\0\0\0\xB6\0\0\0\xBA\0\0\0\xBB\0\0\0\xC0\0\0\0\xD7\0\0\0\xD8\0\0\0\xF7\0\0\0\xF8\0\0\0\xBB\x01\0\0\xBC\x01\0\0\xC0\x01\0\0\xC4\x01\0\0\x94\x02\0\0\x95\x02\0\0\xB9\x02\0\0\xC0\x02\0\0\xC2\x02\0\0\xE0\x02\0\0\xE5\x02\0\0E\x03\0\0F\x03\0\0p\x03\0\0t\x03\0\0v\x03\0\0x\x03\0\0z\x03\0\0~\x03\0\0\x7F\x03\0\0\x80\x03\0\0\x86\x03\0\0\x87\x03\0\0\x88\x03\0\0\x8B\x03\0\0\x8C\x03\0\0\x8D\x03\0\0\x8E\x03\0\0\xA2\x03\0\0\xA3\x03\0\0\xF6\x03\0\0\xF7\x03\0\0\x82\x04\0\0\x8A\x04\0\x000\x05\0\x001\x05\0\0W\x05\0\0`\x05\0\0\x89\x05\0\0\xA0\x10\0\0\xC6\x10\0\0\xC7\x10\0\0\xC8\x10\0\0\xCD\x10\0\0\xCE\x10\0\0\xD0\x10\0\0\xFB\x10\0\0\xFC\x10\0\0\0\x11\0\0\xA0\x13\0\0\xF6\x13\0\0\xF8\x13\0\0\xFE\x13\0\0\x80\x1C\0\0\x89\x1C\0\0\x90\x1C\0\0\xBB\x1C\0\0\xBD\x1C\0\0\xC0\x1C\0\0\0\x1D\0\0\xC0\x1D\0\0\0\x1E\0\0\x16\x1F\0\0\x18\x1F\0\0\x1E\x1F\0\0 \x1F\0\0F\x1F\0\0H\x1F\0\0N\x1F\0\0P\x1F\0\0X\x1F\0\0Y\x1F\0\0Z\x1F\0\0[\x1F\0\0\\\x1F\0\0]\x1F\0\0^\x1F\0\0_\x1F\0\0~\x1F\0\0\x80\x1F\0\0\xB5\x1F\0\0\xB6\x1F\0\0\xBD\x1F\0\0\xBE\x1F\0\0\xBF\x1F\0\0\xC2\x1F\0\0\xC5\x1F\0\0\xC6\x1F\0\0\xCD\x1F\0\0\xD0\x1F\0\0\xD4\x1F\0\0\xD6\x1F\0\0\xDC\x1F\0\0\xE0\x1F\0\0\xED\x1F\0\0\xF2\x1F\0\0\xF5\x1F\0\0\xF6\x1F\0\0\xFD\x1F\0\0q \0\0r \0\0\x7F \0\0\x80 \0\0\x90 \0\0\x9D \0\0\x02!\0\0\x03!\0\0\x07!\0\0\x08!\0\0\n!\0\0\x14!\0\0\x15!\0\0\x16!\0\0\x19!\0\0\x1E!\0\0$!\0\0%!\0\0&!\0\0'!\0\0(!\0\0)!\0\0*!\0\0.!\0\0/!\0\x005!\0\09!\0\0:!\0\0<!\0\0@!\0\0E!\0\0J!\0\0N!\0\0O!\0\0`!\0\0\x80!\0\0\x83!\0\0\x85!\0\0\xB6$\0\0\xEA$\0\0\0,\0\0\xE5,\0\0\xEB,\0\0\xEF,\0\0\xF2,\0\0\xF4,\0\0\0-\0\0&-\0\0'-\0\0(-\0\0--\0\0.-\0\0@\xA6\0\0n\xA6\0\0\x80\xA6\0\0\x9E\xA6\0\0\"\xA7\0\0\x88\xA7\0\0\x8B\xA7\0\0\x8F\xA7\0\0\x90\xA7\0\0\xCB\xA7\0\0\xD0\xA7\0\0\xD2\xA7\0\0\xD3\xA7\0\0\xD4\xA7\0\0\xD5\xA7\0\0\xDA\xA7\0\0\xF2\xA7\0\0\xF7\xA7\0\0\xF8\xA7\0\0\xFB\xA7\0\x000\xAB\0\0[\xAB\0\0\\\xAB\0\0j\xAB\0\0p\xAB\0\0\xC0\xAB\0\0\0\xFB\0\0\x07\xFB\0\0\x13\xFB\0\0\x18\xFB\0\0!\xFF\0\0;\xFF\0\0A\xFF\0\0[\xFF\0\0\0\x04\x01\0P\x04\x01\0\xB0\x04\x01\0\xD4\x04\x01\0\xD8\x04\x01\0\xFC\x04\x01\0p\x05\x01\0{\x05\x01\0|\x05\x01\0\x8B\x05\x01\0\x8C\x05\x01\0\x93\x05\x01\0\x94\x05\x01\0\x96\x05\x01\0\x97\x05\x01\0\xA2\x05\x01\0\xA3\x05\x01\0\xB2\x05\x01\0\xB3\x05\x01\0\xBA\x05\x01\0\xBB\x05\x01\0\xBD\x05\x01\0\x80\x07\x01\0\x81\x07\x01\0\x83\x07\x01\0\x86\x07\x01\0\x87\x07\x01\0\xB1\x07\x01\0\xB2\x07\x01\0\xBB\x07\x01\0\x80\x0C\x01\0\xB3\x0C\x01\0\xC0\x0C\x01\0\xF3\x0C\x01\0\xA0\x18\x01\0\xE0\x18\x01\0@n\x01\0\x80n\x01\0\0\xD4\x01\0U\xD4\x01\0V\xD4\x01\0\x9D\xD4\x01\0\x9E\xD4\x01\0\xA0\xD4\x01\0\xA2\xD4\x01\0\xA3\xD4\x01\0\xA5\xD4\x01\0\xA7\xD4\x01\0\xA9\xD4\x01\0\xAD\xD4\x01\0\xAE\xD4\x01\0\xBA\xD4\x01\0\xBB\xD4\x01\0\xBC\xD4\x01\0\xBD\xD4\x01\0\xC4\xD4\x01\0\xC5\xD4\x01\0\x06\xD5\x01\0\x07\xD5\x01\0\x0B\xD5\x01\0\r\xD5\x01\0\x15\xD5\x01\0\x16\xD5\x01\0\x1D\xD5\x01\0\x1E\xD5\x01\0:\xD5\x01\0;\xD5\x01\0?\xD5\x01\0@\xD5\x01\0E\xD5\x01\0F\xD5\x01\0G\xD5\x01\0J\xD5\x01\0Q\xD5\x01\0R\xD5\x01\0\xA6\xD6\x01\0\xA8\xD6\x01\0\xC1\xD6\x01\0\xC2\xD6\x01\0\xDB\xD6\x01\0\xDC\xD6\x01\0\xFB\xD6\x01\0\xFC\xD6\x01\0\x15\xD7\x01\0\x16\xD7\x01\x005\xD7\x01\x006\xD7\x01\0O\xD7\x01\0P\xD7\x01\0o\xD7\x01\0p\xD7\x01\0\x89\xD7\x01\0\x8A\xD7\x01\0\xA9\xD7\x01\0\xAA\xD7\x01\0\xC3\xD7\x01\0\xC4\xD7\x01\0\xCC\xD7\x01\0\0\xDF\x01\0\n\xDF\x01\0\x0B\xDF\x01\0\x1F\xDF\x01\0%\xDF\x01\0+\xDF\x01\x000\xE0\x01\0n\xE0\x01\0\0\xE9\x01\0D\xE9\x01\x000\xF1\x01\0J\xF1\x01\0P\xF1\x01\0j\xF1\x01\0p\xF1\x01\0\x8A\xF1\x01\0") }, 4526u32)
});
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::CasedV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::CasedV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPS_CASED_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::CasedV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,30 @@
// @generated
/// Implement `DataProvider<FullCompositionExclusionV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_props_comp_ex_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPS_COMP_EX_V1: &'static <icu::properties::provider::FullCompositionExclusionV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::PropertyCodePointSetV1::InversionList(unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"@\x03\0\0B\x03\0\0C\x03\0\0E\x03\0\0t\x03\0\0u\x03\0\0~\x03\0\0\x7F\x03\0\0\x87\x03\0\0\x88\x03\0\0X\t\0\0`\t\0\0\xDC\t\0\0\xDE\t\0\0\xDF\t\0\0\xE0\t\0\x003\n\0\x004\n\0\x006\n\0\x007\n\0\0Y\n\0\0\\\n\0\0^\n\0\0_\n\0\0\\\x0B\0\0^\x0B\0\0C\x0F\0\0D\x0F\0\0M\x0F\0\0N\x0F\0\0R\x0F\0\0S\x0F\0\0W\x0F\0\0X\x0F\0\0\\\x0F\0\0]\x0F\0\0i\x0F\0\0j\x0F\0\0s\x0F\0\0t\x0F\0\0u\x0F\0\0w\x0F\0\0x\x0F\0\0y\x0F\0\0\x81\x0F\0\0\x82\x0F\0\0\x93\x0F\0\0\x94\x0F\0\0\x9D\x0F\0\0\x9E\x0F\0\0\xA2\x0F\0\0\xA3\x0F\0\0\xA7\x0F\0\0\xA8\x0F\0\0\xAC\x0F\0\0\xAD\x0F\0\0\xB9\x0F\0\0\xBA\x0F\0\0q\x1F\0\0r\x1F\0\0s\x1F\0\0t\x1F\0\0u\x1F\0\0v\x1F\0\0w\x1F\0\0x\x1F\0\0y\x1F\0\0z\x1F\0\0{\x1F\0\0|\x1F\0\0}\x1F\0\0~\x1F\0\0\xBB\x1F\0\0\xBC\x1F\0\0\xBE\x1F\0\0\xBF\x1F\0\0\xC9\x1F\0\0\xCA\x1F\0\0\xCB\x1F\0\0\xCC\x1F\0\0\xD3\x1F\0\0\xD4\x1F\0\0\xDB\x1F\0\0\xDC\x1F\0\0\xE3\x1F\0\0\xE4\x1F\0\0\xEB\x1F\0\0\xEC\x1F\0\0\xEE\x1F\0\0\xF0\x1F\0\0\xF9\x1F\0\0\xFA\x1F\0\0\xFB\x1F\0\0\xFC\x1F\0\0\xFD\x1F\0\0\xFE\x1F\0\0\0 \0\0\x02 \0\0&!\0\0'!\0\0*!\0\0,!\0\0)#\0\0+#\0\0\xDC*\0\0\xDD*\0\0\0\xF9\0\0\x0E\xFA\0\0\x10\xFA\0\0\x11\xFA\0\0\x12\xFA\0\0\x13\xFA\0\0\x15\xFA\0\0\x1F\xFA\0\0 \xFA\0\0!\xFA\0\0\"\xFA\0\0#\xFA\0\0%\xFA\0\0'\xFA\0\0*\xFA\0\0n\xFA\0\0p\xFA\0\0\xDA\xFA\0\0\x1D\xFB\0\0\x1E\xFB\0\0\x1F\xFB\0\0 \xFB\0\0*\xFB\0\x007\xFB\0\08\xFB\0\0=\xFB\0\0>\xFB\0\0?\xFB\0\0@\xFB\0\0B\xFB\0\0C\xFB\0\0E\xFB\0\0F\xFB\0\0O\xFB\0\0^\xD1\x01\0e\xD1\x01\0\xBB\xD1\x01\0\xC1\xD1\x01\0\0\xF8\x02\0\x1E\xFA\x02\0") }, 1120u32)
});
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::FullCompositionExclusionV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::FullCompositionExclusionV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPS_COMP_EX_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::FullCompositionExclusionV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,30 @@
// @generated
/// Implement `DataProvider<ChangesWhenCasemappedV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_props_cwcm_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPS_CWCM_V1: &'static <icu::properties::provider::ChangesWhenCasemappedV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::PropertyCodePointSetV1::InversionList(unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0a\0\0\0{\0\0\0\xB5\0\0\0\xB6\0\0\0\xC0\0\0\0\xD7\0\0\0\xD8\0\0\0\xF7\0\0\0\xF8\0\0\08\x01\0\09\x01\0\0\x8D\x01\0\0\x8E\x01\0\0\x9B\x01\0\0\x9C\x01\0\0\xAA\x01\0\0\xAC\x01\0\0\xBA\x01\0\0\xBC\x01\0\0\xBE\x01\0\0\xBF\x01\0\0\xC0\x01\0\0\xC4\x01\0\0!\x02\0\0\"\x02\0\x004\x02\0\0:\x02\0\0U\x02\0\0V\x02\0\0X\x02\0\0Y\x02\0\0Z\x02\0\0[\x02\0\0]\x02\0\0`\x02\0\0b\x02\0\0c\x02\0\0d\x02\0\0e\x02\0\0g\x02\0\0h\x02\0\0m\x02\0\0o\x02\0\0p\x02\0\0q\x02\0\0s\x02\0\0u\x02\0\0v\x02\0\0}\x02\0\0~\x02\0\0\x80\x02\0\0\x81\x02\0\0\x82\x02\0\0\x84\x02\0\0\x87\x02\0\0\x8D\x02\0\0\x92\x02\0\0\x93\x02\0\0\x9D\x02\0\0\x9F\x02\0\0E\x03\0\0F\x03\0\0p\x03\0\0t\x03\0\0v\x03\0\0x\x03\0\0{\x03\0\0~\x03\0\0\x7F\x03\0\0\x80\x03\0\0\x86\x03\0\0\x87\x03\0\0\x88\x03\0\0\x8B\x03\0\0\x8C\x03\0\0\x8D\x03\0\0\x8E\x03\0\0\xA2\x03\0\0\xA3\x03\0\0\xD2\x03\0\0\xD5\x03\0\0\xF6\x03\0\0\xF7\x03\0\0\xFC\x03\0\0\xFD\x03\0\0\x82\x04\0\0\x8A\x04\0\x000\x05\0\x001\x05\0\0W\x05\0\0a\x05\0\0\x88\x05\0\0\xA0\x10\0\0\xC6\x10\0\0\xC7\x10\0\0\xC8\x10\0\0\xCD\x10\0\0\xCE\x10\0\0\xD0\x10\0\0\xFB\x10\0\0\xFD\x10\0\0\0\x11\0\0\xA0\x13\0\0\xF6\x13\0\0\xF8\x13\0\0\xFE\x13\0\0\x80\x1C\0\0\x89\x1C\0\0\x90\x1C\0\0\xBB\x1C\0\0\xBD\x1C\0\0\xC0\x1C\0\0y\x1D\0\0z\x1D\0\0}\x1D\0\0~\x1D\0\0\x8E\x1D\0\0\x8F\x1D\0\0\0\x1E\0\0\x9C\x1E\0\0\x9E\x1E\0\0\x9F\x1E\0\0\xA0\x1E\0\0\x16\x1F\0\0\x18\x1F\0\0\x1E\x1F\0\0 \x1F\0\0F\x1F\0\0H\x1F\0\0N\x1F\0\0P\x1F\0\0X\x1F\0\0Y\x1F\0\0Z\x1F\0\0[\x1F\0\0\\\x1F\0\0]\x1F\0\0^\x1F\0\0_\x1F\0\0~\x1F\0\0\x80\x1F\0\0\xB5\x1F\0\0\xB6\x1F\0\0\xBD\x1F\0\0\xBE\x1F\0\0\xBF\x1F\0\0\xC2\x1F\0\0\xC5\x1F\0\0\xC6\x1F\0\0\xCD\x1F\0\0\xD0\x1F\0\0\xD4\x1F\0\0\xD6\x1F\0\0\xDC\x1F\0\0\xE0\x1F\0\0\xED\x1F\0\0\xF2\x1F\0\0\xF5\x1F\0\0\xF6\x1F\0\0\xFD\x1F\0\0&!\0\0'!\0\0*!\0\0,!\0\x002!\0\x003!\0\0N!\0\0O!\0\0`!\0\0\x80!\0\0\x83!\0\0\x85!\0\0\xB6$\0\0\xEA$\0\0\0,\0\0q,\0\0r,\0\0t,\0\0u,\0\0w,\0\0~,\0\0\xE4,\0\0\xEB,\0\0\xEF,\0\0\xF2,\0\0\xF4,\0\0\0-\0\0&-\0\0'-\0\0(-\0\0--\0\0.-\0\0@\xA6\0\0n\xA6\0\0\x80\xA6\0\0\x9C\xA6\0\0\"\xA7\0\x000\xA7\0\x002\xA7\0\0p\xA7\0\0y\xA7\0\0\x88\xA7\0\0\x8B\xA7\0\0\x8E\xA7\0\0\x90\xA7\0\0\x95\xA7\0\0\x96\xA7\0\0\xAF\xA7\0\0\xB0\xA7\0\0\xCB\xA7\0\0\xD0\xA7\0\0\xD2\xA7\0\0\xD6\xA7\0\0\xDA\xA7\0\0\xF5\xA7\0\0\xF7\xA7\0\0S\xAB\0\0T\xAB\0\0p\xAB\0\0\xC0\xAB\0\0\0\xFB\0\0\x07\xFB\0\0\x13\xFB\0\0\x18\xFB\0\0!\xFF\0\0;\xFF\0\0A\xFF\0\0[\xFF\0\0\0\x04\x01\0P\x04\x01\0\xB0\x04\x01\0\xD4\x04\x01\0\xD8\x04\x01\0\xFC\x04\x01\0p\x05\x01\0{\x05\x01\0|\x05\x01\0\x8B\x05\x01\0\x8C\x05\x01\0\x93\x05\x01\0\x94\x05\x01\0\x96\x05\x01\0\x97\x05\x01\0\xA2\x05\x01\0\xA3\x05\x01\0\xB2\x05\x01\0\xB3\x05\x01\0\xBA\x05\x01\0\xBB\x05\x01\0\xBD\x05\x01\0\x80\x0C\x01\0\xB3\x0C\x01\0\xC0\x0C\x01\0\xF3\x0C\x01\0\xA0\x18\x01\0\xE0\x18\x01\0@n\x01\0\x80n\x01\0\0\xE9\x01\0D\xE9\x01\0") }, 2927u32)
});
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::ChangesWhenCasemappedV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::ChangesWhenCasemappedV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPS_CWCM_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::ChangesWhenCasemappedV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,30 @@
// @generated
/// Implement `DataProvider<DashV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_props_dash_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPS_DASH_V1: &'static <icu::properties::provider::DashV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::PropertyCodePointSetV1::InversionList(unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"-\0\0\0.\0\0\0\x8A\x05\0\0\x8B\x05\0\0\xBE\x05\0\0\xBF\x05\0\0\0\x14\0\0\x01\x14\0\0\x06\x18\0\0\x07\x18\0\0\x10 \0\0\x16 \0\0S \0\0T \0\0{ \0\0| \0\0\x8B \0\0\x8C \0\0\x12\"\0\0\x13\"\0\0\x17.\0\0\x18.\0\0\x1A.\0\0\x1B.\0\0:.\0\0<.\0\0@.\0\0A.\0\0].\0\0^.\0\0\x1C0\0\0\x1D0\0\x0000\0\x0010\0\0\xA00\0\0\xA10\0\x001\xFE\0\x003\xFE\0\0X\xFE\0\0Y\xFE\0\0c\xFE\0\0d\xFE\0\0\r\xFF\0\0\x0E\xFF\0\0\xAD\x0E\x01\0\xAE\x0E\x01\0") }, 30u32)
});
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::DashV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::DashV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPS_DASH_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::DashV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,30 @@
// @generated
/// Implement `DataProvider<DeprecatedV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_props_dep_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPS_DEP_V1: &'static <icu::properties::provider::DeprecatedV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::PropertyCodePointSetV1::InversionList(unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"I\x01\0\0J\x01\0\0s\x06\0\0t\x06\0\0w\x0F\0\0x\x0F\0\0y\x0F\0\0z\x0F\0\0\xA3\x17\0\0\xA5\x17\0\0j \0\0p \0\0)#\0\0+#\0\0\x01\0\x0E\0\x02\0\x0E\0") }, 15u32)
});
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::DeprecatedV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::DeprecatedV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPS_DEP_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::DeprecatedV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,30 @@
// @generated
/// Implement `DataProvider<DefaultIgnorableCodePointV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_props_di_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPS_DI_V1: &'static <icu::properties::provider::DefaultIgnorableCodePointV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::PropertyCodePointSetV1::InversionList(unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xAD\0\0\0\xAE\0\0\0O\x03\0\0P\x03\0\0\x1C\x06\0\0\x1D\x06\0\0_\x11\0\0a\x11\0\0\xB4\x17\0\0\xB6\x17\0\0\x0B\x18\0\0\x10\x18\0\0\x0B \0\0\x10 \0\0* \0\0/ \0\0` \0\0p \0\0d1\0\0e1\0\0\0\xFE\0\0\x10\xFE\0\0\xFF\xFE\0\0\0\xFF\0\0\xA0\xFF\0\0\xA1\xFF\0\0\xF0\xFF\0\0\xF9\xFF\0\0\xA0\xBC\x01\0\xA4\xBC\x01\0s\xD1\x01\0{\xD1\x01\0\0\0\x0E\0\0\x10\x0E\0") }, 4174u32)
});
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::DefaultIgnorableCodePointV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::DefaultIgnorableCodePointV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPS_DI_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::DefaultIgnorableCodePointV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,30 @@
// @generated
/// Implement `DataProvider<DiacriticV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_props_dia_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPS_DIA_V1: &'static <icu::properties::provider::DiacriticV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::PropertyCodePointSetV1::InversionList(unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"^\0\0\0_\0\0\0`\0\0\0a\0\0\0\xA8\0\0\0\xA9\0\0\0\xAF\0\0\0\xB0\0\0\0\xB4\0\0\0\xB5\0\0\0\xB7\0\0\0\xB9\0\0\0\xB0\x02\0\0O\x03\0\0P\x03\0\0X\x03\0\0]\x03\0\0c\x03\0\0t\x03\0\0v\x03\0\0z\x03\0\0{\x03\0\0\x84\x03\0\0\x86\x03\0\0\x83\x04\0\0\x88\x04\0\0Y\x05\0\0Z\x05\0\0\x91\x05\0\0\xA2\x05\0\0\xA3\x05\0\0\xBE\x05\0\0\xBF\x05\0\0\xC0\x05\0\0\xC1\x05\0\0\xC3\x05\0\0\xC4\x05\0\0\xC5\x05\0\0K\x06\0\0S\x06\0\0W\x06\0\0Y\x06\0\0\xDF\x06\0\0\xE1\x06\0\0\xE5\x06\0\0\xE7\x06\0\0\xEA\x06\0\0\xED\x06\0\x000\x07\0\0K\x07\0\0\xA6\x07\0\0\xB1\x07\0\0\xEB\x07\0\0\xF6\x07\0\0\x18\x08\0\0\x1A\x08\0\0\x98\x08\0\0\xA0\x08\0\0\xC9\x08\0\0\xD3\x08\0\0\xE3\x08\0\0\xFF\x08\0\0<\t\0\0=\t\0\0M\t\0\0N\t\0\0Q\t\0\0U\t\0\0q\t\0\0r\t\0\0\xBC\t\0\0\xBD\t\0\0\xCD\t\0\0\xCE\t\0\0<\n\0\0=\n\0\0M\n\0\0N\n\0\0\xBC\n\0\0\xBD\n\0\0\xCD\n\0\0\xCE\n\0\0\xFD\n\0\0\0\x0B\0\0<\x0B\0\0=\x0B\0\0M\x0B\0\0N\x0B\0\0U\x0B\0\0V\x0B\0\0\xCD\x0B\0\0\xCE\x0B\0\0<\x0C\0\0=\x0C\0\0M\x0C\0\0N\x0C\0\0\xBC\x0C\0\0\xBD\x0C\0\0\xCD\x0C\0\0\xCE\x0C\0\0;\r\0\0=\r\0\0M\r\0\0N\r\0\0\xCA\r\0\0\xCB\r\0\0G\x0E\0\0M\x0E\0\0N\x0E\0\0O\x0E\0\0\xBA\x0E\0\0\xBB\x0E\0\0\xC8\x0E\0\0\xCD\x0E\0\0\x18\x0F\0\0\x1A\x0F\0\x005\x0F\0\x006\x0F\0\x007\x0F\0\08\x0F\0\09\x0F\0\0:\x0F\0\0>\x0F\0\0@\x0F\0\0\x82\x0F\0\0\x85\x0F\0\0\x86\x0F\0\0\x88\x0F\0\0\xC6\x0F\0\0\xC7\x0F\0\x007\x10\0\08\x10\0\09\x10\0\0;\x10\0\0c\x10\0\0e\x10\0\0i\x10\0\0n\x10\0\0\x87\x10\0\0\x8E\x10\0\0\x8F\x10\0\0\x90\x10\0\0\x9A\x10\0\0\x9C\x10\0\0]\x13\0\0`\x13\0\0\x14\x17\0\0\x16\x17\0\0\xC9\x17\0\0\xD4\x17\0\0\xDD\x17\0\0\xDE\x17\0\09\x19\0\0<\x19\0\0u\x1A\0\0}\x1A\0\0\x7F\x1A\0\0\x80\x1A\0\0\xB0\x1A\0\0\xBF\x1A\0\0\xC1\x1A\0\0\xCC\x1A\0\x004\x1B\0\x005\x1B\0\0D\x1B\0\0E\x1B\0\0k\x1B\0\0t\x1B\0\0\xAA\x1B\0\0\xAC\x1B\0\x006\x1C\0\08\x1C\0\0x\x1C\0\0~\x1C\0\0\xD0\x1C\0\0\xE9\x1C\0\0\xED\x1C\0\0\xEE\x1C\0\0\xF4\x1C\0\0\xF5\x1C\0\0\xF7\x1C\0\0\xFA\x1C\0\0,\x1D\0\0k\x1D\0\0\xC4\x1D\0\0\xD0\x1D\0\0\xF5\x1D\0\0\0\x1E\0\0\xBD\x1F\0\0\xBE\x1F\0\0\xBF\x1F\0\0\xC2\x1F\0\0\xCD\x1F\0\0\xD0\x1F\0\0\xDD\x1F\0\0\xE0\x1F\0\0\xED\x1F\0\0\xF0\x1F\0\0\xFD\x1F\0\0\xFF\x1F\0\0\xEF,\0\0\xF2,\0\0/.\0\x000.\0\0*0\0\x0000\0\0\x990\0\0\x9D0\0\0\xFC0\0\0\xFD0\0\0o\xA6\0\0p\xA6\0\0|\xA6\0\0~\xA6\0\0\x7F\xA6\0\0\x80\xA6\0\0\x9C\xA6\0\0\x9E\xA6\0\0\xF0\xA6\0\0\xF2\xA6\0\0\0\xA7\0\0\"\xA7\0\0\x88\xA7\0\0\x8B\xA7\0\0\xF8\xA7\0\0\xFA\xA7\0\0\xC4\xA8\0\0\xC5\xA8\0\0\xE0\xA8\0\0\xF2\xA8\0\0+\xA9\0\0/\xA9\0\0S\xA9\0\0T\xA9\0\0\xB3\xA9\0\0\xB4\xA9\0\0\xC0\xA9\0\0\xC1\xA9\0\0\xE5\xA9\0\0\xE6\xA9\0\0{\xAA\0\0~\xAA\0\0\xBF\xAA\0\0\xC3\xAA\0\0\xF6\xAA\0\0\xF7\xAA\0\0[\xAB\0\0`\xAB\0\0i\xAB\0\0l\xAB\0\0\xEC\xAB\0\0\xEE\xAB\0\0\x1E\xFB\0\0\x1F\xFB\0\0 \xFE\0\x000\xFE\0\0>\xFF\0\0?\xFF\0\0@\xFF\0\0A\xFF\0\0p\xFF\0\0q\xFF\0\0\x9E\xFF\0\0\xA0\xFF\0\0\xE3\xFF\0\0\xE4\xFF\0\0\xE0\x02\x01\0\xE1\x02\x01\0\x80\x07\x01\0\x86\x07\x01\0\x87\x07\x01\0\xB1\x07\x01\0\xB2\x07\x01\0\xBB\x07\x01\0\xE5\n\x01\0\xE7\n\x01\0\"\r\x01\0(\r\x01\0\xFD\x0E\x01\0\0\x0F\x01\0F\x0F\x01\0Q\x0F\x01\0\x82\x0F\x01\0\x86\x0F\x01\0F\x10\x01\0G\x10\x01\0p\x10\x01\0q\x10\x01\0\xB9\x10\x01\0\xBB\x10\x01\x003\x11\x01\x005\x11\x01\0s\x11\x01\0t\x11\x01\0\xC0\x11\x01\0\xC1\x11\x01\0\xCA\x11\x01\0\xCD\x11\x01\x005\x12\x01\x007\x12\x01\0\xE9\x12\x01\0\xEB\x12\x01\0<\x13\x01\0=\x13\x01\0M\x13\x01\0N\x13\x01\0f\x13\x01\0m\x13\x01\0p\x13\x01\0u\x13\x01\0B\x14\x01\0C\x14\x01\0F\x14\x01\0G\x14\x01\0\xC2\x14\x01\0\xC4\x14\x01\0\xBF\x15\x01\0\xC1\x15\x01\0?\x16\x01\0@\x16\x01\0\xB6\x16\x01\0\xB8\x16\x01\0+\x17\x01\0,\x17\x01\09\x18\x01\0;\x18\x01\0=\x19\x01\0?\x19\x01\0C\x19\x01\0D\x19\x01\0\xE0\x19\x01\0\xE1\x19\x01\x004\x1A\x01\x005\x1A\x01\0G\x1A\x01\0H\x1A\x01\0\x99\x1A\x01\0\x9A\x1A\x01\0?\x1C\x01\0@\x1C\x01\0B\x1D\x01\0C\x1D\x01\0D\x1D\x01\0F\x1D\x01\0\x97\x1D\x01\0\x98\x1D\x01\0G4\x01\0V4\x01\0\xF0j\x01\0\xF5j\x01\x000k\x01\x007k\x01\0\x8Fo\x01\0\xA0o\x01\0\xF0o\x01\0\xF2o\x01\0\xF0\xAF\x01\0\xF4\xAF\x01\0\xF5\xAF\x01\0\xFC\xAF\x01\0\xFD\xAF\x01\0\xFF\xAF\x01\0\0\xCF\x01\0.\xCF\x01\x000\xCF\x01\0G\xCF\x01\0g\xD1\x01\0j\xD1\x01\0m\xD1\x01\0s\xD1\x01\0{\xD1\x01\0\x83\xD1\x01\0\x85\xD1\x01\0\x8C\xD1\x01\0\xAA\xD1\x01\0\xAE\xD1\x01\x000\xE0\x01\0n\xE0\x01\x000\xE1\x01\x007\xE1\x01\0\xAE\xE2\x01\0\xAF\xE2\x01\0\xEC\xE2\x01\0\xF0\xE2\x01\0\xD0\xE8\x01\0\xD7\xE8\x01\0D\xE9\x01\0G\xE9\x01\0H\xE9\x01\0K\xE9\x01\0") }, 1144u32)
});
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::DiacriticV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::DiacriticV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPS_DIA_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::DiacriticV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,30 @@
// @generated
/// Implement `DataProvider<EmojiModifierBaseV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_props_ebase_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPS_EBASE_V1: &'static <icu::properties::provider::EmojiModifierBaseV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::PropertyCodePointSetV1::InversionList(unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x1D&\0\0\x1E&\0\0\xF9&\0\0\xFA&\0\0\n'\0\0\x0E'\0\0\x85\xF3\x01\0\x86\xF3\x01\0\xC2\xF3\x01\0\xC5\xF3\x01\0\xC7\xF3\x01\0\xC8\xF3\x01\0\xCA\xF3\x01\0\xCD\xF3\x01\0B\xF4\x01\0D\xF4\x01\0F\xF4\x01\0Q\xF4\x01\0f\xF4\x01\0y\xF4\x01\0|\xF4\x01\0}\xF4\x01\0\x81\xF4\x01\0\x84\xF4\x01\0\x85\xF4\x01\0\x88\xF4\x01\0\x8F\xF4\x01\0\x90\xF4\x01\0\x91\xF4\x01\0\x92\xF4\x01\0\xAA\xF4\x01\0\xAB\xF4\x01\0t\xF5\x01\0v\xF5\x01\0z\xF5\x01\0{\xF5\x01\0\x90\xF5\x01\0\x91\xF5\x01\0\x95\xF5\x01\0\x97\xF5\x01\0E\xF6\x01\0H\xF6\x01\0K\xF6\x01\0P\xF6\x01\0\xA3\xF6\x01\0\xA4\xF6\x01\0\xB4\xF6\x01\0\xB7\xF6\x01\0\xC0\xF6\x01\0\xC1\xF6\x01\0\xCC\xF6\x01\0\xCD\xF6\x01\0\x0C\xF9\x01\0\r\xF9\x01\0\x0F\xF9\x01\0\x10\xF9\x01\0\x18\xF9\x01\0 \xF9\x01\0&\xF9\x01\0'\xF9\x01\x000\xF9\x01\0:\xF9\x01\0<\xF9\x01\0?\xF9\x01\0w\xF9\x01\0x\xF9\x01\0\xB5\xF9\x01\0\xB7\xF9\x01\0\xB8\xF9\x01\0\xBA\xF9\x01\0\xBB\xF9\x01\0\xBC\xF9\x01\0\xCD\xF9\x01\0\xD0\xF9\x01\0\xD1\xF9\x01\0\xDE\xF9\x01\0\xC3\xFA\x01\0\xC6\xFA\x01\0\xF0\xFA\x01\0\xF9\xFA\x01\0") }, 134u32)
});
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::EmojiModifierBaseV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::EmojiModifierBaseV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPS_EBASE_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::EmojiModifierBaseV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,30 @@
// @generated
/// Implement `DataProvider<EmojiComponentV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_props_ecomp_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPS_ECOMP_V1: &'static <icu::properties::provider::EmojiComponentV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::PropertyCodePointSetV1::InversionList(unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"#\0\0\0$\0\0\0*\0\0\0+\0\0\x000\0\0\0:\0\0\0\r \0\0\x0E \0\0\xE3 \0\0\xE4 \0\0\x0F\xFE\0\0\x10\xFE\0\0\xE6\xF1\x01\0\0\xF2\x01\0\xFB\xF3\x01\0\0\xF4\x01\0\xB0\xF9\x01\0\xB4\xF9\x01\0 \0\x0E\0\x80\0\x0E\0") }, 146u32)
});
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::EmojiComponentV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::EmojiComponentV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPS_ECOMP_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::EmojiComponentV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,30 @@
// @generated
/// Implement `DataProvider<EmojiModifierV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_props_emod_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPS_EMOD_V1: &'static <icu::properties::provider::EmojiModifierV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::PropertyCodePointSetV1::InversionList(unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xFB\xF3\x01\0\0\xF4\x01\0") }, 5u32)
});
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::EmojiModifierV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::EmojiModifierV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPS_EMOD_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::EmojiModifierV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,30 @@
// @generated
/// Implement `DataProvider<EmojiV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_props_emoji_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPS_EMOJI_V1: &'static <icu::properties::provider::EmojiV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::PropertyCodePointSetV1::InversionList(unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"#\0\0\0$\0\0\0*\0\0\0+\0\0\x000\0\0\0:\0\0\0\xA9\0\0\0\xAA\0\0\0\xAE\0\0\0\xAF\0\0\0< \0\0= \0\0I \0\0J \0\0\"!\0\0#!\0\09!\0\0:!\0\0\x94!\0\0\x9A!\0\0\xA9!\0\0\xAB!\0\0\x1A#\0\0\x1C#\0\0(#\0\0)#\0\0\xCF#\0\0\xD0#\0\0\xE9#\0\0\xF4#\0\0\xF8#\0\0\xFB#\0\0\xC2$\0\0\xC3$\0\0\xAA%\0\0\xAC%\0\0\xB6%\0\0\xB7%\0\0\xC0%\0\0\xC1%\0\0\xFB%\0\0\xFF%\0\0\0&\0\0\x05&\0\0\x0E&\0\0\x0F&\0\0\x11&\0\0\x12&\0\0\x14&\0\0\x16&\0\0\x18&\0\0\x19&\0\0\x1D&\0\0\x1E&\0\0 &\0\0!&\0\0\"&\0\0$&\0\0&&\0\0'&\0\0*&\0\0+&\0\0.&\0\x000&\0\08&\0\0;&\0\0@&\0\0A&\0\0B&\0\0C&\0\0H&\0\0T&\0\0_&\0\0a&\0\0c&\0\0d&\0\0e&\0\0g&\0\0h&\0\0i&\0\0{&\0\0|&\0\0~&\0\0\x80&\0\0\x92&\0\0\x98&\0\0\x99&\0\0\x9A&\0\0\x9B&\0\0\x9D&\0\0\xA0&\0\0\xA2&\0\0\xA7&\0\0\xA8&\0\0\xAA&\0\0\xAC&\0\0\xB0&\0\0\xB2&\0\0\xBD&\0\0\xBF&\0\0\xC4&\0\0\xC6&\0\0\xC8&\0\0\xC9&\0\0\xCE&\0\0\xD0&\0\0\xD1&\0\0\xD2&\0\0\xD3&\0\0\xD5&\0\0\xE9&\0\0\xEB&\0\0\xF0&\0\0\xF6&\0\0\xF7&\0\0\xFB&\0\0\xFD&\0\0\xFE&\0\0\x02'\0\0\x03'\0\0\x05'\0\0\x06'\0\0\x08'\0\0\x0E'\0\0\x0F'\0\0\x10'\0\0\x12'\0\0\x13'\0\0\x14'\0\0\x15'\0\0\x16'\0\0\x17'\0\0\x1D'\0\0\x1E'\0\0!'\0\0\"'\0\0('\0\0)'\0\x003'\0\x005'\0\0D'\0\0E'\0\0G'\0\0H'\0\0L'\0\0M'\0\0N'\0\0O'\0\0S'\0\0V'\0\0W'\0\0X'\0\0c'\0\0e'\0\0\x95'\0\0\x98'\0\0\xA1'\0\0\xA2'\0\0\xB0'\0\0\xB1'\0\0\xBF'\0\0\xC0'\0\x004)\0\x006)\0\0\x05+\0\0\x08+\0\0\x1B+\0\0\x1D+\0\0P+\0\0Q+\0\0U+\0\0V+\0\x0000\0\x0010\0\0=0\0\0>0\0\0\x972\0\0\x982\0\0\x992\0\0\x9A2\0\0\x04\xF0\x01\0\x05\xF0\x01\0\xCF\xF0\x01\0\xD0\xF0\x01\0p\xF1\x01\0r\xF1\x01\0~\xF1\x01\0\x80\xF1\x01\0\x8E\xF1\x01\0\x8F\xF1\x01\0\x91\xF1\x01\0\x9B\xF1\x01\0\xE6\xF1\x01\0\0\xF2\x01\0\x01\xF2\x01\0\x03\xF2\x01\0\x1A\xF2\x01\0\x1B\xF2\x01\0/\xF2\x01\x000\xF2\x01\x002\xF2\x01\0;\xF2\x01\0P\xF2\x01\0R\xF2\x01\0\0\xF3\x01\0\"\xF3\x01\0$\xF3\x01\0\x94\xF3\x01\0\x96\xF3\x01\0\x98\xF3\x01\0\x99\xF3\x01\0\x9C\xF3\x01\0\x9E\xF3\x01\0\xF1\xF3\x01\0\xF3\xF3\x01\0\xF6\xF3\x01\0\xF7\xF3\x01\0\xFE\xF4\x01\0\xFF\xF4\x01\0>\xF5\x01\0I\xF5\x01\0O\xF5\x01\0P\xF5\x01\0h\xF5\x01\0o\xF5\x01\0q\xF5\x01\0s\xF5\x01\0{\xF5\x01\0\x87\xF5\x01\0\x88\xF5\x01\0\x8A\xF5\x01\0\x8E\xF5\x01\0\x90\xF5\x01\0\x91\xF5\x01\0\x95\xF5\x01\0\x97\xF5\x01\0\xA4\xF5\x01\0\xA6\xF5\x01\0\xA8\xF5\x01\0\xA9\xF5\x01\0\xB1\xF5\x01\0\xB3\xF5\x01\0\xBC\xF5\x01\0\xBD\xF5\x01\0\xC2\xF5\x01\0\xC5\xF5\x01\0\xD1\xF5\x01\0\xD4\xF5\x01\0\xDC\xF5\x01\0\xDF\xF5\x01\0\xE1\xF5\x01\0\xE2\xF5\x01\0\xE3\xF5\x01\0\xE4\xF5\x01\0\xE8\xF5\x01\0\xE9\xF5\x01\0\xEF\xF5\x01\0\xF0\xF5\x01\0\xF3\xF5\x01\0\xF4\xF5\x01\0\xFA\xF5\x01\0P\xF6\x01\0\x80\xF6\x01\0\xC6\xF6\x01\0\xCB\xF6\x01\0\xD3\xF6\x01\0\xD5\xF6\x01\0\xD8\xF6\x01\0\xDC\xF6\x01\0\xE6\xF6\x01\0\xE9\xF6\x01\0\xEA\xF6\x01\0\xEB\xF6\x01\0\xED\xF6\x01\0\xF0\xF6\x01\0\xF1\xF6\x01\0\xF3\xF6\x01\0\xFD\xF6\x01\0\xE0\xF7\x01\0\xEC\xF7\x01\0\xF0\xF7\x01\0\xF1\xF7\x01\0\x0C\xF9\x01\0;\xF9\x01\0<\xF9\x01\0F\xF9\x01\0G\xF9\x01\0\0\xFA\x01\0p\xFA\x01\0}\xFA\x01\0\x80\xFA\x01\0\x89\xFA\x01\0\x90\xFA\x01\0\xBE\xFA\x01\0\xBF\xFA\x01\0\xC6\xFA\x01\0\xCE\xFA\x01\0\xDC\xFA\x01\0\xE0\xFA\x01\0\xE9\xFA\x01\0\xF0\xFA\x01\0\xF9\xFA\x01\0") }, 1424u32)
});
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::EmojiV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::EmojiV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPS_EMOJI_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::EmojiV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

View File

@ -0,0 +1,30 @@
// @generated
/// Implement `DataProvider<EmojiPresentationV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_props_epres_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl $provider {
#[doc(hidden)]
pub const SINGLETON_PROPS_EPRES_V1: &'static <icu::properties::provider::EmojiPresentationV1Marker as icu_provider::DataMarker>::Yokeable = &icu::properties::provider::PropertyCodePointSetV1::InversionList(unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x1A#\0\0\x1C#\0\0\xE9#\0\0\xED#\0\0\xF0#\0\0\xF1#\0\0\xF3#\0\0\xF4#\0\0\xFD%\0\0\xFF%\0\0\x14&\0\0\x16&\0\0H&\0\0T&\0\0\x7F&\0\0\x80&\0\0\x93&\0\0\x94&\0\0\xA1&\0\0\xA2&\0\0\xAA&\0\0\xAC&\0\0\xBD&\0\0\xBF&\0\0\xC4&\0\0\xC6&\0\0\xCE&\0\0\xCF&\0\0\xD4&\0\0\xD5&\0\0\xEA&\0\0\xEB&\0\0\xF2&\0\0\xF4&\0\0\xF5&\0\0\xF6&\0\0\xFA&\0\0\xFB&\0\0\xFD&\0\0\xFE&\0\0\x05'\0\0\x06'\0\0\n'\0\0\x0C'\0\0('\0\0)'\0\0L'\0\0M'\0\0N'\0\0O'\0\0S'\0\0V'\0\0W'\0\0X'\0\0\x95'\0\0\x98'\0\0\xB0'\0\0\xB1'\0\0\xBF'\0\0\xC0'\0\0\x1B+\0\0\x1D+\0\0P+\0\0Q+\0\0U+\0\0V+\0\0\x04\xF0\x01\0\x05\xF0\x01\0\xCF\xF0\x01\0\xD0\xF0\x01\0\x8E\xF1\x01\0\x8F\xF1\x01\0\x91\xF1\x01\0\x9B\xF1\x01\0\xE6\xF1\x01\0\0\xF2\x01\0\x01\xF2\x01\0\x02\xF2\x01\0\x1A\xF2\x01\0\x1B\xF2\x01\0/\xF2\x01\x000\xF2\x01\x002\xF2\x01\x007\xF2\x01\08\xF2\x01\0;\xF2\x01\0P\xF2\x01\0R\xF2\x01\0\0\xF3\x01\0!\xF3\x01\0-\xF3\x01\x006\xF3\x01\x007\xF3\x01\0}\xF3\x01\0~\xF3\x01\0\x94\xF3\x01\0\xA0\xF3\x01\0\xCB\xF3\x01\0\xCF\xF3\x01\0\xD4\xF3\x01\0\xE0\xF3\x01\0\xF1\xF3\x01\0\xF4\xF3\x01\0\xF5\xF3\x01\0\xF8\xF3\x01\0?\xF4\x01\0@\xF4\x01\0A\xF4\x01\0B\xF4\x01\0\xFD\xF4\x01\0\xFF\xF4\x01\0>\xF5\x01\0K\xF5\x01\0O\xF5\x01\0P\xF5\x01\0h\xF5\x01\0z\xF5\x01\0{\xF5\x01\0\x95\xF5\x01\0\x97\xF5\x01\0\xA4\xF5\x01\0\xA5\xF5\x01\0\xFB\xF5\x01\0P\xF6\x01\0\x80\xF6\x01\0\xC6\xF6\x01\0\xCC\xF6\x01\0\xCD\xF6\x01\0\xD0\xF6\x01\0\xD3\xF6\x01\0\xD5\xF6\x01\0\xD8\xF6\x01\0\xDC\xF6\x01\0\xE0\xF6\x01\0\xEB\xF6\x01\0\xED\xF6\x01\0\xF4\xF6\x01\0\xFD\xF6\x01\0\xE0\xF7\x01\0\xEC\xF7\x01\0\xF0\xF7\x01\0\xF1\xF7\x01\0\x0C\xF9\x01\0;\xF9\x01\0<\xF9\x01\0F\xF9\x01\0G\xF9\x01\0\0\xFA\x01\0p\xFA\x01\0}\xFA\x01\0\x80\xFA\x01\0\x89\xFA\x01\0\x90\xFA\x01\0\xBE\xFA\x01\0\xBF\xFA\x01\0\xC6\xFA\x01\0\xCE\xFA\x01\0\xDC\xFA\x01\0\xE0\xFA\x01\0\xE9\xFA\x01\0\xF0\xFA\x01\0\xF9\xFA\x01\0") }, 1205u32)
});
}
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::EmojiPresentationV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::EmojiPresentationV1Marker>, icu_provider::DataError> {
if req.locale.is_empty() {
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPS_EPRES_V1)), metadata: Default::default() })
} else {
Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::properties::provider::EmojiPresentationV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
}
}
}
};
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,783 @@
// @generated
/// Implement `DataProvider<ExemplarCharactersIndexV1Marker>` on the given struct using the data
/// hardcoded in this file. This allows the struct to be used with
/// `icu`'s `_unstable` constructors.
#[doc(hidden)]
#[macro_export]
macro_rules! __impl_props_exemplarchars_index_v1 {
($ provider : ty) => {
#[clippy::msrv = "1.67"]
const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
#[clippy::msrv = "1.67"]
impl icu_provider::DataProvider<icu::properties::provider::ExemplarCharactersIndexV1Marker> for $provider {
fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::ExemplarCharactersIndexV1Marker>, icu_provider::DataError> {
static PS: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"!\x06\0\0#\x06\0\0'\x06\0\0)\x06\0\0*\x06\0\0;\x06\0\0A\x06\0\0C\x06\0\0D\x06\0\0I\x06\0\0|\x06\0\0}\x06\0\0~\x06\0\0\x7F\x06\0\0\x81\x06\0\0\x82\x06\0\0\x85\x06\0\0\x87\x06\0\0\x89\x06\0\0\x8A\x06\0\0\x93\x06\0\0\x94\x06\0\0\x96\x06\0\0\x97\x06\0\0\x98\x06\0\0\x99\x06\0\0\x9A\x06\0\0\x9B\x06\0\0\xA9\x06\0\0\xAA\x06\0\0\xAB\x06\0\0\xAC\x06\0\0\xBC\x06\0\0\xBD\x06\0\0\xCC\x06\0\0\xCD\x06\0\0") }, 42u32)
},
zerovec::VarZeroVec::new(),
));
static UR: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"!\x06\0\0\"\x06\0\0'\x06\0\0)\x06\0\0*\x06\0\0;\x06\0\0A\x06\0\0C\x06\0\0D\x06\0\0G\x06\0\0H\x06\0\0I\x06\0\0y\x06\0\0z\x06\0\0~\x06\0\0\x7F\x06\0\0\x86\x06\0\0\x87\x06\0\0\x88\x06\0\0\x89\x06\0\0\x91\x06\0\0\x92\x06\0\0\x98\x06\0\0\x99\x06\0\0\xA9\x06\0\0\xAA\x06\0\0\xAF\x06\0\0\xB0\x06\0\0\xBE\x06\0\0\xBF\x06\0\0\xC1\x06\0\0\xC2\x06\0\0\xCC\x06\0\0\xCD\x06\0\0\xD2\x06\0\0\xD3\x06\0\0") }, 38u32)
},
zerovec::VarZeroVec::new(),
));
static UG: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"'\x06\0\0)\x06\0\0*\x06\0\0+\x06\0\0,\x06\0\0-\x06\0\0.\x06\0\x000\x06\0\x001\x06\0\x005\x06\0\0:\x06\0\0;\x06\0\0A\x06\0\0G\x06\0\0H\x06\0\0K\x06\0\0~\x06\0\0\x7F\x06\0\0\x86\x06\0\0\x87\x06\0\0\x98\x06\0\0\x99\x06\0\0\xAD\x06\0\0\xAE\x06\0\0\xAF\x06\0\0\xB0\x06\0\0\xBE\x06\0\0\xBF\x06\0\0\xC6\x06\0\0\xC9\x06\0\0\xCB\x06\0\0\xCC\x06\0\0\xD0\x06\0\0\xD1\x06\0\0\xD5\x06\0\0\xD6\x06\0\0") }, 32u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x08\0\0\0\0\0\x04\0\x08\0\x0C\0\x10\0\x14\0\x18\0\x1C\0\xD8\xA6\xD8\xA7\xD8\xA6\xD9\x87\xD8\xA6\xD9\x88\xD8\xA6\xD9\x89\xD8\xA6\xDB\x86\xD8\xA6\xDB\x87\xD8\xA6\xDB\x88\xD8\xA6\xDB\x90") },
));
static SD: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"'\x06\0\0)\x06\0\0*\x06\0\0;\x06\0\0A\x06\0\0C\x06\0\0D\x06\0\0I\x06\0\0J\x06\0\0K\x06\0\0z\x06\0\0|\x06\0\0}\x06\0\0\x81\x06\0\0\x83\x06\0\0\x85\x06\0\0\x86\x06\0\0\x88\x06\0\0\x8A\x06\0\0\x8B\x06\0\0\x8C\x06\0\0\x8E\x06\0\0\x8F\x06\0\0\x90\x06\0\0\x99\x06\0\0\x9A\x06\0\0\xA6\x06\0\0\xA7\x06\0\0\xA9\x06\0\0\xAB\x06\0\0\xAF\x06\0\0\xB0\x06\0\0\xB1\x06\0\0\xB2\x06\0\0\xB3\x06\0\0\xB4\x06\0\0\xBB\x06\0\0\xBC\x06\0\0\xBE\x06\0\0\xBF\x06\0\0") }, 50u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x02\0\0\0\0\0\x04\0\xD8\xAC\xDA\xBE\xDA\xAF\xDA\xBE") },
));
static AR: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"'\x06\0\0)\x06\0\0*\x06\0\0;\x06\0\0A\x06\0\0I\x06\0\0J\x06\0\0K\x06\0\0") }, 28u32)
},
zerovec::VarZeroVec::new(),
));
static KO: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"11\0\x0021\0\x0041\0\x0051\0\x0071\0\081\0\091\0\0:1\0\0A1\0\0C1\0\0E1\0\0F1\0\0G1\0\0I1\0\0J1\0\0O1\0\0") }, 14u32)
},
zerovec::VarZeroVec::new(),
));
static HY: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"1\x05\0\0W\x05\0\0") }, 38u32)
},
zerovec::VarZeroVec::new(),
));
static MI: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0B\0\0\0E\0\0\0F\0\0\0H\0\0\0J\0\0\0K\0\0\0L\0\0\0M\0\0\0Q\0\0\0R\0\0\0S\0\0\0T\0\0\0V\0\0\0W\0\0\0X\0\0\0") }, 13u32)
},
zerovec::VarZeroVec::new(),
));
static TOK: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0B\0\0\0E\0\0\0F\0\0\0I\0\0\0Q\0\0\0S\0\0\0V\0\0\0W\0\0\0X\0\0\0") }, 14u32)
},
zerovec::VarZeroVec::new(),
));
static TO: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0B\0\0\0E\0\0\0G\0\0\0H\0\0\0J\0\0\0K\0\0\0Q\0\0\0S\0\0\0W\0\0\0\xBB\x02\0\0\xBC\x02\0\0") }, 16u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x01\0\0\0\0\0NG") },
));
static KGP: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0B\0\0\0E\0\0\0L\0\0\0M\0\0\0Q\0\0\0R\0\0\0W\0\0\0Y\0\0\0Z\0\0\0") }, 18u32)
},
zerovec::VarZeroVec::new(),
));
static QU: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0B\0\0\0H\0\0\0J\0\0\0K\0\0\0O\0\0\0P\0\0\0R\0\0\0S\0\0\0V\0\0\0W\0\0\0X\0\0\0Y\0\0\0Z\0\0\0\xD1\0\0\0\xD2\0\0\0") }, 15u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x02\0\0\0\0\0\x02\0ChLl") },
));
static YRL: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0C\0\0\0D\0\0\0F\0\0\0G\0\0\0H\0\0\0I\0\0\0J\0\0\0K\0\0\0L\0\0\0M\0\0\0O\0\0\0P\0\0\0Q\0\0\0R\0\0\0V\0\0\0W\0\0\0Z\0\0\0") }, 17u32)
},
zerovec::VarZeroVec::new(),
));
static YO: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0C\0\0\0D\0\0\0Q\0\0\0R\0\0\0V\0\0\0W\0\0\0X\0\0\0Y\0\0\0Z\0\0\0") }, 21u32)
},
zerovec::VarZeroVec::new(),
));
static TK: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0C\0\0\0D\0\0\0Q\0\0\0R\0\0\0V\0\0\0W\0\0\0X\0\0\0Y\0\0\0[\0\0\0\xC4\0\0\0\xC5\0\0\0\xC7\0\0\0\xC8\0\0\0\xD6\0\0\0\xD7\0\0\0\xDC\0\0\0\xDE\0\0\0G\x01\0\0H\x01\0\0^\x01\0\0_\x01\0\0}\x01\0\0~\x01\0\0") }, 30u32)
},
zerovec::VarZeroVec::new(),
));
static KEA: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0C\0\0\0D\0\0\0Q\0\0\0R\0\0\0W\0\0\0X\0\0\0Y\0\0\0Z\0\0\0[\0\0\0") }, 22u32)
},
zerovec::VarZeroVec::new(),
));
static PCM: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0C\0\0\0D\0\0\0Q\0\0\0R\0\0\0X\0\0\0Y\0\0\0[\0\0\0") }, 23u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x01\0\0\0\0\0CH") },
));
static UZ: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0C\0\0\0D\0\0\0W\0\0\0X\0\0\0[\0\0\0") }, 24u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x04\0\0\0\0\0\x02\0\x05\0\x08\0ChG\xCA\xBBO\xCA\xBBSh") },
));
static JV: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0F\0\0\0G\0\0\0Q\0\0\0R\0\0\0V\0\0\0W\0\0\0X\0\0\0Y\0\0\0Z\0\0\0\xC2\0\0\0\xC3\0\0\0\xC5\0\0\0\xC6\0\0\0\xC8\0\0\0\xCB\0\0\0\xCC\0\0\0\xCD\0\0\0\xD2\0\0\0\xD3\0\0\0\xD9\0\0\0\xDA\0\0\0") }, 29u32)
},
zerovec::VarZeroVec::new(),
));
static GD: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0J\0\0\0L\0\0\0Q\0\0\0R\0\0\0V\0\0\0") }, 18u32)
},
zerovec::VarZeroVec::new(),
));
static AST: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0J\0\0\0L\0\0\0W\0\0\0X\0\0\0[\0\0\0\xD1\0\0\0\xD2\0\0\0") }, 24u32)
},
zerovec::VarZeroVec::new(),
));
static HA: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0P\0\0\0R\0\0\0V\0\0\0W\0\0\0X\0\0\0Y\0\0\0[\0\0\0\x81\x01\0\0\x82\x01\0\0\x8A\x01\0\0\x8B\x01\0\0\x98\x01\0\0\x99\x01\0\0\xB3\x01\0\0\xB4\x01\0\0") }, 26u32)
},
zerovec::VarZeroVec::new(),
));
static LT: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0Q\0\0\0R\0\0\0W\0\0\0Y\0\0\0[\0\0\0\x04\x01\0\0\x05\x01\0\0\x0C\x01\0\0\r\x01\0\0\x16\x01\0\0\x17\x01\0\0\x18\x01\0\0\x19\x01\0\0.\x01\0\0/\x01\0\0`\x01\0\0a\x01\0\0j\x01\0\0k\x01\0\0r\x01\0\0s\x01\0\0}\x01\0\0~\x01\0\0") }, 32u32)
},
zerovec::VarZeroVec::new(),
));
static EO: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0Q\0\0\0R\0\0\0W\0\0\0Z\0\0\0[\0\0\0\x08\x01\0\0\t\x01\0\0\x1C\x01\0\0\x1D\x01\0\0$\x01\0\0%\x01\0\x004\x01\0\x005\x01\0\0\\\x01\0\0]\x01\0\0l\x01\0\0m\x01\0\0") }, 28u32)
},
zerovec::VarZeroVec::new(),
));
static FY: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0Q\0\0\0R\0\0\0Y\0\0\0Z\0\0\0[\0\0\0") }, 24u32)
},
zerovec::VarZeroVec::new(),
));
static BR: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0Q\0\0\0R\0\0\0[\0\0\0") }, 25u32)
},
zerovec::VarZeroVec::new(),
));
static SQ: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0W\0\0\0X\0\0\0[\0\0\0\xC7\0\0\0\xC8\0\0\0\xCB\0\0\0\xCC\0\0\0") }, 27u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\t\0\0\0\0\0\x02\0\x04\0\x06\0\x08\0\n\0\x0C\0\x0E\0\x10\0DHGJLLNJRRSHTHXHZH") },
));
static SC: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0") }, 26u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x01\0\0\0\0\0TZ") },
));
static CY: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0") }, 26u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x08\0\0\0\0\0\x02\0\x04\0\x06\0\x08\0\n\0\x0C\0\x0E\0CHDDFFLLNGPHRHTH") },
));
static AF: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0") }, 26u32)
},
zerovec::VarZeroVec::new(),
));
static WO: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0J\x01\0\0K\x01\0\0") }, 27u32)
},
zerovec::VarZeroVec::new(),
));
static LV: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\0\x01\0\0\x01\x01\0\0\x0C\x01\0\0\r\x01\0\0\x12\x01\0\0\x13\x01\0\0\"\x01\0\0#\x01\0\0*\x01\0\0+\x01\0\x006\x01\0\x007\x01\0\0;\x01\0\0<\x01\0\0E\x01\0\0F\x01\0\0`\x01\0\0a\x01\0\0j\x01\0\0k\x01\0\0}\x01\0\0~\x01\0\0") }, 37u32)
},
zerovec::VarZeroVec::new(),
));
static PRG: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\0\x01\0\0\x01\x01\0\0\x12\x01\0\0\x13\x01\0\0\"\x01\0\0#\x01\0\0*\x01\0\0+\x01\0\x006\x01\0\x007\x01\0\0E\x01\0\0F\x01\0\0L\x01\0\0M\x01\0\0V\x01\0\0W\x01\0\0`\x01\0\0a\x01\0\0j\x01\0\0k\x01\0\0}\x01\0\0~\x01\0\0\x1A\x02\0\0\x1B\x02\0\0\x10\x1E\0\0\x11\x1E\0\0") }, 39u32)
},
zerovec::VarZeroVec::new(),
));
static MT: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\n\x01\0\0\x0B\x01\0\0 \x01\0\0!\x01\0\0&\x01\0\0'\x01\0\0{\x01\0\0|\x01\0\0") }, 30u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x02\0\0\0\0\0\x03\0G\xC4\xA6IE*") },
));
static DSB: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\x06\x01\0\0\x07\x01\0\0\x0C\x01\0\0\r\x01\0\0A\x01\0\0B\x01\0\0Z\x01\0\0[\x01\0\0`\x01\0\0a\x01\0\0y\x01\0\0z\x01\0\0}\x01\0\0~\x01\0\0") }, 33u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x01\0\0\0\0\0Ch") },
));
static HSB: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\x06\x01\0\0\x07\x01\0\0\x0C\x01\0\0\r\x01\0\0A\x01\0\0B\x01\0\0`\x01\0\0a\x01\0\0}\x01\0\0~\x01\0\0") }, 31u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x02\0\0\0\0\0\x02\0CHD\xC5\xB9") },
));
static HR: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\x06\x01\0\0\x07\x01\0\0\x0C\x01\0\0\r\x01\0\0\x10\x01\0\0\x11\x01\0\0`\x01\0\0a\x01\0\0}\x01\0\0~\x01\0\0") }, 31u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x03\0\0\0\0\0\x03\0\x05\0D\xC5\xBDLJNJ") },
));
static SL: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\x06\x01\0\0\x07\x01\0\0\x0C\x01\0\0\r\x01\0\0\x10\x01\0\0\x11\x01\0\0`\x01\0\0a\x01\0\0}\x01\0\0~\x01\0\0") }, 31u32)
},
zerovec::VarZeroVec::new(),
));
static BS: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\x06\x01\0\0\x07\x01\0\0\x0C\x01\0\0\r\x01\0\0`\x01\0\0a\x01\0\0}\x01\0\0~\x01\0\0") }, 30u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x03\0\0\0\0\0\x03\0\x05\0D\xC5\xBDLJNJ") },
));
static CS: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\x0C\x01\0\0\r\x01\0\0X\x01\0\0Y\x01\0\0`\x01\0\0a\x01\0\0}\x01\0\0~\x01\0\0") }, 30u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x01\0\0\0\0\0CH") },
));
static HA_NE: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\x81\x01\0\0\x82\x01\0\0\x8A\x01\0\0\x8B\x01\0\0\x98\x01\0\0\x99\x01\0\0\xB3\x01\0\0\xB4\x01\0\0") }, 30u32)
},
zerovec::VarZeroVec::new(),
));
static RM: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\xC0\0\0\0\xC1\0\0\0\xC8\0\0\0\xCA\0\0\0\xCC\0\0\0\xCD\0\0\0\xD2\0\0\0\xD3\0\0\0\xD9\0\0\0\xDA\0\0\0") }, 32u32)
},
zerovec::VarZeroVec::new(),
));
static IS: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\xC1\0\0\0\xC2\0\0\0\xC6\0\0\0\xC7\0\0\0\xC9\0\0\0\xCA\0\0\0\xCD\0\0\0\xCE\0\0\0\xD0\0\0\0\xD1\0\0\0\xD3\0\0\0\xD4\0\0\0\xD6\0\0\0\xD7\0\0\0\xDA\0\0\0\xDB\0\0\0\xDD\0\0\0\xDF\0\0\0") }, 36u32)
},
zerovec::VarZeroVec::new(),
));
static FO: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\xC1\0\0\0\xC2\0\0\0\xC6\0\0\0\xC7\0\0\0\xCD\0\0\0\xCE\0\0\0\xD0\0\0\0\xD1\0\0\0\xD3\0\0\0\xD4\0\0\0\xD8\0\0\0\xD9\0\0\0\xDA\0\0\0\xDB\0\0\0\xDD\0\0\0\xDE\0\0\0") }, 34u32)
},
zerovec::VarZeroVec::new(),
));
static HU: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\xC1\0\0\0\xC2\0\0\0\xC9\0\0\0\xCA\0\0\0\xCD\0\0\0\xCE\0\0\0\xD3\0\0\0\xD4\0\0\0\xD6\0\0\0\xD7\0\0\0\xDA\0\0\0\xDB\0\0\0\xDC\0\0\0\xDD\0\0\0P\x01\0\0Q\x01\0\0p\x01\0\0q\x01\0\0") }, 35u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\t\0\0\0\0\0\x02\0\x04\0\x07\0\t\0\x0B\0\r\0\x0F\0\x11\0CSDZDZSGYLYNYSZTYZS") },
));
static VI: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\xC2\0\0\0\xC3\0\0\0\xCA\0\0\0\xCB\0\0\0\xD4\0\0\0\xD5\0\0\0\x02\x01\0\0\x03\x01\0\0\x10\x01\0\0\x11\x01\0\0\xA0\x01\0\0\xA1\x01\0\0\xAF\x01\0\0\xB0\x01\0\0") }, 33u32)
},
zerovec::VarZeroVec::new(),
));
static RO: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\xC2\0\0\0\xC3\0\0\0\xCE\0\0\0\xCF\0\0\0\x02\x01\0\0\x03\x01\0\0\x18\x02\0\0\x19\x02\0\0\x1A\x02\0\0\x1B\x02\0\0") }, 31u32)
},
zerovec::VarZeroVec::new(),
));
static SK: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\xC4\0\0\0\xC5\0\0\0\xD4\0\0\0\xD5\0\0\0\x0C\x01\0\0\r\x01\0\0\x0E\x01\0\0\x0F\x01\0\0=\x01\0\0>\x01\0\0`\x01\0\0a\x01\0\0d\x01\0\0e\x01\0\0}\x01\0\0~\x01\0\0") }, 34u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x01\0\0\0\0\0CH") },
));
static ET: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\xC4\0\0\0\xC5\0\0\0\xD5\0\0\0\xD7\0\0\0\xDC\0\0\0\xDD\0\0\0`\x01\0\0a\x01\0\0}\x01\0\0~\x01\0\0") }, 32u32)
},
zerovec::VarZeroVec::new(),
));
static DE_AT: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\xC4\0\0\0\xC5\0\0\0\xD6\0\0\0\xD7\0\0\0\xDC\0\0\0\xDD\0\0\0") }, 29u32)
},
zerovec::VarZeroVec::new(),
));
static FI: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\xC4\0\0\0\xC6\0\0\0\xD6\0\0\0\xD7\0\0\0") }, 29u32)
},
zerovec::VarZeroVec::new(),
));
static DA: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\xC5\0\0\0\xC7\0\0\0\xD8\0\0\0\xD9\0\0\0") }, 29u32)
},
zerovec::VarZeroVec::new(),
));
static KU: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\xC7\0\0\0\xC8\0\0\0\xCA\0\0\0\xCB\0\0\0\xCE\0\0\0\xCF\0\0\0\xDB\0\0\0\xDC\0\0\0^\x01\0\0_\x01\0\0") }, 31u32)
},
zerovec::VarZeroVec::new(),
));
static AZ: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\xC7\0\0\0\xC8\0\0\0\xD6\0\0\0\xD7\0\0\0\xDC\0\0\0\xDD\0\0\0\x1E\x01\0\0\x1F\x01\0\x000\x01\0\x001\x01\0\0^\x01\0\0_\x01\0\0\x8F\x01\0\0\x90\x01\0\0") }, 33u32)
},
zerovec::VarZeroVec::new(),
));
static TR: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\xC7\0\0\0\xC8\0\0\0\xD6\0\0\0\xD7\0\0\0\xDC\0\0\0\xDD\0\0\x000\x01\0\x001\x01\0\0^\x01\0\0_\x01\0\0") }, 31u32)
},
zerovec::VarZeroVec::new(),
));
static SU: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\xC9\0\0\0\xCA\0\0\0") }, 27u32)
},
zerovec::VarZeroVec::new(),
));
static FIL: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\xD1\0\0\0\xD2\0\0\0") }, 27u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x01\0\0\0\0\0Ng") },
));
static ES: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\xD1\0\0\0\xD2\0\0\0") }, 27u32)
},
zerovec::VarZeroVec::new(),
));
static PL: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\xD3\0\0\0\xD4\0\0\0\x06\x01\0\0\x07\x01\0\0A\x01\0\0B\x01\0\0Z\x01\0\0[\x01\0\0y\x01\0\0z\x01\0\0{\x01\0\0|\x01\0\0") }, 32u32)
},
zerovec::VarZeroVec::new(),
));
static SZL: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0\0[\0\0\0\xD4\0\0\0\xD5\0\0\0\x06\x01\0\0\x07\x01\0\0A\x01\0\0B\x01\0\0C\x01\0\0D\x01\0\0L\x01\0\0M\x01\0\0Z\x01\0\0[\x01\0\0y\x01\0\0z\x01\0\0{\x01\0\0|\x01\0\0") }, 34u32)
},
zerovec::VarZeroVec::new(),
));
static JA: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"B0\0\0C0\0\0K0\0\0L0\0\0U0\0\0V0\0\0_0\0\0`0\0\0j0\0\0k0\0\0o0\0\0p0\0\0~0\0\0\x7F0\0\0\x840\0\0\x850\0\0\x890\0\0\x8A0\0\0\x8F0\0\0\x900\0\0") }, 10u32)
},
zerovec::VarZeroVec::new(),
));
static SO: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"B\0\0\0E\0\0\0F\0\0\0I\0\0\0J\0\0\0O\0\0\0Q\0\0\0U\0\0\0W\0\0\0Z\0\0\0") }, 18u32)
},
zerovec::VarZeroVec::new(),
));
static FA: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\"\x06\0\0#\x06\0\0'\x06\0\0)\x06\0\0*\x06\0\0;\x06\0\0A\x06\0\0C\x06\0\0D\x06\0\0I\x06\0\0~\x06\0\0\x7F\x06\0\0\x86\x06\0\0\x87\x06\0\0\x98\x06\0\0\x99\x06\0\0\xA9\x06\0\0\xAA\x06\0\0\xAF\x06\0\0\xB0\x06\0\0\xCC\x06\0\0\xCD\x06\0\0") }, 33u32)
},
zerovec::VarZeroVec::new(),
));
static ZH_HANT: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0N\0\0\x01N\0\0(N\0\0)N\0\x006N\0\x007N\0\0?N\0\0@N\0\0YN\0\0ZN\0\0\x85N\0\0\x86N\0\0\x8CN\0\0\x8DN\0\0\xA0N\0\0\xA1N\0\0\xBAN\0\0\xBBN\0\0?Q\0\0@Q\0\0eQ\0\0fQ\0\0kQ\0\0lQ\0\0\x82Q\0\0\x83Q\0\0\x96Q\0\0\x97Q\0\0\xABQ\0\0\xACQ\0\0\xE0Q\0\0\xE1Q\0\0\xF5Q\0\0\xF6Q\0\0\0R\0\0\x01R\0\0\x9BR\0\0\x9CR\0\0\xF9R\0\0\xFAR\0\0\x15S\0\0\x16S\0\0\x1AS\0\0\x1BS\0\08S\0\09S\0\0AS\0\0BS\0\0\\S\0\0]S\0\0iS\0\0jS\0\0\x82S\0\0\x83S\0\0\xB6S\0\0\xB7S\0\0\xC8S\0\0\xC9S\0\0\xE3S\0\0\xE4S\0\0\xD7V\0\0\xD8V\0\0\x1FW\0\0 W\0\0\xEBX\0\0\xECX\0\0\x02Y\0\0\x03Y\0\0\nY\0\0\x0BY\0\0\x15Y\0\0\x16Y\0\0'Y\0\0(Y\0\0sY\0\0tY\0\0P[\0\0Q[\0\0\x80[\0\0\x81[\0\0\xF8[\0\0\xF9[\0\0\x0F\\\0\0\x10\\\0\0\"\\\0\0#\\\0\08\\\0\09\\\0\0n\\\0\0o\\\0\0q\\\0\0r\\\0\0\xDB]\0\0\xDC]\0\0\xE5]\0\0\xE6]\0\0\xF1]\0\0\xF2]\0\0\xFE]\0\0\xFF]\0\0r^\0\0s^\0\0z^\0\0{^\0\0\x7F^\0\0\x80^\0\0\xF4^\0\0\xF5^\0\0\xFE^\0\0\xFF^\0\0\x0B_\0\0\x0C_\0\0\x13_\0\0\x14_\0\0P_\0\0Q_\0\0a_\0\0b_\0\0s_\0\0t_\0\0\xC3_\0\0\xC4_\0\0\x08b\0\0\tb\0\x006b\0\x007b\0\0Kb\0\0Lb\0\0/e\0\x000e\0\x004e\0\x005e\0\0\x87e\0\0\x88e\0\0\x97e\0\0\x98e\0\0\xA4e\0\0\xA5e\0\0\xB9e\0\0\xBAe\0\0\xE0e\0\0\xE1e\0\0\xE5e\0\0\xE6e\0\0\xF0f\0\0\xF1f\0\0\x08g\0\0\tg\0\0(g\0\0)g\0\0 k\0\0!k\0\0bk\0\0ck\0\0yk\0\0zk\0\0\xB3k\0\0\xB4k\0\0\xCBk\0\0\xCCk\0\0\xD4k\0\0\xD5k\0\0\xDBk\0\0\xDCk\0\0\x0Fl\0\0\x10l\0\0\x14l\0\0\x15l\0\x004l\0\x005l\0\0kp\0\0lp\0\0*r\0\0+r\0\x006r\0\x007r\0\0;r\0\0<r\0\0?r\0\0@r\0\0Gr\0\0Hr\0\0Yr\0\0Zr\0\0[r\0\0\\r\0\0\xACr\0\0\xADr\0\0\x84s\0\0\x85s\0\0\x89s\0\0\x8As\0\0\xDCt\0\0\xDDt\0\0\xE6t\0\0\xE7t\0\0\x18u\0\0\x19u\0\0\x1Fu\0\0 u\0\0(u\0\0)u\0\x000u\0\x001u\0\0\x8Bu\0\0\x8Cu\0\0\x92u\0\0\x93u\0\0vv\0\0wv\0\0}v\0\0~v\0\0\xAEv\0\0\xAFv\0\0\xBFv\0\0\xC0v\0\0\xEEv\0\0\xEFv\0\0\xDBw\0\0\xDCw\0\0\xE2w\0\0\xE3w\0\0\xF3w\0\0\xF4w\0\0:y\0\0;y\0\0\xB8y\0\0\xB9y\0\0\xBEy\0\0\xBFy\0\0tz\0\0uz\0\0\xCBz\0\0\xCCz\0\0\xF9z\0\0\xFAz\0\0s|\0\0t|\0\0\xF8|\0\0\xF9|\0\x006\x7F\0\x007\x7F\0\0Q\x7F\0\0R\x7F\0\0\x8A\x7F\0\0\x8B\x7F\0\0\xBD\x7F\0\0\xBE\x7F\0\0\x01\x80\0\0\x02\x80\0\0\x0C\x80\0\0\r\x80\0\0\x12\x80\0\0\x13\x80\0\x003\x80\0\x004\x80\0\0\x7F\x80\0\0\x80\x80\0\0\x89\x80\0\0\x8A\x80\0\0\xE3\x81\0\0\xE4\x81\0\0\xEA\x81\0\0\xEB\x81\0\0\xF3\x81\0\0\xF4\x81\0\0\xFC\x81\0\0\xFD\x81\0\0\x0C\x82\0\0\r\x82\0\0\x1B\x82\0\0\x1C\x82\0\0\x1F\x82\0\0 \x82\0\0n\x82\0\0o\x82\0\0r\x82\0\0s\x82\0\0x\x82\0\0y\x82\0\0M\x86\0\0N\x86\0\0k\x86\0\0l\x86\0\0@\x88\0\0A\x88\0\0L\x88\0\0M\x88\0\0c\x88\0\0d\x88\0\0~\x89\0\0\x7F\x89\0\0\x8B\x89\0\0\x8C\x89\0\0\xD2\x89\0\0\xD3\x89\0\0\0\x8A\0\0\x01\x8A\0\x007\x8C\0\08\x8C\0\0F\x8C\0\0G\x8C\0\0U\x8C\0\0V\x8C\0\0x\x8C\0\0y\x8C\0\0\x9D\x8C\0\0\x9E\x8C\0\0d\x8D\0\0e\x8D\0\0p\x8D\0\0q\x8D\0\0\xB3\x8D\0\0\xB4\x8D\0\0\xAB\x8E\0\0\xAC\x8E\0\0\xCA\x8E\0\0\xCB\x8E\0\0\x9B\x8F\0\0\x9C\x8F\0\0\xB0\x8F\0\0\xB1\x8F\0\0\xB5\x8F\0\0\xB6\x8F\0\0\x91\x90\0\0\x92\x90\0\0I\x91\0\0J\x91\0\0\xC6\x91\0\0\xC7\x91\0\0\xCC\x91\0\0\xCD\x91\0\0\xD1\x91\0\0\xD2\x91\0\0w\x95\0\0x\x95\0\0\x80\x95\0\0\x81\x95\0\0\x1C\x96\0\0\x1D\x96\0\0\xB6\x96\0\0\xB7\x96\0\0\xB9\x96\0\0\xBA\x96\0\0\xE8\x96\0\0\xE9\x96\0\0Q\x97\0\0R\x97\0\0^\x97\0\0_\x97\0\0b\x97\0\0c\x97\0\0i\x97\0\0j\x97\0\0\xCB\x97\0\0\xCC\x97\0\0\xED\x97\0\0\xEE\x97\0\0\xF3\x97\0\0\xF4\x97\0\0\x01\x98\0\0\x02\x98\0\0\xA8\x98\0\0\xA9\x98\0\0\xDB\x98\0\0\xDC\x98\0\0\xDF\x98\0\0\xE0\x98\0\0\x96\x99\0\0\x97\x99\0\0\x99\x99\0\0\x9A\x99\0\0\xAC\x99\0\0\xAD\x99\0\0\xA8\x9A\0\0\xA9\x9A\0\0\xD8\x9A\0\0\xD9\x9A\0\0\xDF\x9A\0\0\xE0\x9A\0\0%\x9B\0\0&\x9B\0\0/\x9B\0\x000\x9B\0\x002\x9B\0\x003\x9B\0\0<\x9B\0\0=\x9B\0\0Z\x9B\0\0[\x9B\0\0\xE5\x9C\0\0\xE6\x9C\0\0u\x9E\0\0v\x9E\0\0\x7F\x9E\0\0\x80\x9E\0\0\xA5\x9E\0\0\xA6\x9E\0\0\xBB\x9E\0\0\xBC\x9E\0\0\xC3\x9E\0\0\xC4\x9E\0\0\xCD\x9E\0\0\xCE\x9E\0\0\xD1\x9E\0\0\xD2\x9E\0\0\xF9\x9E\0\0\xFA\x9E\0\0\xFD\x9E\0\0\xFE\x9E\0\0\x0E\x9F\0\0\x0F\x9F\0\0\x13\x9F\0\0\x14\x9F\0\0 \x9F\0\0!\x9F\0\0;\x9F\0\0<\x9F\0\0J\x9F\0\0K\x9F\0\0R\x9F\0\0S\x9F\0\0\x8D\x9F\0\0\x8E\x9F\0\0\x9C\x9F\0\0\x9D\x9F\0\0\xA0\x9F\0\0\xA1\x9F\0\0") }, 214u32)
},
zerovec::VarZeroVec::new(),
));
static YUE: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0N\0\0\x02N\0\0\x08N\0\0\tN\0\0\rN\0\0\x0EN\0\0\x14N\0\0\x15N\0\0\x1EN\0\0\x1FN\0\0&N\0\0'N\0\x002N\0\x003N\0\0XN\0\0YN\0\0~N\0\0\x7FN\0\0\x82N\0\0\x83N\0\0\xADN\0\0\xAEN\0\0\x80P\0\0\x81P\0\0\xCEP\0\0\xCFP\0\0\xF5P\0\0\xF6P\0\0\x10Q\0\0\x11Q\0\0\x1FQ\0\0 Q\0\x003Q\0\x004Q\0\x007Q\0\08Q\0\0;Q\0\0<Q\0\0\xE2S\0\0\xE3S\0\0\xB4V\0\0\xB5V\0\0\xCCV\0\0\xCDV\0\0\xD1V\0\0\xD2V\0\0\xF3^\0\0\xF4^\0\0") }, 25u32)
},
zerovec::VarZeroVec::new(),
));
static MY: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\x10\0\0\"\x10\0\0") }, 34u32)
},
zerovec::VarZeroVec::new(),
));
static TI: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\x12\0\0\x01\x12\0\0\x08\x12\0\0\t\x12\0\0\x10\x12\0\0\x11\x12\0\0\x18\x12\0\0\x19\x12\0\0 \x12\0\0!\x12\0\0(\x12\0\0)\x12\0\x000\x12\0\x001\x12\0\08\x12\0\09\x12\0\0@\x12\0\0A\x12\0\0H\x12\0\0I\x12\0\0P\x12\0\0Q\x12\0\0X\x12\0\0Y\x12\0\0`\x12\0\0a\x12\0\0h\x12\0\0i\x12\0\0p\x12\0\0q\x12\0\0x\x12\0\0y\x12\0\0\x80\x12\0\0\x81\x12\0\0\x88\x12\0\0\x89\x12\0\0\x90\x12\0\0\x91\x12\0\0\x98\x12\0\0\x99\x12\0\0\xA0\x12\0\0\xA1\x12\0\0\xA8\x12\0\0\xA9\x12\0\0\xB0\x12\0\0\xB1\x12\0\0\xB8\x12\0\0\xB9\x12\0\0\xC0\x12\0\0\xC1\x12\0\0\xC8\x12\0\0\xC9\x12\0\0\xD0\x12\0\0\xD1\x12\0\0\xD8\x12\0\0\xD9\x12\0\0\xE0\x12\0\0\xE1\x12\0\0\xE8\x12\0\0\xE9\x12\0\0\xF0\x12\0\0\xF1\x12\0\0\0\x13\0\0\x01\x13\0\0\x08\x13\0\0\t\x13\0\0\x10\x13\0\0\x11\x13\0\0 \x13\0\0!\x13\0\0(\x13\0\0)\x13\0\x000\x13\0\x001\x13\0\08\x13\0\09\x13\0\0@\x13\0\0A\x13\0\0H\x13\0\0I\x13\0\0P\x13\0\0Q\x13\0\0") }, 41u32)
},
zerovec::VarZeroVec::new(),
));
static AM: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\x12\0\0\x01\x12\0\0\x08\x12\0\0\t\x12\0\0\x10\x12\0\0\x11\x12\0\0\x18\x12\0\0\x19\x12\0\0 \x12\0\0!\x12\0\0(\x12\0\0)\x12\0\x000\x12\0\x001\x12\0\08\x12\0\09\x12\0\0@\x12\0\0A\x12\0\0H\x12\0\0I\x12\0\0`\x12\0\0a\x12\0\0h\x12\0\0i\x12\0\0p\x12\0\0q\x12\0\0x\x12\0\0y\x12\0\0\x80\x12\0\0\x81\x12\0\0\x88\x12\0\0\x89\x12\0\0\x90\x12\0\0\x91\x12\0\0\x98\x12\0\0\x99\x12\0\0\xA0\x12\0\0\xA1\x12\0\0\xA8\x12\0\0\xA9\x12\0\0\xB0\x12\0\0\xB1\x12\0\0\xB8\x12\0\0\xB9\x12\0\0\xC8\x12\0\0\xC9\x12\0\0\xD0\x12\0\0\xD1\x12\0\0\xD8\x12\0\0\xD9\x12\0\0\xE0\x12\0\0\xE1\x12\0\0\xE8\x12\0\0\xE9\x12\0\0\xF0\x12\0\0\xF1\x12\0\0\0\x13\0\0\x01\x13\0\0\x08\x13\0\0\t\x13\0\0\x10\x13\0\0\x11\x13\0\0 \x13\0\0!\x13\0\0(\x13\0\0)\x13\0\x000\x13\0\x001\x13\0\08\x13\0\09\x13\0\0@\x13\0\0A\x13\0\0H\x13\0\0I\x13\0\0P\x13\0\0Q\x13\0\0") }, 38u32)
},
zerovec::VarZeroVec::new(),
));
static FF_ADLM: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\xE9\x01\0\x01\xE9\x01\0\x1B\xE9\x01\0\x1C\xE9\x01\0") }, 2u32)
},
zerovec::VarZeroVec::new(),
));
static BE: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x01\x04\0\0\x02\x04\0\0\x06\x04\0\0\x07\x04\0\0\x10\x04\0\0\x18\x04\0\0\x19\x04\0\0)\x04\0\0+\x04\0\x000\x04\0\0") }, 31u32)
},
zerovec::VarZeroVec::new(),
));
static KK: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x01\x04\0\0\x02\x04\0\0\x06\x04\0\0\x07\x04\0\0\x10\x04\0\x000\x04\0\0\x92\x04\0\0\x93\x04\0\0\x9A\x04\0\0\x9B\x04\0\0\xA2\x04\0\0\xA3\x04\0\0\xAE\x04\0\0\xAF\x04\0\0\xB0\x04\0\0\xB1\x04\0\0\xBA\x04\0\0\xBB\x04\0\0\xD8\x04\0\0\xD9\x04\0\0\xE8\x04\0\0\xE9\x04\0\0") }, 42u32)
},
zerovec::VarZeroVec::new(),
));
static TG: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x01\x04\0\0\x02\x04\0\0\x10\x04\0\0&\x04\0\0'\x04\0\0)\x04\0\0*\x04\0\0+\x04\0\0-\x04\0\x000\x04\0\0\x92\x04\0\0\x93\x04\0\0\x9A\x04\0\0\x9B\x04\0\0\xB2\x04\0\0\xB3\x04\0\0\xB6\x04\0\0\xB7\x04\0\0\xE2\x04\0\0\xE3\x04\0\0\xEE\x04\0\0\xEF\x04\0\0") }, 35u32)
},
zerovec::VarZeroVec::new(),
));
static RU: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x01\x04\0\0\x02\x04\0\0\x10\x04\0\0*\x04\0\0+\x04\0\0,\x04\0\0-\x04\0\x000\x04\0\0") }, 31u32)
},
zerovec::VarZeroVec::new(),
));
static TT: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x01\x04\0\0\x02\x04\0\0\x10\x04\0\x000\x04\0\0\x96\x04\0\0\x97\x04\0\0\xA2\x04\0\0\xA3\x04\0\0\xAE\x04\0\0\xAF\x04\0\0\xBA\x04\0\0\xBB\x04\0\0\xD8\x04\0\0\xD9\x04\0\0\xE8\x04\0\0\xE9\x04\0\0") }, 39u32)
},
zerovec::VarZeroVec::new(),
));
static KY: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x01\x04\0\0\x02\x04\0\0\x10\x04\0\x000\x04\0\0\xA2\x04\0\0\xA3\x04\0\0\xAE\x04\0\0\xAF\x04\0\0\xE8\x04\0\0\xE9\x04\0\0") }, 36u32)
},
zerovec::VarZeroVec::new(),
));
static CV: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x01\x04\0\0\x02\x04\0\0\x10\x04\0\x000\x04\0\0\xAA\x04\0\0\xAB\x04\0\0\xD0\x04\0\0\xD1\x04\0\0\xD6\x04\0\0\xD7\x04\0\0\xF2\x04\0\0\xF3\x04\0\0") }, 37u32)
},
zerovec::VarZeroVec::new(),
));
static TH: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x01\x0E\0\0/\x0E\0\0") }, 46u32)
},
zerovec::VarZeroVec::new(),
));
static MR: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x02\t\0\0\x04\t\0\0\x05\t\0\0\r\t\0\0\x0F\t\0\0\x12\t\0\0\x13\t\0\0)\t\0\0*\t\0\x001\t\0\x002\t\0\x004\t\0\x005\t\0\0:\t\0\0=\t\0\0>\t\0\0E\t\0\0F\t\0\0M\t\0\0N\t\0\0P\t\0\0Q\t\0\0\r \0\0\x0E \0\0") }, 54u32)
},
zerovec::VarZeroVec::new(),
));
static BS_CYRL: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x02\x04\0\0\x03\x04\0\0\x08\x04\0\0\x0C\x04\0\0\x0F\x04\0\0\x19\x04\0\0\x1A\x04\0\0)\x04\0\0") }, 30u32)
},
zerovec::VarZeroVec::new(),
));
static MK: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x03\x04\0\0\x04\x04\0\0\x05\x04\0\0\x06\x04\0\0\x08\x04\0\0\x0B\x04\0\0\x0C\x04\0\0\r\x04\0\0\x0F\x04\0\0\x19\x04\0\0\x1A\x04\0\0)\x04\0\0") }, 31u32)
},
zerovec::VarZeroVec::new(),
));
static UK: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x04\x04\0\0\x05\x04\0\0\x06\x04\0\0\x08\x04\0\0\x10\x04\0\0*\x04\0\0.\x04\0\x000\x04\0\0\x90\x04\0\0\x91\x04\0\0") }, 32u32)
},
zerovec::VarZeroVec::new(),
));
static PA: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x05\n\0\0\x06\n\0\0\x15\n\0\0)\n\0\0*\n\0\x001\n\0\x002\n\0\x003\n\0\x005\n\0\x006\n\0\08\n\0\0:\n\0\0\\\n\0\0]\n\0\0r\n\0\0t\n\0\0") }, 35u32)
},
zerovec::VarZeroVec::new(),
));
static ML: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x05\r\0\0\x0C\r\0\0\x0E\r\0\0\x11\r\0\0\x12\r\0\0)\r\0\0*\r\0\0:\r\0\0") }, 49u32)
},
zerovec::VarZeroVec::new(),
));
static DOI: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x05\t\0\0\r\t\0\0\x0F\t\0\0\x11\t\0\0\x13\t\0\0)\t\0\0*\t\0\x001\t\0\x002\t\0\x004\t\0\x005\t\0\0:\t\0\0`\t\0\0b\t\0\0") }, 48u32)
},
zerovec::VarZeroVec::new(),
));
static MAI: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x05\t\0\0\r\t\0\0\x0F\t\0\0\x11\t\0\0\x13\t\0\0\x19\t\0\0\x1A\t\0\0)\t\0\0*\t\0\x001\t\0\x002\t\0\x003\t\0\x005\t\0\0:\t\0\0<\t\0\0=\t\0\0a\t\0\0b\t\0\0") }, 46u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x07\0\0\0\0\0\x06\0\x0C\0\x15\0\x1E\0$\0-\0\xE0\xA4\x85\xE0\xA4\x82\xE0\xA4\x85\xE0\xA4\x83\xE0\xA4\x95\xE0\xA5\x8D\xE0\xA4\xB7\xE0\xA4\x9C\xE0\xA5\x8D\xE0\xA4\x9E\xE0\xA4\xA1\xE0\xA4\x82\xE0\xA4\xA4\xE0\xA5\x8D\xE0\xA4\xB0\xE0\xA4\xB6\xE0\xA5\x8D\xE0\xA4\xB0") },
));
static BRX: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x05\t\0\0\x0B\t\0\0\r\t\0\0\x0E\t\0\0\x0F\t\0\0\x12\t\0\0\x13\t\0\0\x19\t\0\0\x1A\t\0\0)\t\0\0*\t\0\x001\t\0\x002\t\0\x004\t\0\x005\t\0\0:\t\0\0") }, 45u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x01\0\0\0\0\0\xE0\xA4\xA1\xE0\xA4\xBC") },
));
static HI: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x05\t\0\0\x0C\t\0\0\x0F\t\0\0\x11\t\0\0\x13\t\0\0)\t\0\0*\t\0\x001\t\0\x002\t\0\x003\t\0\x005\t\0\0:\t\0\0") }, 44u32)
},
zerovec::VarZeroVec::new(),
));
static KOK: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x05\t\0\0\x0E\t\0\0\x0F\t\0\0\x12\t\0\0\x13\t\0\0)\t\0\0*\t\0\x001\t\0\x002\t\0\x004\t\0\x005\t\0\0:\t\0\0") }, 48u32)
},
zerovec::VarZeroVec::new(),
));
static OR: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x05\x0B\0\0\x0C\x0B\0\0\x0F\x0B\0\0\x11\x0B\0\0\x13\x0B\0\0)\x0B\0\0*\x0B\0\x001\x0B\0\x002\x0B\0\x004\x0B\0\x006\x0B\0\0:\x0B\0\0") }, 44u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x01\0\0\0\0\0\xE0\xAC\x95\xE0\xAD\x8D\xE0\xAC\xB7") },
));
static TE: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x05\x0C\0\0\x0C\x0C\0\0\x0E\x0C\0\0\x11\x0C\0\0\x12\x0C\0\0)\x0C\0\0*\x0C\0\x004\x0C\0\x005\x0C\0\0:\x0C\0\0`\x0C\0\0a\x0C\0\0") }, 49u32)
},
zerovec::VarZeroVec::new(),
));
static BG: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x10\x04\0\0*\x04\0\0.\x04\0\x000\x04\0\0") }, 28u32)
},
zerovec::VarZeroVec::new(),
));
static SAH: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x10\x04\0\0\x12\x04\0\0\x13\x04\0\0\x15\x04\0\0\x18\x04\0\0$\x04\0\0%\x04\0\0&\x04\0\0'\x04\0\0(\x04\0\0+\x04\0\0,\x04\0\0-\x04\0\0.\x04\0\0\x94\x04\0\0\x95\x04\0\0\xA4\x04\0\0\xA5\x04\0\0\xAE\x04\0\0\xAF\x04\0\0\xBA\x04\0\0\xBB\x04\0\0\xE8\x04\0\0\xE9\x04\0\0") }, 25u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x02\0\0\0\0\0\x04\0\xD0\x94\xD1\x8C\xD0\x9D\xD1\x8C") },
));
static MN: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x10\x04\0\x000\x04\0\0\xAE\x04\0\0\xAF\x04\0\0\xE8\x04\0\0\xE9\x04\0\0") }, 34u32)
},
zerovec::VarZeroVec::new(),
));
static SYR: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x10\x07\0\0\x11\x07\0\0\x12\x07\0\0\x14\x07\0\0\x15\x07\0\0\x1C\x07\0\0\x1D\x07\0\0\x1E\x07\0\0\x1F\x07\0\0$\x07\0\0%\x07\0\0'\x07\0\0(\x07\0\0-\x07\0\0") }, 23u32)
},
zerovec::VarZeroVec::new(),
));
static KM: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x80\x17\0\0\x9D\x17\0\0\x9F\x17\0\0\xA3\x17\0\0\xA5\x17\0\0\xA8\x17\0\0\xA9\x17\0\0\xB2\x17\0\0\xB3\x17\0\0\xB4\x17\0\0") }, 46u32)
},
zerovec::VarZeroVec::new(),
));
static LO: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x81\x0E\0\0\x83\x0E\0\0\x84\x0E\0\0\x85\x0E\0\0\x87\x0E\0\0\x89\x0E\0\0\x8A\x0E\0\0\x8B\x0E\0\0\x8D\x0E\0\0\x8E\x0E\0\0\x94\x0E\0\0\x98\x0E\0\0\x99\x0E\0\0\xA0\x0E\0\0\xA1\x0E\0\0\xA4\x0E\0\0\xA5\x0E\0\0\xA6\x0E\0\0\xA7\x0E\0\0\xA8\x0E\0\0\xAA\x0E\0\0\xAC\x0E\0\0\xAD\x0E\0\0\xAF\x0E\0\0") }, 27u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x06\0\0\0\0\0\x06\0\x0C\0\x12\0\x18\0\x1E\0\xE0\xBA\xAB\xE0\xBA\x87\xE0\xBA\xAB\xE0\xBA\x8D\xE0\xBA\xAB\xE0\xBA\x99\xE0\xBA\xAB\xE0\xBA\xA1\xE0\xBA\xAB\xE0\xBA\xA5\xE0\xBA\xAB\xE0\xBA\xA7") },
));
static AS: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x82\t\0\0\x84\t\0\0\x85\t\0\0\x8C\t\0\0\x8F\t\0\0\x91\t\0\0\x93\t\0\0\xA9\t\0\0\xAA\t\0\0\xB0\t\0\0\xB2\t\0\0\xB3\t\0\0\xB6\t\0\0\xBA\t\0\0\xBC\t\0\0\xBD\t\0\0\xCD\t\0\0\xCF\t\0\0\xF0\t\0\0\xF2\t\0\0") }, 49u32)
},
zerovec::VarZeroVec::new(),
));
static GU: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x85\n\0\0\x8C\n\0\0\x8D\n\0\0\x8E\n\0\0\x8F\n\0\0\x92\n\0\0\x93\n\0\0\xA9\n\0\0\xAA\n\0\0\xB1\n\0\0\xB2\n\0\0\xB4\n\0\0\xB5\n\0\0\xBA\n\0\0") }, 47u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x05\0\0\0\0\0\x06\0\x0C\0\x15\0\x1E\0\xE0\xAA\x85\xE0\xAA\x82\xE0\xAA\x85\xE0\xAA\x83\xE0\xAA\x95\xE0\xAB\x8D\xE0\xAA\xB7\xE0\xAA\x9C\xE0\xAB\x8D\xE0\xAA\x9E\xE0\xAA\xA4\xE0\xAB\x8D\xE0\xAA\xB0") },
));
static SI: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x85\r\0\0\x8E\r\0\0\x91\r\0\0\x97\r\0\0\x9A\r\0\0\xA6\r\0\0\xA7\r\0\0\xB2\r\0\0\xB3\r\0\0\xBC\r\0\0\xBD\r\0\0\xBE\r\0\0\xC0\r\0\0\xC7\r\0\0") }, 55u32)
},
zerovec::VarZeroVec::new(),
));
static BN: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x85\t\0\0\x8C\t\0\0\x8F\t\0\0\x91\t\0\0\x93\t\0\0\xA9\t\0\0\xAA\t\0\0\xB1\t\0\0\xB2\t\0\0\xB3\t\0\0\xB6\t\0\0\xBA\t\0\0") }, 43u32)
},
unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x01\0\0\0\0\0\xE0\xA6\x95\xE0\xA7\x8D\xE0\xA6\xB7") },
));
static TA: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x85\x0B\0\0\x8B\x0B\0\0\x8E\x0B\0\0\x91\x0B\0\0\x92\x0B\0\0\x96\x0B\0\0\x99\x0B\0\0\x9B\x0B\0\0\x9E\x0B\0\0\xA0\x0B\0\0\xA3\x0B\0\0\xA5\x0B\0\0\xA8\x0B\0\0\xAB\x0B\0\0\xAE\x0B\0\0\xB6\x0B\0\0") }, 30u32)
},
zerovec::VarZeroVec::new(),
));
static KN: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x85\x0C\0\0\x8D\x0C\0\0\x8E\x0C\0\0\x91\x0C\0\0\x92\x0C\0\0\xA9\x0C\0\0\xAA\x0C\0\0\xB4\x0C\0\0\xB5\x0C\0\0\xBA\x0C\0\0\xDE\x0C\0\0\xDF\x0C\0\0\xE0\x0C\0\0\xE2\x0C\0\0") }, 52u32)
},
zerovec::VarZeroVec::new(),
));
static EL: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x91\x03\0\0\xA2\x03\0\0\xA3\x03\0\0\xAA\x03\0\0") }, 24u32)
},
zerovec::VarZeroVec::new(),
));
static CHR: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xA0\x13\0\0\xA1\x13\0\0\xA6\x13\0\0\xA7\x13\0\0\xAD\x13\0\0\xAE\x13\0\0\xB3\x13\0\0\xB4\x13\0\0\xB9\x13\0\0\xBA\x13\0\0\xBE\x13\0\0\xBF\x13\0\0\xC6\x13\0\0\xC7\x13\0\0\xCC\x13\0\0\xCD\x13\0\0\xD3\x13\0\0\xD4\x13\0\0\xDC\x13\0\0\xDD\x13\0\0\xE3\x13\0\0\xE4\x13\0\0\xE9\x13\0\0\xEA\x13\0\0\xEF\x13\0\0\xF0\x13\0\0") }, 13u32)
},
zerovec::VarZeroVec::new(),
));
static HE: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xD0\x05\0\0\xDA\x05\0\0\xDB\x05\0\0\xDD\x05\0\0\xDE\x05\0\0\xDF\x05\0\0\xE0\x05\0\0\xE3\x05\0\0\xE4\x05\0\0\xE5\x05\0\0\xE6\x05\0\0\xEB\x05\0\0") }, 22u32)
},
zerovec::VarZeroVec::new(),
));
static KA: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xD0\x10\0\0\xF1\x10\0\0") }, 33u32)
},
zerovec::VarZeroVec::new(),
));
static UND: <icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable = icu::properties::provider::PropertyUnicodeSetV1::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
unsafe {
#[allow(unused_unsafe)]
icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(zerovec::ZeroVec::new(), 0u32)
},
zerovec::VarZeroVec::new(),
));
static VALUES: [&<icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::DataMarker>::Yokeable; 137usize] = [&AF, &AM, &AR, &AS, &AST, &AZ, &BE, &BG, &BN, &BR, &BRX, &BS, &BS_CYRL, &AF, &AF, &CHR, &CS, &CV, &CY, &DA, &AF, &DE_AT, &DOI, &DSB, &EL, &AF, &EO, &ES, &ET, &AF, &FA, &FF_ADLM, &FI, &FIL, &FO, &AF, &FY, &AF, &GD, &ES, &GU, &HA, &HA_NE, &HE, &HI, &HR, &HSB, &HU, &HY, &AF, &AF, &AF, &IS, &AF, &JA, &JV, &KA, &KEA, &KGP, &KK, &KM, &KN, &KO, &KOK, &KU, &KY, &AF, &AF, &LO, &LT, &LV, &MAI, &MI, &MK, &ML, &MN, &MR, &AF, &MT, &MY, &AF, &HI, &AF, &DA, &OR, &PA, &PCM, &PL, &PRG, &PS, &AF, &QU, &RM, &RO, &RU, &DOI, &SAH, &SC, &SD, &SI, &SK, &SL, &SO, &SQ, &BS_CYRL, &BS, &SU, &FI, &PCM, &SYR, &SZL, &TA, &TE, &TG, &TH, &TI, &TK, &TO, &TOK, &TR, &TT, &UG, &UK, &UND, &UR, &UZ, &VI, &WO, &AF, &YO, &YRL, &YUE, &AF, &AF, &AF, &ZH_HANT, &AF];
static KEYS: [&str; 137usize] = ["af", "am", "ar", "as", "ast", "az", "be", "bg", "bn", "br", "brx", "bs", "bs-Cyrl", "ca", "ceb", "chr", "cs", "cv", "cy", "da", "de", "de-AT", "doi", "dsb", "el", "en", "eo", "es", "et", "eu", "fa", "ff-Adlm", "fi", "fil", "fo", "fr", "fy", "ga", "gd", "gl", "gu", "ha", "ha-NE", "he", "hi", "hr", "hsb", "hu", "hy", "ia", "id", "ig", "is", "it", "ja", "jv", "ka", "kea", "kgp", "kk", "km", "kn", "ko", "kok", "ku", "ky", "lb", "lij", "lo", "lt", "lv", "mai", "mi", "mk", "ml", "mn", "mr", "ms", "mt", "my", "nds-NL", "ne", "nl", "no", "or", "pa", "pcm", "pl", "prg", "ps", "pt", "qu", "rm", "ro", "ru", "sa", "sah", "sc", "sd", "si", "sk", "sl", "so", "sq", "sr", "sr-Latn", "su", "sv", "sw", "syr", "szl", "ta", "te", "tg", "th", "ti", "tk", "to", "tok", "tr", "tt", "ug", "uk", "und", "ur", "uz", "vi", "wo", "xh", "yo", "yrl", "yue", "yue-Hans", "za", "zh", "zh-Hant", "zu"];
let mut metadata = icu_provider::DataResponseMetadata::default();
let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) {
payload
} else {
const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(<icu::properties::provider::ExemplarCharactersIndexV1Marker as icu_provider::KeyedDataMarker>::KEY.fallback_config());
let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone());
loop {
if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) {
metadata.locale = Some(fallback_iterator.take());
break payload;
}
fallback_iterator.step();
}
};
Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(payload)), metadata })
}
}
};
}

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More