123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- /* 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 {
- const char *name;
- getter get;
- setter set;
- const 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 {
- const char *name;
- int offset;
- void *function;
- wrapperfunc wrapper;
- const 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;
- vectorcallfunc vectorcall;
- } 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 */
|