simdjson_rust/ondemand/
number.rs1use std::{marker::PhantomData, ptr::NonNull};
2
3use simdjson_sys as ffi;
4
5use super::{Document, NumberType};
6use crate::macros::impl_drop;
7
8pub struct Number<'a> {
9 ptr: NonNull<ffi::SJ_OD_number>,
10 _doc: PhantomData<&'a mut Document<'a, 'a>>,
11}
12
13impl<'a> Number<'a> {
14 pub fn new(ptr: NonNull<ffi::SJ_OD_number>) -> Self {
15 Self {
16 ptr,
17 _doc: PhantomData,
18 }
19 }
20
21 pub fn get_uint64(&mut self) -> u64 {
22 unsafe { ffi::SJ_OD_number_get_uint64(self.ptr.as_mut()) }
23 }
24
25 pub fn get_int64(&mut self) -> i64 {
26 unsafe { ffi::SJ_OD_number_get_int64(self.ptr.as_mut()) }
27 }
28
29 pub fn get_double(&mut self) -> f64 {
30 unsafe { ffi::SJ_OD_number_get_double(self.ptr.as_mut()) }
31 }
32
33 pub fn get_number_type(&mut self) -> NumberType {
34 unsafe { ffi::SJ_OD_number_get_number_type(self.ptr.as_mut()) }.into()
35 }
36}
37
38impl_drop!(Number<'a>, ffi::SJ_OD_number_free);