bpo-35134: Add Include/cpython/descrobject.h (GH-30923) · python/cpython@d4a85f1 (original) (raw)
`@@ -16,93 +16,33 @@ typedef struct PyGetSetDef {
`
16
16
`void *closure;
`
17
17
`} PyGetSetDef;
`
18
18
``
19
``
`-
#ifndef Py_LIMITED_API
`
20
``
`-
typedef PyObject *(*wrapperfunc)(PyObject *self, PyObject *args,
`
21
``
`-
void *wrapped);
`
22
``
-
23
``
`-
typedef PyObject *(*wrapperfunc_kwds)(PyObject *self, PyObject *args,
`
24
``
`-
void *wrapped, PyObject *kwds);
`
25
``
-
26
``
`-
struct wrapperbase {
`
27
``
`-
const char *name;
`
28
``
`-
int offset;
`
29
``
`-
void *function;
`
30
``
`-
wrapperfunc wrapper;
`
31
``
`-
const char *doc;
`
32
``
`-
int flags;
`
33
``
`-
PyObject *name_strobj;
`
34
``
`-
};
`
35
``
-
36
``
`-
/* Flags for above struct */
`
37
``
`-
#define PyWrapperFlag_KEYWORDS 1 /* wrapper function takes keyword args */
`
38
``
-
39
``
`-
/* Various kinds of descriptor objects */
`
40
``
-
41
``
`-
typedef struct {
`
42
``
`-
PyObject_HEAD
`
43
``
`-
PyTypeObject *d_type;
`
44
``
`-
PyObject *d_name;
`
45
``
`-
PyObject *d_qualname;
`
46
``
`-
} PyDescrObject;
`
47
``
-
48
``
`-
#define PyDescr_COMMON PyDescrObject d_common
`
49
``
-
50
``
`-
#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
`
51
``
`-
#define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
`
52
``
-
53
``
`-
typedef struct {
`
54
``
`-
PyDescr_COMMON;
`
55
``
`-
PyMethodDef *d_method;
`
56
``
`-
vectorcallfunc vectorcall;
`
57
``
`-
} PyMethodDescrObject;
`
58
``
-
59
``
`-
typedef struct {
`
60
``
`-
PyDescr_COMMON;
`
61
``
`-
struct PyMemberDef *d_member;
`
62
``
`-
} PyMemberDescrObject;
`
63
``
-
64
``
`-
typedef struct {
`
65
``
`-
PyDescr_COMMON;
`
66
``
`-
PyGetSetDef *d_getset;
`
67
``
`-
} PyGetSetDescrObject;
`
68
``
-
69
``
`-
typedef struct {
`
70
``
`-
PyDescr_COMMON;
`
71
``
`-
struct wrapperbase *d_base;
`
72
``
`-
void d_wrapped; / This can be any function pointer */
`
73
``
`-
} PyWrapperDescrObject;
`
74
``
`-
#endif /* Py_LIMITED_API */
`
75
``
-
76
19
`PyAPI_DATA(PyTypeObject) PyClassMethodDescr_Type;
`
77
20
`PyAPI_DATA(PyTypeObject) PyGetSetDescr_Type;
`
78
21
`PyAPI_DATA(PyTypeObject) PyMemberDescr_Type;
`
79
22
`PyAPI_DATA(PyTypeObject) PyMethodDescr_Type;
`
80
23
`PyAPI_DATA(PyTypeObject) PyWrapperDescr_Type;
`
81
24
`PyAPI_DATA(PyTypeObject) PyDictProxy_Type;
`
82
``
`-
#ifndef Py_LIMITED_API
`
83
``
`-
PyAPI_DATA(PyTypeObject) _PyMethodWrapper_Type;
`
84
``
`-
#endif /* Py_LIMITED_API */
`
``
25
`+
PyAPI_DATA(PyTypeObject) PyProperty_Type;
`
``
26
`+
// Forward declaration for following prototype
`
``
27
`+
struct PyMemberDef;
`
85
28
``
86
29
`PyAPI_FUNC(PyObject *) PyDescr_NewMethod(PyTypeObject *, PyMethodDef *);
`
87
30
`PyAPI_FUNC(PyObject *) PyDescr_NewClassMethod(PyTypeObject *, PyMethodDef *);
`
88
``
`-
struct PyMemberDef; /* forward declaration for following prototype */
`
89
31
`PyAPI_FUNC(PyObject *) PyDescr_NewMember(PyTypeObject *,
`
90
32
`struct PyMemberDef *);
`
91
33
`PyAPI_FUNC(PyObject *) PyDescr_NewGetSet(PyTypeObject *,
`
92
34
`struct PyGetSetDef *);
`
93
``
`-
#ifndef Py_LIMITED_API
`
94
``
`-
PyAPI_FUNC(PyObject *) PyDescr_NewWrapper(PyTypeObject *,
`
95
``
`-
struct wrapperbase *, void *);
`
96
``
`-
PyAPI_FUNC(int) PyDescr_IsData(PyObject *);
`
97
``
`-
#endif
`
98
35
``
99
36
`PyAPI_FUNC(PyObject *) PyDictProxy_New(PyObject *);
`
100
37
`PyAPI_FUNC(PyObject *) PyWrapper_New(PyObject *, PyObject *);
`
101
38
``
``
39
`+
#ifndef Py_LIMITED_API
`
``
40
`+
define Py_CPYTHON_DESCROBJECT_H
`
``
41
`+
include "cpython/descrobject.h"
`
``
42
`+
undef Py_CPYTHON_DESCROBJECT_H
`
``
43
`+
#endif
`
102
44
``
103
``
`-
PyAPI_DATA(PyTypeObject) PyProperty_Type;
`
104
45
`#ifdef __cplusplus
`
105
46
`}
`
106
47
`#endif
`
107
48
`#endif /* !Py_DESCROBJECT_H */
`
108
``
-