Spaces:
Runtime error
Runtime error
| /* Public Py_buffer API */ | |
| extern "C" { | |
| /* === 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 */ | |
| /* Flags for getting buffers */ | |
| /* we used to include an E, backwards compatible alias */ | |
| } | |