forked from ijl/orjson
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutil.rs
More file actions
100 lines (86 loc) · 2.2 KB
/
Copy pathutil.rs
File metadata and controls
100 lines (86 loc) · 2.2 KB
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
// SPDX-License-Identifier: (Apache-2.0 OR MIT)
macro_rules! is_type {
($obj_ptr:expr, $type_ptr:expr) => {
unsafe { $obj_ptr == $type_ptr }
};
}
macro_rules! ob_type {
($obj:expr) => {
unsafe { (*$obj).ob_type }
};
}
macro_rules! err {
($msg:expr) => {
return Err(serde::ser::Error::custom($msg))
};
}
#[cfg(feature = "unstable-simd")]
macro_rules! unlikely {
($exp:expr) => {
core::intrinsics::unlikely($exp)
};
}
#[cfg(not(feature = "unstable-simd"))]
macro_rules! unlikely {
($exp:expr) => {
$exp
};
}
macro_rules! nonnull {
($exp:expr) => {
unsafe { std::ptr::NonNull::new_unchecked($exp) }
};
}
macro_rules! str_from_slice {
($ptr:expr, $size:expr) => {
unsafe { std::str::from_utf8_unchecked(std::slice::from_raw_parts($ptr, $size as usize)) }
};
}
macro_rules! ffi {
($fn:ident()) => {
unsafe { pyo3_ffi::$fn() }
};
($fn:ident($obj1:expr)) => {
unsafe { pyo3_ffi::$fn($obj1) }
};
($fn:ident($obj1:expr, $obj2:expr)) => {
unsafe { pyo3_ffi::$fn($obj1, $obj2) }
};
($fn:ident($obj1:expr, $obj2:expr, $obj3:expr)) => {
unsafe { pyo3_ffi::$fn($obj1, $obj2, $obj3) }
};
($fn:ident($obj1:expr, $obj2:expr, $obj3:expr, $obj4:expr)) => {
unsafe { pyo3_ffi::$fn($obj1, $obj2, $obj3, $obj4) }
};
}
#[cfg(Py_3_9)]
macro_rules! call_method {
($obj1:expr, $obj2:expr) => {
unsafe { pyo3_ffi::PyObject_CallMethodNoArgs($obj1, $obj2) }
};
($obj1:expr, $obj2:expr, $obj3:expr) => {
unsafe { pyo3_ffi::PyObject_CallMethodOneArg($obj1, $obj2, $obj3) }
};
}
#[cfg(not(Py_3_9))]
macro_rules! call_method {
($obj1:expr, $obj2:expr) => {
unsafe {
pyo3_ffi::PyObject_CallMethodObjArgs(
$obj1,
$obj2,
std::ptr::null_mut() as *mut pyo3_ffi::PyObject,
)
}
};
($obj1:expr, $obj2:expr, $obj3:expr) => {
unsafe {
pyo3_ffi::PyObject_CallMethodObjArgs(
$obj1,
$obj2,
$obj3,
std::ptr::null_mut() as *mut pyo3_ffi::PyObject,
)
}
};
}