summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Manville <nsmanville@gmail.com>2019-08-19 07:30:46 -0700
committerStefan Behnel <stefan_ml@behnel.de>2019-08-21 20:42:43 +0200
commit6b01c3725c4a6b488332d76a305b2d349953d0b9 (patch)
treefbeaf7c969aa326539d47d99364b5a8425e2ae13
parent4d79003f64cb7b6366d5f3d02910a803a3372e36 (diff)
downloadcython-6b01c3725c4a6b488332d76a305b2d349953d0b9.tar.gz
Include memoryview C-API (GH-3082)
Issue: #2541
-rw-r--r--Cython/Includes/cpython/memoryview.pxd50
-rw-r--r--tests/run/cython_includes.pyx1
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