| 
									
										
										
										
											2008-08-19 18:22:14 +00:00
										 |  |  | /* Memory view object. In Python this is available as "memoryview". */ | 
					
						
							| 
									
										
										
										
											2007-08-18 11:21:56 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #ifndef Py_MEMORYOBJECT_H
 | 
					
						
							|  |  |  | #define Py_MEMORYOBJECT_H
 | 
					
						
							|  |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | extern "C" { | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-25 12:24:21 +01:00
										 |  |  | #ifndef Py_LIMITED_API
 | 
					
						
							|  |  |  | PyAPI_DATA(PyTypeObject) _PyManagedBuffer_Type; | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2007-08-18 11:21:56 +00:00
										 |  |  | PyAPI_DATA(PyTypeObject) PyMemoryView_Type; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-08-19 18:22:14 +00:00
										 |  |  | #define PyMemoryView_Check(op) (Py_TYPE(op) == &PyMemoryView_Type)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-03 20:14:31 +00:00
										 |  |  | #ifndef Py_LIMITED_API
 | 
					
						
							| 
									
										
										
										
											2012-02-25 12:24:21 +01:00
										 |  |  | /* Get a pointer to the memoryview's private copy of the exporter's buffer. */ | 
					
						
							| 
									
										
										
										
											2008-08-19 18:22:14 +00:00
										 |  |  | #define PyMemoryView_GET_BUFFER(op) (&((PyMemoryViewObject *)(op))->view)
 | 
					
						
							| 
									
										
										
										
											2012-02-25 12:24:21 +01:00
										 |  |  | /* Get a pointer to the exporting object (this may be NULL!). */ | 
					
						
							| 
									
										
										
										
											2008-08-19 18:22:14 +00:00
										 |  |  | #define PyMemoryView_GET_BASE(op) (((PyMemoryViewObject *)(op))->view.obj)
 | 
					
						
							| 
									
										
										
										
											2010-12-03 20:14:31 +00:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2007-08-18 11:21:56 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | PyAPI_FUNC(PyObject *) PyMemoryView_FromObject(PyObject *base); | 
					
						
							| 
									
										
										
										
											2012-02-25 12:24:21 +01:00
										 |  |  | PyAPI_FUNC(PyObject *) PyMemoryView_FromMemory(char *mem, Py_ssize_t size, | 
					
						
							|  |  |  |                                                int flags); | 
					
						
							| 
									
										
										
										
											2011-01-06 19:15:47 +00:00
										 |  |  | #ifndef Py_LIMITED_API
 | 
					
						
							| 
									
										
										
										
											2008-08-19 18:22:14 +00:00
										 |  |  | PyAPI_FUNC(PyObject *) PyMemoryView_FromBuffer(Py_buffer *info); | 
					
						
							| 
									
										
										
										
											2011-01-06 19:15:47 +00:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2012-02-25 12:24:21 +01:00
										 |  |  | PyAPI_FUNC(PyObject *) PyMemoryView_GetContiguous(PyObject *base, | 
					
						
							|  |  |  |                                                   int buffertype, | 
					
						
							|  |  |  |                                                   char order); | 
					
						
							| 
									
										
										
										
											2009-01-03 19:20:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-18 11:21:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-25 12:24:21 +01:00
										 |  |  | /* The structs are declared here so that macros can work, but they shouldn't
 | 
					
						
							|  |  |  |    be considered public. Don't access their fields directly, use the macros | 
					
						
							| 
									
										
										
										
											2008-08-19 18:22:14 +00:00
										 |  |  |    and functions instead! */ | 
					
						
							| 
									
										
										
										
											2010-12-03 20:14:31 +00:00
										 |  |  | #ifndef Py_LIMITED_API
 | 
					
						
							| 
									
										
										
										
											2012-02-25 12:24:21 +01:00
										 |  |  | #define _Py_MANAGED_BUFFER_RELEASED    0x001  /* access to exporter blocked */
 | 
					
						
							|  |  |  | #define _Py_MANAGED_BUFFER_FREE_FORMAT 0x002  /* free format */
 | 
					
						
							| 
									
										
										
										
											2008-08-19 18:22:14 +00:00
										 |  |  | typedef struct { | 
					
						
							| 
									
										
										
										
											2009-01-03 19:20:36 +00:00
										 |  |  |     PyObject_HEAD | 
					
						
							| 
									
										
										
										
											2012-02-25 12:24:21 +01:00
										 |  |  |     int flags;          /* state flags */ | 
					
						
							|  |  |  |     Py_ssize_t exports; /* number of direct memoryview exports */ | 
					
						
							|  |  |  |     Py_buffer master; /* snapshot buffer obtained from the original exporter */ | 
					
						
							|  |  |  | } _PyManagedBufferObject; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* static storage used for casting between formats */ | 
					
						
							|  |  |  | #define _Py_MEMORYVIEW_MAX_FORMAT 3 /* must be >= 3 */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* memoryview state flags */ | 
					
						
							|  |  |  | #define _Py_MEMORYVIEW_RELEASED    0x001  /* access to master buffer blocked */
 | 
					
						
							|  |  |  | #define _Py_MEMORYVIEW_C           0x002  /* C-contiguous layout */
 | 
					
						
							|  |  |  | #define _Py_MEMORYVIEW_FORTRAN     0x004  /* Fortran contiguous layout */
 | 
					
						
							|  |  |  | #define _Py_MEMORYVIEW_SCALAR      0x008  /* scalar: ndim = 0 */
 | 
					
						
							|  |  |  | #define _Py_MEMORYVIEW_PIL         0x010  /* PIL-style layout */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef struct { | 
					
						
							|  |  |  |     PyObject_VAR_HEAD | 
					
						
							|  |  |  |     _PyManagedBufferObject *mbuf; /* managed buffer */ | 
					
						
							|  |  |  |     Py_hash_t hash;               /* hash value for read-only views */ | 
					
						
							|  |  |  |     int flags;                    /* state flags */ | 
					
						
							|  |  |  |     Py_ssize_t exports;           /* number of buffer re-exports */ | 
					
						
							|  |  |  |     Py_buffer view;               /* private copy of the exporter's view */ | 
					
						
							|  |  |  |     char format[_Py_MEMORYVIEW_MAX_FORMAT]; /* used for casting */ | 
					
						
							| 
									
										
										
										
											2012-05-28 21:35:09 +01:00
										 |  |  |     PyObject *weakreflist; | 
					
						
							| 
									
										
										
										
											2012-02-25 12:24:21 +01:00
										 |  |  |     Py_ssize_t ob_array[1];       /* shape, strides, suboffsets */ | 
					
						
							| 
									
										
										
										
											2008-08-19 18:22:14 +00:00
										 |  |  | } PyMemoryViewObject; | 
					
						
							| 
									
										
										
										
											2010-12-03 20:14:31 +00:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2008-08-19 18:22:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-18 11:21:56 +00:00
										 |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | #endif /* !Py_MEMORYOBJECT_H */
 |