pyo3_ffi/cpython/
bytearrayobject.rs1use crate::object::*;
2use crate::pyport::Py_ssize_t;
3#[cfg(not(any(PyPy, GraalPy)))]
4use std::ffi::c_char;
5#[cfg(not(Py_3_9))]
6use std::ffi::c_int;
7
8#[cfg(not(any(PyPy, GraalPy, Py_LIMITED_API)))]
9#[repr(C)]
10pub struct PyByteArrayObject {
11 pub ob_base: PyVarObject,
12 pub ob_alloc: Py_ssize_t,
13 pub ob_bytes: *mut c_char,
14 pub ob_start: *mut c_char,
15 #[cfg(Py_3_9)]
16 pub ob_exports: Py_ssize_t,
17 #[cfg(not(Py_3_9))]
18 pub ob_exports: c_int,
19 #[cfg(Py_3_15)]
20 pub ob_bytes_object: *mut PyObject,
21}
22
23#[cfg(any(PyPy, GraalPy))]
24opaque_struct!(pub PyByteArrayObject);
25
26#[inline]
27#[cfg(not(any(PyPy, GraalPy)))]
28pub unsafe fn PyByteArray_AS_STRING(op: *mut PyObject) -> *mut c_char {
29 let byte_array = op as *mut PyByteArrayObject;
30 (*byte_array).ob_start
31}
32
33#[inline]
45#[cfg(not(Py_GIL_DISABLED))]
46pub unsafe fn PyByteArray_GET_SIZE(op: *mut PyObject) -> Py_ssize_t {
47 Py_SIZE(op)
48}