mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-05 09:30:44 +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.
63 lines
2.1 KiB
C
63 lines
2.1 KiB
C
/* ByteArray object interface */
|
|
|
|
#ifndef Py_BYTEARRAYOBJECT_H
|
|
#define Py_BYTEARRAYOBJECT_H
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <stdarg.h>
|
|
|
|
/* Type PyByteArrayObject represents a mutable array of bytes.
|
|
* The Python API is that of a sequence;
|
|
* the bytes are mapped to ints in [0, 256).
|
|
* Bytes are not characters; they may be used to encode characters.
|
|
* The only way to go between bytes and str/unicode is via encoding
|
|
* and decoding.
|
|
* For the convenience of C programmers, the bytes type is considered
|
|
* to contain a char pointer, not an unsigned char pointer.
|
|
*/
|
|
|
|
/* Object layout */
|
|
#ifndef Py_LIMITED_API
|
|
typedef struct {
|
|
PyObject_VAR_HEAD
|
|
Py_ssize_t ob_alloc; /* How many bytes allocated in ob_bytes */
|
|
char *ob_bytes; /* Physical backing buffer */
|
|
char *ob_start; /* Logical start inside ob_bytes */
|
|
/* XXX(nnorwitz): should ob_exports be Py_ssize_t? */
|
|
int ob_exports; /* How many buffer exports */
|
|
} PyByteArrayObject;
|
|
#endif
|
|
|
|
/* Type object */
|
|
PyAPI_DATA(PyTypeObject) PyByteArray_Type;
|
|
PyAPI_DATA(PyTypeObject) PyByteArrayIter_Type;
|
|
|
|
/* Type check macros */
|
|
#define PyByteArray_Check(self) PyObject_TypeCheck(self, &PyByteArray_Type)
|
|
#define PyByteArray_CheckExact(self) (Py_TYPE(self) == &PyByteArray_Type)
|
|
|
|
/* Direct API functions */
|
|
PyAPI_FUNC(PyObject *) PyByteArray_FromObject(PyObject *);
|
|
PyAPI_FUNC(PyObject *) PyByteArray_Concat(PyObject *, PyObject *);
|
|
PyAPI_FUNC(PyObject *) PyByteArray_FromStringAndSize(const char *, Py_ssize_t);
|
|
PyAPI_FUNC(Py_ssize_t) PyByteArray_Size(PyObject *);
|
|
PyAPI_FUNC(char *) PyByteArray_AsString(PyObject *);
|
|
PyAPI_FUNC(int) PyByteArray_Resize(PyObject *, Py_ssize_t);
|
|
|
|
/* Macros, trading safety for speed */
|
|
#ifndef Py_LIMITED_API
|
|
#define PyByteArray_AS_STRING(self) \
|
|
(assert(PyByteArray_Check(self)), \
|
|
Py_SIZE(self) ? ((PyByteArrayObject *)(self))->ob_start : _PyByteArray_empty_string)
|
|
#define PyByteArray_GET_SIZE(self) (assert(PyByteArray_Check(self)), Py_SIZE(self))
|
|
|
|
PyAPI_DATA(char) _PyByteArray_empty_string[];
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* !Py_BYTEARRAYOBJECT_H */
|