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    pub fn len(&self) -> u32 {
16        (self.0 & 0xffffffff) as u32
17    }
18
19    pub fn transmute_i64(n: i64) -> Self {
20        Self(n as u64)
21    }
22
23    pub fn as_i64(&self) -> i64 {
24        self.0 as i64
25    }
26}
27
28#[repr(C)]
29pub struct Slice(pub u64);
30
31impl Slice {
32    pub fn new(ptr: u32, len: u32) -> Self {
33        Self((ptr as u64) << 32 | (len as u64))
34    }
35
36    pub fn ptr(&self) -> u32 {
37        (self.0 >> 32) as u32
38    }
39
40    pub fn len(&self) -> u32 {
41        (self.0 & 0xffffffff) as u32
42    }
43
44    pub fn transmute_i64(n: i64) -> Self {
45        Self(n as u64)
46    }
47
48    pub fn as_i64(&self) -> i64 {
49        self.0 as i64
50    }
51}