summaryrefslogtreecommitdiffstats
path: root/Include/memoryobject.h
diff options
context:
space:
mode:
authorTravis E. Oliphant <oliphant@enthought.com>2007-10-12 23:27:53 (GMT)
committerTravis E. Oliphant <oliphant@enthought.com>2007-10-12 23:27:53 (GMT)
commitfe9bed02e430613f95849fa49aaa4f823a762738 (patch)
treef26a61380fcfda85caaaf70f55e74c75c5a0b90f /Include/memoryobject.h
parent9b30784ab2867bcb7335add7306bbd71e2de2151 (diff)
downloadcpython-fe9bed02e430613f95849fa49aaa4f823a762738.zip
cpython-fe9bed02e430613f95849fa49aaa4f823a762738.tar.gz
cpython-fe9bed02e430613f95849fa49aaa4f823a762738.tar.bz2
Fix problems with memoryview object. There is still more to do to finish PEP 3118. The memory-view object needs to be fleshed out and the struct module needs to be modified.
Diffstat (limited to 'Include/memoryobject.h')
-rw-r--r--Include/memoryobject.h61
1 files changed, 31 insertions, 30 deletions
diff --git a/Include/memoryobject.h b/Include/memoryobject.h
index 4426cd8..8709da5 100644
--- a/Include/memoryobject.h
+++ b/Include/memoryobject.h
@@ -8,9 +8,9 @@ extern "C" {
#endif
typedef struct {
- PyObject_HEAD
- PyObject *base;
- Py_buffer view;
+ PyObject_HEAD
+ PyObject *base;
+ Py_buffer view;
} PyMemoryViewObject;
@@ -21,39 +21,40 @@ PyAPI_DATA(PyTypeObject) PyMemoryView_Type;
#define Py_END_OF_MEMORY (-1)
-PyAPI_FUNC(PyObject *) PyMemoryView_GetContiguous(PyObject *base, int buffertype,
- char fort);
+PyAPI_FUNC(PyObject *) PyMemoryView_GetContiguous(PyObject *base,
+ int buffertype,
+ char fort);
/* Return a contiguous chunk of memory representing the buffer
from an object in a memory view object. If a copy is made then the
- base object for the memory view will be a *new* bytes object.
-
- Otherwise, the base-object will be the object itself and no
- data-copying will be done.
+ base object for the memory view will be a *new* bytes object.
+
+ Otherwise, the base-object will be the object itself and no
+ data-copying will be done.
- The buffertype argument can be PyBUF_READ, PyBUF_WRITE,
- PyBUF_UPDATEIFCOPY to determine whether the returned buffer
- should be READONLY, WRITABLE, or set to update the
- original buffer if a copy must be made. If buffertype is
- PyBUF_WRITE and the buffer is not contiguous an error will
- be raised. In this circumstance, the user can use
- PyBUF_UPDATEIFCOPY to ensure that a a writable temporary
- contiguous buffer is returned. The contents of this
- contiguous buffer will be copied back into the original
- object after the memoryview object is deleted as long as
- the original object is writable and allows setting its
- memory to "readonly". If this is not allowed by the
- original object, then a BufferError is raised.
+ The buffertype argument can be PyBUF_READ, PyBUF_WRITE,
+ PyBUF_SHADOW to determine whether the returned buffer
+ should be READONLY, WRITABLE, or set to update the
+ original buffer if a copy must be made. If buffertype is
+ PyBUF_WRITE and the buffer is not contiguous an error will
+ be raised. In this circumstance, the user can use
+ PyBUF_SHADOW to ensure that a a writable temporary
+ contiguous buffer is returned. The contents of this
+ contiguous buffer will be copied back into the original
+ object after the memoryview object is deleted as long as
+ the original object is writable and allows setting an
+ exclusive write lock. If this is not allowed by the
+ original object, then a BufferError is raised.
- If the object is multi-dimensional and if fortran is 'F',
- the first dimension of the underlying array will vary the
- fastest in the buffer. If fortran is 'C', then the last
- dimension will vary the fastest (C-style contiguous). If
- fortran is 'A', then it does not matter and you will get
- whatever the object decides is more efficient.
+ If the object is multi-dimensional and if fortran is 'F',
+ the first dimension of the underlying array will vary the
+ fastest in the buffer. If fortran is 'C', then the last
+ dimension will vary the fastest (C-style contiguous). If
+ fortran is 'A', then it does not matter and you will get
+ whatever the object decides is more efficient.
- A new reference is returned that must be DECREF'd when finished.
- */
+ A new reference is returned that must be DECREF'd when finished.
+ */
PyAPI_FUNC(PyObject *) PyMemoryView_FromObject(PyObject *base);