diff options
author | Travis E. Oliphant <oliphant@enthought.com> | 2007-10-12 23:27:53 (GMT) |
---|---|---|
committer | Travis E. Oliphant <oliphant@enthought.com> | 2007-10-12 23:27:53 (GMT) |
commit | fe9bed02e430613f95849fa49aaa4f823a762738 (patch) | |
tree | f26a61380fcfda85caaaf70f55e74c75c5a0b90f /Include/memoryobject.h | |
parent | 9b30784ab2867bcb7335add7306bbd71e2de2151 (diff) | |
download | cpython-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.h | 61 |
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); |