@@ -61,6 +61,9 @@ whose size is determined when the object is allocated.
61
61
#error Py_LIMITED_API is incompatible with Py_DEBUG, Py_TRACE_REFS, and Py_REF_DEBUG
62
62
#endif
63
63
64
+ /* PyTypeObject structure is defined in cpython/object.h.
65
+ In Py_LIMITED_API, PyTypeObject is an opaque structure. */
66
+ typedef struct _typeobject PyTypeObject ;
64
67
65
68
#ifdef Py_TRACE_REFS
66
69
/* Define pointers to support a doubly-linked list of all live heap objects. */
@@ -102,7 +105,7 @@ whose size is determined when the object is allocated.
102
105
typedef struct _object {
103
106
_PyObject_HEAD_EXTRA
104
107
Py_ssize_t ob_refcnt ;
105
- struct _typeobject * ob_type ;
108
+ PyTypeObject * ob_type ;
106
109
} PyObject ;
107
110
108
111
/* Cast argument to PyObject* type. */
@@ -165,15 +168,8 @@ typedef PyObject *(*iternextfunc) (PyObject *);
165
168
typedef PyObject * (* descrgetfunc ) (PyObject * , PyObject * , PyObject * );
166
169
typedef int (* descrsetfunc ) (PyObject * , PyObject * , PyObject * );
167
170
typedef int (* initproc )(PyObject * , PyObject * , PyObject * );
168
- typedef PyObject * (* newfunc )(struct _typeobject * , PyObject * , PyObject * );
169
- typedef PyObject * (* allocfunc )(struct _typeobject * , Py_ssize_t );
170
-
171
- #ifdef Py_LIMITED_API
172
- /* In Py_LIMITED_API, PyTypeObject is an opaque structure. */
173
- typedef struct _typeobject PyTypeObject ;
174
- #else
175
- /* PyTypeObject is defined in cpython/object.h */
176
- #endif
171
+ typedef PyObject * (* newfunc )(PyTypeObject * , PyObject * , PyObject * );
172
+ typedef PyObject * (* allocfunc )(PyTypeObject * , Py_ssize_t );
177
173
178
174
typedef struct {
179
175
int slot ; /* slot id, see below */
@@ -193,26 +189,26 @@ PyAPI_FUNC(PyObject*) PyType_FromSpec(PyType_Spec*);
193
189
PyAPI_FUNC (PyObject * ) PyType_FromSpecWithBases (PyType_Spec * , PyObject * );
194
190
#endif
195
191
#if !defined(Py_LIMITED_API ) || Py_LIMITED_API + 0 >= 0x03040000
196
- PyAPI_FUNC (void * ) PyType_GetSlot (struct _typeobject * , int );
192
+ PyAPI_FUNC (void * ) PyType_GetSlot (PyTypeObject * , int );
197
193
#endif
198
194
199
195
/* Generic type check */
200
- PyAPI_FUNC (int ) PyType_IsSubtype (struct _typeobject * , struct _typeobject * );
196
+ PyAPI_FUNC (int ) PyType_IsSubtype (PyTypeObject * , PyTypeObject * );
201
197
#define PyObject_TypeCheck (ob , tp ) \
202
198
(Py_TYPE(ob) == (tp) || PyType_IsSubtype(Py_TYPE(ob), (tp)))
203
199
204
- PyAPI_DATA (struct _typeobject ) PyType_Type ; /* built-in 'type' */
205
- PyAPI_DATA (struct _typeobject ) PyBaseObject_Type ; /* built-in 'object' */
206
- PyAPI_DATA (struct _typeobject ) PySuper_Type ; /* built-in 'super' */
200
+ PyAPI_DATA (PyTypeObject ) PyType_Type ; /* built-in 'type' */
201
+ PyAPI_DATA (PyTypeObject ) PyBaseObject_Type ; /* built-in 'object' */
202
+ PyAPI_DATA (PyTypeObject ) PySuper_Type ; /* built-in 'super' */
207
203
208
- PyAPI_FUNC (unsigned long ) PyType_GetFlags (struct _typeobject * );
204
+ PyAPI_FUNC (unsigned long ) PyType_GetFlags (PyTypeObject * );
209
205
210
- PyAPI_FUNC (int ) PyType_Ready (struct _typeobject * );
211
- PyAPI_FUNC (PyObject * ) PyType_GenericAlloc (struct _typeobject * , Py_ssize_t );
212
- PyAPI_FUNC (PyObject * ) PyType_GenericNew (struct _typeobject * ,
206
+ PyAPI_FUNC (int ) PyType_Ready (PyTypeObject * );
207
+ PyAPI_FUNC (PyObject * ) PyType_GenericAlloc (PyTypeObject * , Py_ssize_t );
208
+ PyAPI_FUNC (PyObject * ) PyType_GenericNew (PyTypeObject * ,
213
209
PyObject * , PyObject * );
214
210
PyAPI_FUNC (unsigned int ) PyType_ClearCache (void );
215
- PyAPI_FUNC (void ) PyType_Modified (struct _typeobject * );
211
+ PyAPI_FUNC (void ) PyType_Modified (PyTypeObject * );
216
212
217
213
/* Generic operations on objects */
218
214
PyAPI_FUNC (PyObject * ) PyObject_Repr (PyObject * );
0 commit comments