python27_sys/
longobject.rs

1use libc::{c_char, c_double, c_int, c_long, c_longlong, c_ulong, c_ulonglong, c_void, size_t};
2
3use crate::object::*;
4use crate::pyport::Py_ssize_t;
5
6ignore! {
7    #[repr(C)]
8    struct PyLongObject { /* representation hidden */ }
9}
10
11#[cfg_attr(windows, link(name = "pythonXY"))]
12extern "C" {
13    pub static mut PyLong_Type: PyTypeObject;
14}
15
16#[inline(always)]
17pub unsafe fn PyLong_Check(op: *mut PyObject) -> c_int {
18    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
19}
20
21#[inline(always)]
22pub unsafe fn PyLong_CheckExact(op: *mut PyObject) -> c_int {
23    let u: *mut PyTypeObject = &mut PyLong_Type;
24    (Py_TYPE(op) == u) as c_int
25}
26
27#[cfg_attr(windows, link(name = "pythonXY"))]
28extern "C" {
29    pub fn PyLong_FromLong(v: c_long) -> *mut PyObject;
30    pub fn PyLong_FromUnsignedLong(v: c_ulong) -> *mut PyObject;
31    pub fn PyLong_FromSsize_t(v: Py_ssize_t) -> *mut PyObject;
32    pub fn PyLong_FromSize_t(v: size_t) -> *mut PyObject;
33    pub fn PyLong_FromLongLong(v: c_longlong) -> *mut PyObject;
34    pub fn PyLong_FromUnsignedLongLong(v: c_ulonglong) -> *mut PyObject;
35    pub fn PyLong_FromDouble(v: c_double) -> *mut PyObject;
36    pub fn PyLong_FromString(
37        str: *mut c_char,
38        pend: *mut *mut c_char,
39        base: c_int,
40    ) -> *mut PyObject;
41    #[cfg(py_sys_config = "Py_USING_UNICODE")]
42    pub fn PyLong_FromUnicode(
43        u: *mut crate::unicodeobject::Py_UNICODE,
44        length: Py_ssize_t,
45        base: c_int,
46    ) -> *mut PyObject;
47    pub fn PyLong_FromVoidPtr(p: *mut c_void) -> *mut PyObject;
48
49    pub fn PyLong_AsLong(pylong: *mut PyObject) -> c_long;
50    pub fn PyLong_AsLongAndOverflow(pylong: *mut PyObject, overflow: *mut c_int) -> c_long;
51    pub fn PyLong_AsLongLongAndOverflow(pylong: *mut PyObject, overflow: *mut c_int) -> c_longlong;
52    pub fn PyLong_AsSsize_t(pylong: *mut PyObject) -> Py_ssize_t;
53    pub fn PyLong_AsUnsignedLong(pylong: *mut PyObject) -> c_ulong;
54    pub fn PyLong_AsLongLong(pylong: *mut PyObject) -> c_longlong;
55    pub fn PyLong_AsUnsignedLongLong(pylong: *mut PyObject) -> c_ulonglong;
56    pub fn PyLong_AsUnsignedLongMask(pylong: *mut PyObject) -> c_ulong;
57    pub fn PyLong_AsUnsignedLongLongMask(pylong: *mut PyObject) -> c_ulonglong;
58    pub fn PyLong_AsDouble(pylong: *mut PyObject) -> c_double;
59    pub fn PyLong_AsVoidPtr(pylong: *mut PyObject) -> *mut c_void;
60
61    pub fn PyLong_GetInfo() -> *mut PyObject;
62
63    ignore! {
64        pub fn _PyLong_AsInt(arg1: *mut PyObject) -> c_int;
65        pub fn _PyLong_Frexp(a: *mut PyLongObject, e: *mut Py_ssize_t) -> c_double;
66        pub fn _PyLong_Sign(v: *mut PyObject) -> c_int;
67        pub fn _PyLong_NumBits(v: *mut PyObject) -> size_t;
68        pub fn _PyLong_FromByteArray(
69            bytes: *const c_uchar,
70            n: size_t,
71            little_endian: c_int,
72            is_signed: c_int,
73        ) -> *mut PyObject;
74        pub fn _PyLong_AsByteArray(
75            v: *mut PyLongObject,
76            bytes: *mut c_uchar,
77            n: size_t,
78            little_endian: c_int,
79            is_signed: c_int,
80        ) -> c_int;
81        pub fn _PyLong_Format(
82            aa: *mut PyObject,
83            base: c_int,
84            addL: c_int,
85            newstyle: c_int,
86        ) -> *mut PyObject;
87        pub fn _PyLong_FormatAdvanced(
88            obj: *mut PyObject,
89            format_spec: *mut c_char,
90            format_spec_len: Py_ssize_t,
91        ) -> *mut PyObject;
92    }
93}