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

``

-