Skip to main content

pyo3_ffi/cpython/
floatobject.rs

1#[cfg(GraalPy)]
2use crate::PyFloat_AsDouble;
3#[cfg(not(GraalPy))]
4use crate::PyFloat_Check;
5use crate::PyObject;
6use core::ffi::c_double;
7
8#[repr(C)]
9pub struct PyFloatObject {
10    pub ob_base: PyObject,
11    pub ob_fval: c_double,
12}
13
14#[inline]
15#[cfg(not(GraalPy))]
16unsafe fn _PyFloat_CAST(op: *mut PyObject) -> *mut PyFloatObject {
17    debug_assert_eq!(PyFloat_Check(op), 1);
18    op.cast()
19}
20
21#[inline]
22pub unsafe fn PyFloat_AS_DOUBLE(op: *mut PyObject) -> c_double {
23    #[cfg(not(GraalPy))]
24    return (*_PyFloat_CAST(op)).ob_fval;
25    #[cfg(GraalPy)]
26    return PyFloat_AsDouble(op);
27}
28
29// skipped PyFloat_Pack2
30// skipped PyFloat_Pack4
31// skipped PyFloat_Pack8
32
33// skipped PyFloat_Unpack2
34// skipped PyFloat_Unpack4
35// skipped PyFloat_Unpack8