src/ffi/buffer.rs (25 lines of code) (raw):

// SPDX-License-Identifier: (Apache-2.0 OR MIT) use core::ffi::c_int; use pyo3_ffi::*; #[repr(C)] pub struct _PyManagedBufferObject { pub ob_base: *mut pyo3_ffi::PyObject, pub flags: c_int, pub exports: Py_ssize_t, pub master: *mut Py_buffer, } #[repr(C)] pub struct PyMemoryViewObject { pub ob_base: PyVarObject, pub mbuf: *mut _PyManagedBufferObject, pub hash: Py_hash_t, pub flags: c_int, pub exports: Py_ssize_t, pub view: Py_buffer, pub weakreflist: *mut PyObject, pub ob_array: [Py_ssize_t; 1], } #[allow(non_snake_case)] #[inline(always)] pub unsafe fn PyMemoryView_GET_BUFFER(op: *mut PyObject) -> *const Py_buffer { unsafe { &(*op.cast::<PyMemoryViewObject>()).view } }