pyo3_ffi/cpython/
listobject.rs1use crate::object::*;
2#[cfg(not(PyPy))]
3use crate::pyport::Py_ssize_t;
4
5#[cfg(not(any(PyPy, GraalPy)))]
6#[repr(C)]
7#[derive(Copy, Clone)]
8pub struct PyListObject {
9 pub ob_base: PyVarObject,
10 pub ob_item: *mut *mut PyObject,
11 pub allocated: Py_ssize_t,
12}
13
14#[cfg(any(PyPy, GraalPy))]
15pub struct PyListObject {
16 pub ob_base: PyObject,
17}
18
19#[inline]
25#[cfg(not(any(PyPy, GraalPy)))]
26pub unsafe fn PyList_GET_ITEM(op: *mut PyObject, i: Py_ssize_t) -> *mut PyObject {
27 *(*(op as *mut PyListObject)).ob_item.offset(i)
28}
29
30#[inline]
32#[cfg(not(any(PyPy, GraalPy)))]
33pub unsafe fn PyList_SET_ITEM(op: *mut PyObject, i: Py_ssize_t, v: *mut PyObject) {
34 *(*(op as *mut PyListObject)).ob_item.offset(i) = v;
35}
36
37#[inline]
38#[cfg(not(PyPy))]
39pub unsafe fn PyList_GET_SIZE(op: *mut PyObject) -> Py_ssize_t {
40 Py_SIZE(op)
41}