radix_engine_interface/types/
wasm.rs

1pub type BufferId = u32;
2
3#[repr(C)]
4pub struct Buffer(pub u64);
5
6impl Buffer {
7    pub fn new(id: u32, len: u32) -> Self {
8        Self((id as u64) << 32 | (len as u64))
9    }
10
11    pub fn id(&self) -> u32 {
12        (self.0 >> 32) as u32
13    }
14
15    #[allow(clippy::len_without_is_empty)]
16    pub fn len(&self) -> u32 {
17        (self.0 & 0xffffffff) as u32
18    }
19
20    pub fn transmute_i64(n: i64) -> Self {
21        Self(n as u64)
22    }
23
24    pub fn as_i64(&self) -> i64 {
25        self.0 as i64
26    }
27}
28
29#[repr(C)]
30pub struct Slice(pub u64);
31
32impl Slice {
33    pub fn new(ptr: u32, len: u32) -> Self {
34        Self((ptr as u64) << 32 | (len as u64))
35    }
36
37    pub fn ptr(&self) -> u32 {
38        (self.0 >> 32) as u32
39    }
40
41    #[allow(clippy::len_without_is_empty)]
42    pub fn len(&self) -> u32 {
43        (self.0 & 0xffffffff) as u32
44    }
45
46    pub fn transmute_i64(n: i64) -> Self {
47        Self(n as u64)
48    }
49
50    pub fn as_i64(&self) -> i64 {
51        self.0 as i64
52    }
53}