tesseract_swift_utils/
int128.rs1#[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}