// 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 ). #[diplomat::bridge] #[diplomat::abi_rename = "icu4x_{0}_mv1"] pub mod ffi { use diplomat_runtime::DiplomatChar; use icu_properties::props; #[diplomat::rust_link(icu::properties::props::BidiMirroringGlyph, Struct)] pub struct BidiMirroringGlyph { /// The mirroring glyph pub mirroring_glyph: DiplomatOption, /// Whether the glyph is mirrored pub mirrored: bool, /// The paired bracket type pub paired_bracket_type: BidiPairedBracketType, } #[diplomat::rust_link(icu::properties::props::BidiPairedBracketType, Enum)] #[diplomat::enum_convert(props::BidiPairedBracketType, needs_wildcard)] #[non_exhaustive] pub enum BidiPairedBracketType { /// Represents Bidi_Paired_Bracket_Type=Open. Open, /// Represents Bidi_Paired_Bracket_Type=Close. Close, /// Represents Bidi_Paired_Bracket_Type=None. // This is an output type, so the default mostly impacts deferred initialization. #[diplomat::attr(auto, default)] None, } impl BidiMirroringGlyph { #[diplomat::rust_link(icu::properties::props::EnumeratedProperty::for_char, FnInTrait)] #[cfg(feature = "compiled_data")] pub fn for_char(ch: DiplomatChar) -> Self { icu_properties::CodePointMapData::::new() .get32(ch) .into() } } } impl From for ffi::BidiMirroringGlyph { fn from(other: icu_properties::props::BidiMirroringGlyph) -> Self { Self { mirroring_glyph: other.mirroring_glyph.map(u32::from).into(), mirrored: other.mirrored, paired_bracket_type: other.paired_bracket_type.into(), } } }