tesseract_swift_utils/
int128.rs

1#[repr(C)]
2#[derive(Copy, Clone)]
3pub struct CInt128 {
4    w1: i64,
5    w2: u64,
6}
7
8impl From<i128> for CInt128 {
9    fn from(int: i128) -> Self {
10        Self {
11            w1: (int >> 64) as i64,
12            w2: ((int as u128) & (std::u64::MAX as u128)) as u64,
13        }
14    }
15}
16
17impl Into<i128> for CInt128 {
18    fn into(self: CInt128) -> i128 {
19        (self.w1 as i128) << 64 | self.w2 as i128
20    }
21}
22
23#[repr(C)]
24pub struct CUInt128 {
25    w1: u64,
26    w2: u64,
27}
28
29impl From<u128> for CUInt128 {
30    fn from(int: u128) -> Self {
31        Self {
32            w1: (int >> 64) as u64,
33            w2: (int & (std::u64::MAX as u128)) as u64,
34        }
35    }
36}
37
38impl Into<u128> for CUInt128 {
39    fn into(self: CUInt128) -> u128 {
40        (self.w1 as u128) << 64 | self.w2 as u128
41    }
42}