rquickjs_sys/inlines/
ptr_64.rs

1#[inline]
2pub unsafe fn JS_VALUE_GET_TAG(v: JSValue) -> i32 {
3    v.tag as _
4}
5
6#[inline]
7pub unsafe fn JS_VALUE_GET_NORM_TAG(v: JSValue) -> i32 {
8    JS_VALUE_GET_TAG(v)
9}
10
11#[inline]
12pub unsafe fn JS_VALUE_GET_INT(v: JSValue) -> i32 {
13    v.u.int32
14}
15
16#[inline]
17pub unsafe fn JS_VALUE_GET_BOOL(v: JSValue) -> bool {
18    v.u.int32 != 0
19}
20
21#[inline]
22pub unsafe fn JS_VALUE_GET_FLOAT64(v: JSValue) -> f64 {
23    v.u.float64
24}
25
26#[inline]
27pub unsafe fn JS_VALUE_GET_PTR(v: JSValue) -> *mut c_void {
28    v.u.ptr
29}
30
31#[inline]
32pub const fn JS_MKVAL(tag: i32, val: i32) -> JSValue {
33    JSValue {
34        u: JSValueUnion { int32: val },
35        tag: tag as _,
36    }
37}
38
39#[inline]
40pub fn JS_MKPTR(tag: i32, ptr: *mut c_void) -> JSValue {
41    JSValue {
42        u: JSValueUnion { ptr },
43        tag: tag as _,
44    }
45}
46
47#[inline]
48pub unsafe fn JS_TAG_IS_FLOAT64(tag: i32) -> bool {
49    tag == JS_TAG_FLOAT64
50}
51
52pub const JS_NAN: JSValue = JSValue {
53    tag: JS_TAG_FLOAT64 as _,
54    u: JSValueUnion { float64: f64::NAN },
55};
56
57#[inline]
58pub fn __JS_NewFloat64(d: f64) -> JSValue {
59    JSValue {
60        tag: JS_TAG_FLOAT64 as _,
61        u: JSValueUnion { float64: d },
62    }
63}
64
65#[inline]
66pub unsafe fn JS_VALUE_IS_NAN(v: JSValue) -> bool {
67    union U {
68        d: f64,
69        u: u64,
70    }
71    if v.tag != JS_TAG_FLOAT64 as _ {
72        return false;
73    }
74    let u = U { d: v.u.float64 };
75    (u.u & 0x7fffffffffffffff) > 0x7ff0000000000000
76}