mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-05 01:20:42 +00:00
768e812e45
* On windows it's strongly desired to be able to compile straight out of a clean checkout or source download. This means anyone can download the source and investigate something quickly, without having to worry about the hassle of figuring out how the project downloads 3rd party dependencies, fetching them, getting them registered in the right place. * This can't be put in a submodule as git submodules don't get downloaded by default so people new to git will get confusing compilation messages, and someone downloading the source from github directly without cloning via git won't get submodules included. * It does add some extra size to a fresh download/checkout which is unfortunate, but absolutely worth the cost. Shallow checkouts still aren't unfeasibly large, and it's only a one-off cost at clone time.
73 lines
2.7 KiB
C
73 lines
2.7 KiB
C
/* Memory view object. In Python this is available as "memoryview". */
|
|
|
|
#ifndef Py_MEMORYOBJECT_H
|
|
#define Py_MEMORYOBJECT_H
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef Py_LIMITED_API
|
|
PyAPI_DATA(PyTypeObject) _PyManagedBuffer_Type;
|
|
#endif
|
|
PyAPI_DATA(PyTypeObject) PyMemoryView_Type;
|
|
|
|
#define PyMemoryView_Check(op) (Py_TYPE(op) == &PyMemoryView_Type)
|
|
|
|
#ifndef Py_LIMITED_API
|
|
/* 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)
|
|
#endif
|
|
|
|
PyAPI_FUNC(PyObject *) PyMemoryView_FromObject(PyObject *base);
|
|
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
|
|
PyAPI_FUNC(PyObject *) PyMemoryView_FromMemory(char *mem, Py_ssize_t size,
|
|
int flags);
|
|
#endif
|
|
#ifndef Py_LIMITED_API
|
|
PyAPI_FUNC(PyObject *) PyMemoryView_FromBuffer(Py_buffer *info);
|
|
#endif
|
|
PyAPI_FUNC(PyObject *) PyMemoryView_GetContiguous(PyObject *base,
|
|
int buffertype,
|
|
char order);
|
|
|
|
|
|
/* 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! */
|
|
#ifndef Py_LIMITED_API
|
|
#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;
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* !Py_MEMORYOBJECT_H */
|