objc2_foundation/
decimal.rs

1use core::ffi::c_ushort;
2
3use objc2::encode::{Encode, Encoding, RefEncode};
4
5#[repr(C)]
6#[derive(Clone, Copy, Debug, PartialEq)]
7pub struct NSDecimal {
8    // signed   int _exponent:8;
9    // unsigned int _length:4;
10    // unsigned int _isNegative:1;
11    // unsigned int _isCompact:1;
12    // unsigned int _reserved:18;
13    pub(crate) _inner: i32,
14    pub(crate) _mantissa: [c_ushort; 8],
15}
16
17unsafe impl Encode for NSDecimal {
18    const ENCODING: Encoding = Encoding::Struct(
19        "?",
20        &[
21            Encoding::BitField(8, None),
22            Encoding::BitField(4, None),
23            Encoding::BitField(1, None),
24            Encoding::BitField(1, None),
25            Encoding::BitField(18, None),
26            Encoding::Array(8, &Encoding::UShort),
27        ],
28    );
29}
30
31unsafe impl RefEncode for NSDecimal {
32    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
33}