summaryrefslogtreecommitdiff
path: root/Include/memoryobject.h
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2008-08-19 18:22:14 +0000
committerAntoine Pitrou <solipsis@pitrou.net>2008-08-19 18:22:14 +0000
commitee58fa484ed535ec6d7f2b93cb3ef2addeb337e1 (patch)
tree9398d06f962ab532ad8bc80407630069491c1871 /Include/memoryobject.h
parentfd036451bf0e0ade8783e21df801abf7be96d020 (diff)
downloadcpython-git-ee58fa484ed535ec6d7f2b93cb3ef2addeb337e1.tar.gz
#3560: cleanup C memoryview API
Diffstat (limited to 'Include/memoryobject.h')
-rw-r--r--Include/memoryobject.h32
1 files changed, 19 insertions, 13 deletions
diff --git a/Include/memoryobject.h b/Include/memoryobject.h
index ad2e8e781f..3888259124 100644
--- a/Include/memoryobject.h
+++ b/Include/memoryobject.h
@@ -1,5 +1,4 @@
-
-/* Memory object interface */
+/* Memory view object. In Python this is available as "memoryview". */
#ifndef Py_MEMORYOBJECT_H
#define Py_MEMORYOBJECT_H
@@ -7,19 +6,15 @@
extern "C" {
#endif
-typedef struct {
- PyObject_HEAD
- PyObject *base;
- Py_buffer view;
-} PyMemoryViewObject;
-
-
PyAPI_DATA(PyTypeObject) PyMemoryView_Type;
-#define PyMemory_Check(op) (Py_TYPE(op) == &PyMemoryView_Type)
-#define PyMemoryView(op) (((PyMemoryViewObject *)(op))->view)
+#define PyMemoryView_Check(op) (Py_TYPE(op) == &PyMemoryView_Type)
+
+/* Get a pointer to the underlying Py_buffer of a memoryview object. */
+#define PyMemoryView_GET_BUFFER(op) (&((PyMemoryViewObject *)(op))->view)
+/* Get a pointer to the PyObject from which originates a memoryview object. */
+#define PyMemoryView_GET_BASE(op) (((PyMemoryViewObject *)(op))->view.obj)
-#define Py_END_OF_MEMORY (-1)
PyAPI_FUNC(PyObject *) PyMemoryView_GetContiguous(PyObject *base,
int buffertype,
@@ -58,10 +53,21 @@ PyAPI_FUNC(PyObject *) PyMemoryView_GetContiguous(PyObject *base,
PyAPI_FUNC(PyObject *) PyMemoryView_FromObject(PyObject *base);
-PyAPI_FUNC(PyObject *) PyMemoryView_FromMemory(Py_buffer *info);
+PyAPI_FUNC(PyObject *) PyMemoryView_FromBuffer(Py_buffer *info);
/* create new if bufptr is NULL
will be a new bytesobject in base */
+
+/* The struct is declared here so that macros can work, but it shouldn't
+ be considered public. Don't access those fields directly, use the macros
+ and functions instead! */
+typedef struct {
+ PyObject_HEAD
+ PyObject *base;
+ Py_buffer view;
+} PyMemoryViewObject;
+
+
#ifdef __cplusplus
}
#endif