/* Public Py_buffer API */ #ifndef Py_BUFFER_H #define Py_BUFFER_H #ifdef __cplusplus extern "C" { #endif #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030b0000 /* === New Buffer API ============================================ * Limited API and stable ABI since Python 3.11 * * Py_buffer struct layout and size is now part of the stable abi3. The * struct layout and size must not be changed in any way, as it would * break the ABI. * */ typedef struct { void *buf; PyObject *obj; /* owned reference */ Py_ssize_t len; Py_ssize_t itemsize; /* This is Py_ssize_t so it can be pointed to by strides in simple case.*/ int readonly; int ndim; char *format; Py_ssize_t *shape; Py_ssize_t *strides; Py_ssize_t *suboffsets; void *internal; } Py_buffer; /* Return 1 if the getbuffer function is available, otherwise return 0. */ PyAPI_FUNC(int) PyObject_CheckBuffer(PyObject *obj); /* This is a C-API version of the getbuffer function call. It checks to make sure object has the required function pointer and issues the call. Returns -1 and raises an error on failure and returns 0 on success. */ PyAPI_FUNC(int) PyObject_GetBuffer(PyObject *obj, Py_buffer *view, int flags); /* Get the memory area pointed to by the indices for the buffer given. Note that view->ndim is the assumed size of indices. */ PyAPI_FUNC(void *) PyBuffer_GetPointer(const Py_buffer *view, const Py_ssize_t *indices); /* Return the implied itemsize of the data-format area from a struct-style description. */ PyAPI_FUNC(Py_ssize_t) PyBuffer_SizeFromFormat(const char *format); /* Implementation in memoryobject.c */ PyAPI_FUNC(int) PyBuffer_ToContiguous(void *buf, const Py_buffer *view, Py_ssize_t len, char order); PyAPI_FUNC(int) PyBuffer_FromContiguous(const Py_buffer *view, const void *buf, Py_ssize_t len, char order); /* Copy len bytes of data from the contiguous chunk of memory pointed to by buf into the buffer exported by obj. Return 0 on success and return -1 and raise a PyBuffer_Error on error (i.e. the object does not have a buffer interface or it is not working). If fort is 'F', then if the object is multi-dimensional, then the data will be copied into the array in Fortran-style (first dimension varies the fastest). If fort is 'C', then the data will be copied into the array in C-style (last dimension varies the fastest). If fort is 'A', then it does not matter and the copy will be made in whatever way is more efficient. */ PyAPI_FUNC(int) PyObject_CopyData(PyObject *dest, PyObject *src); /* Copy the data from the src buffer to the buffer of destination. */ PyAPI_FUNC(int) PyBuffer_IsContiguous(const Py_buffer *view, char fort); /*Fill the strides array with byte-strides of a contiguous (Fortran-style if fort is 'F' or C-style otherwise) array of the given shape with the given number of bytes per element. */ PyAPI_FUNC(void) PyBuffer_FillContiguousStrides(int ndims, Py_ssize_t *shape, Py_ssize_t *strides, int itemsize, char fort); /* Fills in a buffer-info structure correctly for an exporter that can only share a contiguous chunk of memory of "unsigned bytes" of the given length. Returns 0 on success and -1 (with raising an error) on error. */ PyAPI_FUNC(int) PyBuffer_FillInfo(Py_buffer *view, PyObject *o, void *buf, Py_ssize_t len, int readonly, int flags); /* Releases a Py_buffer obtained from getbuffer ParseTuple's "s*". */ PyAPI_FUNC(void) PyBuffer_Release(Py_buffer *view); /* Maximum number of dimensions */ #define PyBUF_MAX_NDIM 64 /* Flags for getting buffers */ #define PyBUF_SIMPLE 0 #define PyBUF_WRITABLE 0x0001 #ifndef Py_LIMITED_API /* we used to include an E, backwards compatible alias */ #define PyBUF_WRITEABLE PyBUF_WRITABLE #endif #define PyBUF_FORMAT 0x0004 #define PyBUF_ND 0x0008 #define PyBUF_STRIDES (0x0010 | PyBUF_ND) #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES) #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES) #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES) #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES) #define PyBUF_CONTIG (PyBUF_ND | PyBUF_WRITABLE) #define PyBUF_CONTIG_RO (PyBUF_ND) #define PyBUF_STRIDED (PyBUF_STRIDES | PyBUF_WRITABLE) #define PyBUF_STRIDED_RO (PyBUF_STRIDES) #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_WRITABLE | PyBUF_FORMAT) #define PyBUF_RECORDS_RO (PyBUF_STRIDES | PyBUF_FORMAT) #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_WRITABLE | PyBUF_FORMAT) #define PyBUF_FULL_RO (PyBUF_INDIRECT | PyBUF_FORMAT) #define PyBUF_READ 0x100 #define PyBUF_WRITE 0x200 #endif /* !Py_LIMITED_API || Py_LIMITED_API >= 3.11 */ #ifdef __cplusplus } #endif #endif /* Py_BUFFER_H */
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
cpython | Folder | 0755 |
|
|
internal | Folder | 0755 |
|
|
Python.h | File | 2.79 KB | 0644 |
|
abstract.h | File | 30.67 KB | 0644 |
|
bltinmodule.h | File | 264 B | 0644 |
|
boolobject.h | File | 1.18 KB | 0644 |
|
bytearrayobject.h | File | 1.43 KB | 0644 |
|
bytesobject.h | File | 2.56 KB | 0644 |
|
ceval.h | File | 6.11 KB | 0644 |
|
codecs.h | File | 6.91 KB | 0644 |
|
compile.h | File | 520 B | 0644 |
|
complexobject.h | File | 724 B | 0644 |
|
datetime.h | File | 9.41 KB | 0644 |
|
descrobject.h | File | 1.23 KB | 0644 |
|
dictobject.h | File | 3.76 KB | 0644 |
|
dynamic_annotations.h | File | 21.94 KB | 0644 |
|
enumobject.h | File | 253 B | 0644 |
|
errcode.h | File | 1.74 KB | 0644 |
|
exports.h | File | 1.07 KB | 0644 |
|
fileobject.h | File | 1.53 KB | 0644 |
|
fileutils.h | File | 507 B | 0644 |
|
floatobject.h | File | 1.49 KB | 0644 |
|
frameobject.h | File | 336 B | 0644 |
|
genericaliasobject.h | File | 334 B | 0644 |
|
import.h | File | 2.95 KB | 0644 |
|
intrcheck.h | File | 772 B | 0644 |
|
iterobject.h | File | 593 B | 0644 |
|
listobject.h | File | 1.74 KB | 0644 |
|
longobject.h | File | 3.65 KB | 0644 |
|
marshal.h | File | 827 B | 0644 |
|
memoryobject.h | File | 2.74 KB | 0644 |
|
methodobject.h | File | 4.95 KB | 0644 |
|
modsupport.h | File | 6.39 KB | 0644 |
|
moduleobject.h | File | 2.32 KB | 0644 |
|
object.h | File | 29.1 KB | 0644 |
|
objimpl.h | File | 8.23 KB | 0644 |
|
opcode.h | File | 10.92 KB | 0644 |
|
osdefs.h | File | 737 B | 0644 |
|
osmodule.h | File | 291 B | 0644 |
|
patchlevel.h | File | 1.27 KB | 0644 |
|
py_curses.h | File | 2.41 KB | 0644 |
|
pybuffer.h | File | 5 KB | 0644 |
|
pycapsule.h | File | 1.68 KB | 0644 |
|
pyconfig-64.h | File | 51.96 KB | 0644 |
|
pyconfig.h | File | 162 B | 0644 |
|
pydtrace.h | File | 2.36 KB | 0644 |
|
pyerrors.h | File | 12.48 KB | 0644 |
|
pyexpat.h | File | 2.51 KB | 0644 |
|
pyframe.h | File | 551 B | 0644 |
|
pyhash.h | File | 4.06 KB | 0644 |
|
pylifecycle.h | File | 2.2 KB | 0644 |
|
pymacconfig.h | File | 2.92 KB | 0644 |
|
pymacro.h | File | 5.92 KB | 0644 |
|
pymath.h | File | 1.93 KB | 0644 |
|
pymem.h | File | 3.8 KB | 0644 |
|
pyport.h | File | 23.88 KB | 0644 |
|
pystate.h | File | 4.53 KB | 0644 |
|
pystrcmp.h | File | 436 B | 0644 |
|
pystrtod.h | File | 1.52 KB | 0644 |
|
pythonrun.h | File | 1.16 KB | 0644 |
|
pythread.h | File | 4.72 KB | 0644 |
|
pytypedefs.h | File | 851 B | 0644 |
|
rangeobject.h | File | 628 B | 0644 |
|
setobject.h | File | 1.51 KB | 0644 |
|
sliceobject.h | File | 2.46 KB | 0644 |
|
structmember.h | File | 1.99 KB | 0644 |
|
structseq.h | File | 1.36 KB | 0644 |
|
sysmodule.h | File | 1.35 KB | 0644 |
|
token.h | File | 2.61 KB | 0644 |
|
traceback.h | File | 583 B | 0644 |
|
tracemalloc.h | File | 1.09 KB | 0644 |
|
tupleobject.h | File | 1.58 KB | 0644 |
|
typeslots.h | File | 2.29 KB | 0644 |
|
unicodeobject.h | File | 35.19 KB | 0644 |
|
warnings.h | File | 1.1 KB | 0644 |
|
weakrefobject.h | File | 1.2 KB | 0644 |
|