pyo3_ffi/
floatobject.rs

1use crate::object::*;
2use std::os::raw::{c_double, c_int};
3use std::ptr::addr_of_mut;
4
5#[cfg(Py_LIMITED_API)]
6// TODO: remove (see https://github.com/PyO3/pyo3/pull/1341#issuecomment-751515985)
7opaque_struct!(PyFloatObject);
8
9#[cfg_attr(windows, link(name = "pythonXY"))]
10extern "C" {
11    #[cfg_attr(PyPy, link_name = "PyPyFloat_Type")]
12    pub static mut PyFloat_Type: PyTypeObject;
13}
14
15#[inline]
16pub unsafe fn PyFloat_Check(op: *mut PyObject) -> c_int {
17    PyObject_TypeCheck(op, addr_of_mut!(PyFloat_Type))
18}
19
20#[inline]
21pub unsafe fn PyFloat_CheckExact(op: *mut PyObject) -> c_int {
22    (Py_TYPE(op) == addr_of_mut!(PyFloat_Type)) as c_int
23}
24
25// skipped Py_RETURN_NAN
26// skipped Py_RETURN_INF
27
28extern "C" {
29    pub fn PyFloat_GetMax() -> c_double;
30    pub fn PyFloat_GetMin() -> c_double;
31    pub fn PyFloat_GetInfo() -> *mut PyObject;
32    #[cfg_attr(PyPy, link_name = "PyPyFloat_FromString")]
33    pub fn PyFloat_FromString(arg1: *mut PyObject) -> *mut PyObject;
34    #[cfg_attr(PyPy, link_name = "PyPyFloat_FromDouble")]
35    pub fn PyFloat_FromDouble(arg1: c_double) -> *mut PyObject;
36    #[cfg_attr(PyPy, link_name = "PyPyFloat_AsDouble")]
37    pub fn PyFloat_AsDouble(arg1: *mut PyObject) -> c_double;
38}
39
40// skipped non-limited _PyFloat_Pack2
41// skipped non-limited _PyFloat_Pack4
42// skipped non-limited _PyFloat_Pack8
43// skipped non-limited _PyFloat_Unpack2
44// skipped non-limited _PyFloat_Unpack4
45// skipped non-limited _PyFloat_Unpack8
46// skipped non-limited _PyFloat_DebugMallocStats
47// skipped non-limited _PyFloat_FormatAdvancedWriter