Skip to main content

pyforge_ffi/
boolobject.rs

1use crate::longobject::PyLongObject;
2use crate::object::*;
3use std::ffi::{c_int, c_long};
4
5#[inline]
6pub unsafe fn PyBool_Check(op: *mut PyObject) -> c_int {
7    (Py_TYPE(op) == &raw mut PyBool_Type) as c_int
8}
9
10extern_libpython! {
11    static mut _Py_FalseStruct: PyLongObject;
12    static mut _Py_TrueStruct: PyLongObject;
13}
14
15#[inline]
16pub unsafe fn Py_False() -> *mut PyObject {
17    (&raw mut _Py_FalseStruct).cast()
18}
19
20#[inline]
21pub unsafe fn Py_True() -> *mut PyObject {
22    (&raw mut _Py_TrueStruct).cast()
23}
24
25#[inline]
26pub unsafe fn Py_IsTrue(x: *mut PyObject) -> c_int {
27    Py_Is(x, Py_True())
28}
29
30#[inline]
31pub unsafe fn Py_IsFalse(x: *mut PyObject) -> c_int {
32    Py_Is(x, Py_False())
33}
34
35// skipped Py_RETURN_TRUE
36// skipped Py_RETURN_FALSE
37
38extern_libpython! {
39    pub fn PyBool_FromLong(arg1: c_long) -> *mut PyObject;
40}