-
-
Notifications
You must be signed in to change notification settings - Fork 31.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
Move non-limited C API from Include/memoryobject.h to a new Include/cpython/memoryobject.h header file.
- Loading branch information
Showing
5 changed files
with
50 additions
and
41 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
#ifndef Py_CPYTHON_MEMORYOBJECT_H | ||
# error "this header file must not be included directly" | ||
#endif | ||
|
||
PyAPI_DATA(PyTypeObject) _PyManagedBuffer_Type; | ||
|
||
/* 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 | ||
and functions instead! */ | ||
#define _Py_MANAGED_BUFFER_RELEASED 0x001 /* access to exporter blocked */ | ||
#define _Py_MANAGED_BUFFER_FREE_FORMAT 0x002 /* free format */ | ||
|
||
typedef struct { | ||
PyObject_HEAD | ||
int flags; /* state flags */ | ||
Py_ssize_t exports; /* number of direct memoryview exports */ | ||
Py_buffer master; /* snapshot buffer obtained from the original exporter */ | ||
} _PyManagedBufferObject; | ||
|
||
|
||
/* 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 */ | ||
PyObject *weakreflist; | ||
Py_ssize_t ob_array[1]; /* shape, strides, suboffsets */ | ||
} PyMemoryViewObject; | ||
|
||
/* Get a pointer to the memoryview's private copy of the exporter's buffer. */ | ||
#define PyMemoryView_GET_BUFFER(op) (&((PyMemoryViewObject *)(op))->view) | ||
/* Get a pointer to the exporting object (this may be NULL!). */ | ||
#define PyMemoryView_GET_BASE(op) (((PyMemoryViewObject *)(op))->view.obj) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters