python27_sys/
listobject.rs1use libc::c_int;
2
3use crate::object::*;
4use crate::pyport::Py_ssize_t;
5
6#[repr(C)]
7#[derive(Copy, Clone)]
8pub struct PyListObject {
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_size: Py_ssize_t,
16 pub ob_item: *mut *mut PyObject,
17 pub allocated: Py_ssize_t,
18}
19
20#[cfg_attr(windows, link(name = "pythonXY"))]
21extern "C" {
22 pub static mut PyList_Type: PyTypeObject;
23}
24
25#[inline(always)]
26pub unsafe fn PyList_Check(op: *mut PyObject) -> c_int {
27 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
28}
29
30#[inline(always)]
31pub unsafe fn PyList_CheckExact(op: *mut PyObject) -> c_int {
32 let u: *mut PyTypeObject = &mut PyList_Type;
33 (Py_TYPE(op) == u) as c_int
34}
35
36#[inline(always)]
38pub unsafe fn PyList_GET_ITEM(op: *mut PyObject, i: Py_ssize_t) -> *mut PyObject {
39 *(*(op as *mut PyListObject)).ob_item.offset(i as isize)
40}
41
42#[inline(always)]
43pub unsafe fn PyList_GET_SIZE(op: *mut PyObject) -> Py_ssize_t {
44 Py_SIZE(op)
45}
46
47#[inline(always)]
49pub unsafe fn PyList_SET_ITEM(op: *mut PyObject, i: Py_ssize_t, v: *mut PyObject) {
50 *(*(op as *mut PyListObject)).ob_item.offset(i as isize) = v;
51}
52
53#[cfg_attr(windows, link(name = "pythonXY"))]
54extern "C" {
55 pub fn PyList_New(size: Py_ssize_t) -> *mut PyObject;
56 pub fn PyList_Size(list: *mut PyObject) -> Py_ssize_t;
57 pub fn PyList_GetItem(list: *mut PyObject, index: Py_ssize_t) -> *mut PyObject;
58 pub fn PyList_SetItem(list: *mut PyObject, index: Py_ssize_t, item: *mut PyObject) -> c_int;
59 pub fn PyList_Insert(list: *mut PyObject, index: Py_ssize_t, item: *mut PyObject) -> c_int;
60 pub fn PyList_Append(list: *mut PyObject, item: *mut PyObject) -> c_int;
61 pub fn PyList_GetSlice(list: *mut PyObject, low: Py_ssize_t, high: Py_ssize_t)
62 -> *mut PyObject;
63 pub fn PyList_SetSlice(
64 list: *mut PyObject,
65 low: Py_ssize_t,
66 high: Py_ssize_t,
67 itemlist: *mut PyObject,
68 ) -> c_int;
69 pub fn PyList_Sort(list: *mut PyObject) -> c_int;
70 pub fn PyList_Reverse(list: *mut PyObject) -> c_int;
71 pub fn PyList_AsTuple(list: *mut PyObject) -> *mut PyObject;
72 ignore! {
73 fn _PyList_Extend(arg1: *mut PyListObject, arg2: *mut PyObject) -> *mut PyObject;
74 }
75}