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.
108 lines
2.9 KiB
C
108 lines
2.9 KiB
C
/* Descriptors */
|
|
#ifndef Py_DESCROBJECT_H
|
|
#define Py_DESCROBJECT_H
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef PyObject *(*getter)(PyObject *, void *);
|
|
typedef int (*setter)(PyObject *, PyObject *, void *);
|
|
|
|
typedef struct PyGetSetDef {
|
|
char *name;
|
|
getter get;
|
|
setter set;
|
|
char *doc;
|
|
void *closure;
|
|
} PyGetSetDef;
|
|
|
|
#ifndef Py_LIMITED_API
|
|
typedef PyObject *(*wrapperfunc)(PyObject *self, PyObject *args,
|
|
void *wrapped);
|
|
|
|
typedef PyObject *(*wrapperfunc_kwds)(PyObject *self, PyObject *args,
|
|
void *wrapped, PyObject *kwds);
|
|
|
|
struct wrapperbase {
|
|
char *name;
|
|
int offset;
|
|
void *function;
|
|
wrapperfunc wrapper;
|
|
char *doc;
|
|
int flags;
|
|
PyObject *name_strobj;
|
|
};
|
|
|
|
/* Flags for above struct */
|
|
#define PyWrapperFlag_KEYWORDS 1 /* wrapper function takes keyword args */
|
|
|
|
/* Various kinds of descriptor objects */
|
|
|
|
typedef struct {
|
|
PyObject_HEAD
|
|
PyTypeObject *d_type;
|
|
PyObject *d_name;
|
|
PyObject *d_qualname;
|
|
} PyDescrObject;
|
|
|
|
#define PyDescr_COMMON PyDescrObject d_common
|
|
|
|
#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
|
|
#define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
|
|
|
|
typedef struct {
|
|
PyDescr_COMMON;
|
|
PyMethodDef *d_method;
|
|
} PyMethodDescrObject;
|
|
|
|
typedef struct {
|
|
PyDescr_COMMON;
|
|
struct PyMemberDef *d_member;
|
|
} PyMemberDescrObject;
|
|
|
|
typedef struct {
|
|
PyDescr_COMMON;
|
|
PyGetSetDef *d_getset;
|
|
} PyGetSetDescrObject;
|
|
|
|
typedef struct {
|
|
PyDescr_COMMON;
|
|
struct wrapperbase *d_base;
|
|
void *d_wrapped; /* This can be any function pointer */
|
|
} PyWrapperDescrObject;
|
|
#endif /* Py_LIMITED_API */
|
|
|
|
PyAPI_DATA(PyTypeObject) PyClassMethodDescr_Type;
|
|
PyAPI_DATA(PyTypeObject) PyGetSetDescr_Type;
|
|
PyAPI_DATA(PyTypeObject) PyMemberDescr_Type;
|
|
PyAPI_DATA(PyTypeObject) PyMethodDescr_Type;
|
|
PyAPI_DATA(PyTypeObject) PyWrapperDescr_Type;
|
|
PyAPI_DATA(PyTypeObject) PyDictProxy_Type;
|
|
#ifndef Py_LIMITED_API
|
|
PyAPI_DATA(PyTypeObject) _PyMethodWrapper_Type;
|
|
#endif /* Py_LIMITED_API */
|
|
|
|
PyAPI_FUNC(PyObject *) PyDescr_NewMethod(PyTypeObject *, PyMethodDef *);
|
|
PyAPI_FUNC(PyObject *) PyDescr_NewClassMethod(PyTypeObject *, PyMethodDef *);
|
|
struct PyMemberDef; /* forward declaration for following prototype */
|
|
PyAPI_FUNC(PyObject *) PyDescr_NewMember(PyTypeObject *,
|
|
struct PyMemberDef *);
|
|
PyAPI_FUNC(PyObject *) PyDescr_NewGetSet(PyTypeObject *,
|
|
struct PyGetSetDef *);
|
|
#ifndef Py_LIMITED_API
|
|
PyAPI_FUNC(PyObject *) PyDescr_NewWrapper(PyTypeObject *,
|
|
struct wrapperbase *, void *);
|
|
#define PyDescr_IsData(d) (Py_TYPE(d)->tp_descr_set != NULL)
|
|
#endif
|
|
|
|
PyAPI_FUNC(PyObject *) PyDictProxy_New(PyObject *);
|
|
PyAPI_FUNC(PyObject *) PyWrapper_New(PyObject *, PyObject *);
|
|
|
|
|
|
PyAPI_DATA(PyTypeObject) PyProperty_Type;
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* !Py_DESCROBJECT_H */
|
|
|