python27_sys/
longobject.rs1use 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 { }
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}