python27_sys/
floatobject.rs1use libc::{c_char, c_double, c_int};
2
3use crate::object::*;
4use crate::pyport::Py_ssize_t;
5
6#[repr(C)]
7#[derive(Copy, Clone)]
8struct PyFloatObject {
9 #[cfg(py_sys_config = "Py_TRACE_REFS")]
10 pub _ob_next: *mut PyObject,
11 #[cfg(py_sys_config = "Py_TRACE_REFS")]
12 pub _ob_prev: *mut PyObject,
13 pub ob_refcnt: Py_ssize_t,
14 pub ob_type: *mut PyTypeObject,
15 pub ob_fval: c_double,
16}
17
18#[cfg_attr(windows, link(name = "pythonXY"))]
19extern "C" {
20 pub static mut PyFloat_Type: PyTypeObject;
21}
22
23#[inline(always)]
24pub unsafe fn PyFloat_Check(op: *mut PyObject) -> c_int {
25 PyObject_TypeCheck(op, &mut PyFloat_Type)
26}
27
28#[inline(always)]
29pub unsafe fn PyFloat_CheckExact(op: *mut PyObject) -> c_int {
30 let u: *mut PyTypeObject = &mut PyFloat_Type;
31 (Py_TYPE(op) == u) as c_int
32}
33
34pub const PyFloat_STR_PRECISION: c_int = 12;
35
36#[cfg_attr(windows, link(name = "pythonXY"))]
37extern "C" {
38 pub fn PyFloat_FromString(str: *mut PyObject, pend: *mut *mut c_char) -> *mut PyObject;
39 pub fn PyFloat_FromDouble(v: c_double) -> *mut PyObject;
40 pub fn PyFloat_AsDouble(pyfloat: *mut PyObject) -> c_double;
41 pub fn PyFloat_GetInfo() -> *mut PyObject;
42
43 pub fn PyFloat_GetMax() -> c_double;
44 pub fn PyFloat_GetMin() -> c_double;
45 pub fn PyFloat_ClearFreeList() -> c_int;
46}
47
48pub unsafe fn PyFloat_AS_DOUBLE(pyfloat: *mut PyObject) -> c_double {
49 (*(pyfloat as *mut PyFloatObject)).ob_fval
50}