diff Include/memoryobject.h @ 43550:4ea945cbbb6d

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.
author Travis E. Oliphant <oliphant@enthought.com>
date Fri, 12 Oct 2007 23:27:53 +0000
parents 0476a2cc5658
children 86a2679dca46
line wrap: on
line diff
--- a/Include/memoryobject.h	Fri Oct 12 22:06:37 2007 +0000
+++ b/Include/memoryobject.h	Fri Oct 12 23:27:53 2007 +0000
@@ -8,9 +8,9 @@
 #endif
 
 typedef struct {
-        PyObject_HEAD
-        PyObject *base;
-        Py_buffer view;
+	PyObject_HEAD
+	PyObject *base;
+	Py_buffer view;
 } PyMemoryViewObject;
 
 
@@ -21,39 +21,40 @@
 
 #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);