1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
use crateValue;
/// Creates a new [`Value`] instance from an unsigned 64-bit integer (`u64`)
/// and returns a raw pointer to it for FFI interoperability.
///
/// # Parameters
/// - `val`: The unsigned 64-bit integer (`u64`) to wrap inside a [`Value`].
///
/// # Returns
/// - `*mut Value`: A raw pointer to the allocated [`Value`] containing `val`.
/// Caller is responsible for freeing this pointer to avoid memory leaks.
///
/// # Safety
/// - The returned pointer is heap-allocated.
/// - Must be manually deallocated by the caller.
/// - Pointer must not be dereferenced after being freed.
pub extern "C"
/// Creates a new [`Value`] instance from a signed 64-bit integer (`i64`)
/// and returns a raw pointer to it for FFI interoperability.
///
/// # Parameters
/// - `val`: The signed 64-bit integer (`i64`) to wrap inside a [`Value`].
///
/// # Returns
/// - `*mut Value`: A raw pointer to the allocated [`Value`] containing `val`.
/// Caller must deallocate this pointer to prevent memory leaks.
///
/// # Safety
/// - The returned pointer must be manually managed by the caller.
/// - Pointer must not be dereferenced after being freed.
pub extern "C"
/// Creates a new [`Value`] instance from a 64-bit floating point (`f64`)
/// and returns a raw pointer to it for FFI interoperability.
///
/// # Parameters
/// - `val`: The 64-bit float (`f64`) to wrap inside a [`Value`].
///
/// # Returns
/// - `*mut Value`: A raw pointer to the allocated [`Value`] containing `val`.
/// Caller is responsible for freeing this pointer.
///
/// # Safety
/// - The returned pointer is allocated on the heap.
/// - Caller must free this pointer to avoid leaks.
pub extern "C"
/// Extracts a 64-bit floating point (`f64`) from a [`Value`] and writes it
/// into the provided output pointer.
///
/// # Parameters
/// - `value`: A raw pointer to a [`Value`] expected to contain an `f64`.
/// - `out`: A mutable pointer where the extracted `f64` will be written.
///
/// # Returns
/// - `true` if extraction succeeds.
/// - `false` if `value` is `null` or does not contain a valid `f64`.
///
/// # Safety
/// - Both `value` and `out` must be valid, non-null pointers.
/// - Caller must ensure that `out` points to a valid writable memory location.
pub extern "C"
/// Extracts an unsigned 64-bit integer (`u64`) from a [`Value`] and writes
/// it into the provided output pointer.
///
/// # Parameters
/// - `value`: A raw pointer to a [`Value`] expected to contain a `u64`.
/// - `out`: A mutable pointer where the extracted `u64` will be written.
///
/// # Returns
/// - `true` if extraction succeeds.
/// - `false` if `value` is `null` or does not contain a valid `u64`.
///
/// # Safety
/// - Both `value` and `out` must be valid, non-null pointers.
/// - Caller must ensure that `out` points to writable memory.
pub extern "C"
/// Extracts a signed 64-bit integer (`i64`) from a [`Value`] and writes
/// it into the provided output pointer.
///
/// # Parameters
/// - `value`: A raw pointer to a [`Value`] expected to contain an `i64`.
/// - `out`: A mutable pointer where the extracted `i64` will be written.
///
/// # Returns
/// - `true` if extraction succeeds.
/// - `false` if `value` is `null` or does not contain a valid `i64`.
///
/// # Safety
/// - Both `value` and `out` must be valid, non-null pointers.
/// - Caller must ensure that `out` points to writable memory.
pub extern "C"