mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-04 17:10:47 +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.
75 lines
2.0 KiB
C
75 lines
2.0 KiB
C
#ifndef Py_STRUCTMEMBER_H
|
|
#define Py_STRUCTMEMBER_H
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
/* Interface to map C struct members to Python object attributes */
|
|
|
|
#include <stddef.h> /* For offsetof */
|
|
|
|
/* An array of PyMemberDef structures defines the name, type and offset
|
|
of selected members of a C structure. These can be read by
|
|
PyMember_GetOne() and set by PyMember_SetOne() (except if their READONLY
|
|
flag is set). The array must be terminated with an entry whose name
|
|
pointer is NULL. */
|
|
|
|
typedef struct PyMemberDef {
|
|
char *name;
|
|
int type;
|
|
Py_ssize_t offset;
|
|
int flags;
|
|
char *doc;
|
|
} PyMemberDef;
|
|
|
|
/* Types */
|
|
#define T_SHORT 0
|
|
#define T_INT 1
|
|
#define T_LONG 2
|
|
#define T_FLOAT 3
|
|
#define T_DOUBLE 4
|
|
#define T_STRING 5
|
|
#define T_OBJECT 6
|
|
/* XXX the ordering here is weird for binary compatibility */
|
|
#define T_CHAR 7 /* 1-character string */
|
|
#define T_BYTE 8 /* 8-bit signed int */
|
|
/* unsigned variants: */
|
|
#define T_UBYTE 9
|
|
#define T_USHORT 10
|
|
#define T_UINT 11
|
|
#define T_ULONG 12
|
|
|
|
/* Added by Jack: strings contained in the structure */
|
|
#define T_STRING_INPLACE 13
|
|
|
|
/* Added by Lillo: bools contained in the structure (assumed char) */
|
|
#define T_BOOL 14
|
|
|
|
#define T_OBJECT_EX 16 /* Like T_OBJECT, but raises AttributeError
|
|
when the value is NULL, instead of
|
|
converting to None. */
|
|
#define T_LONGLONG 17
|
|
#define T_ULONGLONG 18
|
|
|
|
#define T_PYSSIZET 19 /* Py_ssize_t */
|
|
#define T_NONE 20 /* Value is always None */
|
|
|
|
|
|
/* Flags */
|
|
#define READONLY 1
|
|
#define READ_RESTRICTED 2
|
|
#define PY_WRITE_RESTRICTED 4
|
|
#define RESTRICTED (READ_RESTRICTED | PY_WRITE_RESTRICTED)
|
|
|
|
|
|
/* Current API, use this */
|
|
PyAPI_FUNC(PyObject *) PyMember_GetOne(const char *, struct PyMemberDef *);
|
|
PyAPI_FUNC(int) PyMember_SetOne(char *, struct PyMemberDef *, PyObject *);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* !Py_STRUCTMEMBER_H */
|