1use alloc::boxed::Box;
2use alloc::string::String;
3use crate::uuid::Uuid;
4
5pub struct TypedValue {
6 value_type: usize,
7 value: usize,
8}
9impl TypedValue {
10 pub fn null() -> TypedValue {
11 TypedValue {
12 value_type: 0,
13 value: 0,
14 }
15 }
16 pub fn bool(value: bool) -> TypedValue {
17 TypedValue {
18 value_type: 1,
19 value: value as usize,
20 }
21 }
22 pub fn u8(value: u8) -> TypedValue {
23 TypedValue {
24 value_type: 2,
25 value: value as usize,
26 }
27 }
28 pub fn i8(value: i8) -> TypedValue {
29 TypedValue {
30 value_type: 3,
31 value: value as usize,
32 }
33 }
34
35 pub fn u16(value: u16) -> TypedValue {
36 TypedValue {
37 value_type: 4,
38 value: value as usize,
39 }
40 }
41 pub fn i16(value: i16) -> TypedValue {
42 TypedValue {
43 value_type: 5,
44 value: value as usize,
45 }
46 }
47
48 pub fn u32(value: u32) -> TypedValue {
49 TypedValue {
50 value_type: 6,
51 value: value as usize,
52 }
53 }
54 pub fn i32(value: i32) -> TypedValue {
55 TypedValue {
56 value_type: 7,
57 value: value as usize,
58 }
59 }
60 pub fn u64(value: u64) -> TypedValue {
61 TypedValue {
62 value_type: 8,
63 value: value as usize,
64 }
65 }
66 pub fn i64(value: i64) -> TypedValue {
67 TypedValue {
68 value_type: 9,
69 value: value as usize,
70 }
71 }
72 pub fn uuid(value: Uuid) -> TypedValue {
73 TypedValue {
74 value_type: 10,
75 value: unsafe{Box::into_raw(Box::from(value)) as *const u8 as usize},
76 }
77 }
78 pub fn string(value: String) -> TypedValue {
79 TypedValue {
80 value_type: 11,
81 value: unsafe{Box::into_raw(Box::from(value)) as *const String as usize},
82 }
83 }
84}