diff options
author | Nathan Manville <nsmanville@gmail.com> | 2019-08-19 07:30:46 -0700 |
---|---|---|
committer | Stefan Behnel <stefan_ml@behnel.de> | 2019-08-21 20:42:43 +0200 |
commit | 6b01c3725c4a6b488332d76a305b2d349953d0b9 (patch) | |
tree | fbeaf7c969aa326539d47d99364b5a8425e2ae13 | |
parent | 4d79003f64cb7b6366d5f3d02910a803a3372e36 (diff) | |
download | cython-6b01c3725c4a6b488332d76a305b2d349953d0b9.tar.gz |
Include memoryview C-API (GH-3082)
Issue: #2541
-rw-r--r-- | Cython/Includes/cpython/memoryview.pxd | 50 | ||||
-rw-r--r-- | tests/run/cython_includes.pyx | 1 |
2 files changed, 51 insertions, 0 deletions
diff --git a/Cython/Includes/cpython/memoryview.pxd b/Cython/Includes/cpython/memoryview.pxd new file mode 100644 index 000000000..83a84e6f9 --- /dev/null +++ b/Cython/Includes/cpython/memoryview.pxd @@ -0,0 +1,50 @@ +cdef extern from "Python.h": + + ########################################################################### + # MemoryView Objects + ########################################################################### + # A memoryview object exposes the C level buffer interface as a Python + # object which can then be passed around like any other object + + object PyMemoryView_FromObject(object obj) + # Return value: New reference. + # Create a memoryview object from an object that provides the buffer + # interface. If obj supports writable buffer exports, the memoryview object + # will be read/write, otherwise it may be either read-only or read/write at + # the discretion of the exporter. + + object PyMemoryView_FromMemory(char *mem, Py_ssize_t size, int flags) + # Return value: New reference. + # Create a memoryview object using mem as the underlying buffer. flags can + # be one of PyBUF_READ or PyBUF_WRITE. + # New in version 3.3. + + object PyMemoryView_FromBuffer(Py_buffer *view) + # Return value: New reference. + # Create a memoryview object wrapping the given buffer structure view. For + # simple byte buffers, PyMemoryView_FromMemory() is the preferred function. + + object PyMemoryView_GetContiguous(object obj, + int buffertype, + char order) + # Return value: New reference. + # Create a memoryview object to a contiguous chunk of memory (in either ‘C’ + # or ‘F’ortran order) from an object that defines the buffer interface. If + # memory is contiguous, the memoryview object points to the original + # memory. Otherwise, a copy is made and the memoryview points to a new + # bytes object. + + bint PyMemoryView_Check(object obj) + # Return true if the object obj is a memoryview object. It is not currently + # allowed to create subclasses of memoryview. + + Py_buffer *PyMemoryView_GET_BUFFER(object mview) + # Return a pointer to the memoryview’s private copy of the exporter’s + # buffer. mview must be a memoryview instance; this macro doesn’t check its + # type, you must do it yourself or you will risk crashes. + + Py_buffer *PyMemoryView_GET_BASE(object mview) + # Return either a pointer to the exporting object that the memoryview is + # based on or NULL if the memoryview has been created by one of the + # functions PyMemoryView_FromMemory() or PyMemoryView_FromBuffer(). mview + # must be a memoryview instance. diff --git a/tests/run/cython_includes.pyx b/tests/run/cython_includes.pyx index 288580f4c..2019c0922 100644 --- a/tests/run/cython_includes.pyx +++ b/tests/run/cython_includes.pyx @@ -27,6 +27,7 @@ cimport cpython.long cimport cpython.longintrepr cimport cpython.mapping cimport cpython.mem +cimport cpython.memoryview cimport cpython.method cimport cpython.module cimport cpython.number |