lean_sys/primitive/
boxing.rs1use crate::*;
3
4#[inline]
5pub unsafe fn lean_box_uint32(v: u32) -> lean_obj_res {
6 if core::mem::size_of::<*const ()>() == 4 {
7 let r = lean_alloc_ctor(0, 0, core::mem::size_of::<u32>() as c_uint);
9 lean_ctor_set_uint32(r, 0, v);
10 r
11 } else {
12 lean_box(v as usize)
14 }
15}
16
17#[inline]
18pub unsafe fn lean_unbox_uint32(o: b_lean_obj_arg) -> u32 {
19 if core::mem::size_of::<*const ()>() == 4 {
20 lean_ctor_get_uint32(o, 0)
22 } else {
23 lean_unbox(o) as u32
25 }
26}
27
28#[inline]
29pub unsafe fn lean_box_uint64(v: u64) -> lean_obj_res {
30 let r = lean_alloc_ctor(0, 0, core::mem::size_of::<u64>() as c_uint);
31 lean_ctor_set_uint64(r, 0, v);
32 r
33}
34
35#[inline(always)]
36pub unsafe fn lean_unbox_uint64(o: b_lean_obj_arg) -> u64 {
37 lean_ctor_get_uint64(o, 0)
38}
39
40#[inline]
41pub unsafe fn lean_box_usize(v: usize) -> lean_obj_res {
42 let r = lean_alloc_ctor(0, 0, core::mem::size_of::<usize>() as c_uint);
43 lean_ctor_set_usize(r, 0, v);
44 r
45}
46
47#[inline(always)]
48pub unsafe fn lean_unbox_usize(o: b_lean_obj_arg) -> usize {
49 lean_ctor_get_usize(o, 0)
50}
51
52#[inline]
53pub unsafe fn lean_box_float(v: f64) -> lean_obj_res {
54 let r = lean_alloc_ctor(0, 0, core::mem::size_of::<f64>() as c_uint);
55 lean_ctor_set_float(r, 0, v);
56 r
57}
58
59#[inline(always)]
60pub unsafe fn lean_unbox_float(o: b_lean_obj_arg) -> f64 {
61 lean_ctor_get_float(o, 0)
62}
63
64#[inline]
65pub unsafe fn lean_box_float32(v: f32) -> lean_obj_res {
66 let r = lean_alloc_ctor(0, 0, core::mem::size_of::<f32>() as c_uint);
67 lean_ctor_set_float32(r, 0, v);
68 r
69}
70
71#[inline(always)]
72pub unsafe fn lean_unbox_float32(o: b_lean_obj_arg) -> f32 {
73 lean_ctor_get_float32(o, 0)
74}