Skip to content

Commit

Permalink
bpo-43181: Convert PyObject_TypeCheck to static inline function (GH-2…
Browse files Browse the repository at this point in the history
  • Loading branch information
Erlend Egeberg Aasland committed Feb 15, 2021
1 parent fcbe0cb commit 4bb2a1e
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 4 deletions.
4 changes: 2 additions & 2 deletions Doc/c-api/object.rst
Original file line number Diff line number Diff line change
Expand Up @@ -297,8 +297,8 @@ Object Protocol
.. c:function:: int PyObject_TypeCheck(PyObject *o, PyTypeObject *type)
Return true if the object *o* is of type *type* or a subtype of *type*. Both
parameters must be non-``NULL``.
Return non-zero if the object *o* is of type *type* or a subtype of *type*, and
``0`` otherwise. Both parameters must be non-``NULL``.
.. c:function:: Py_ssize_t PyObject_Size(PyObject *o)
Expand Down
7 changes: 5 additions & 2 deletions Include/object.h
Original file line number Diff line number Diff line change
Expand Up @@ -235,8 +235,11 @@ PyAPI_FUNC(void *) PyType_GetModuleState(struct _typeobject *);

/* Generic type check */
PyAPI_FUNC(int) PyType_IsSubtype(PyTypeObject *, PyTypeObject *);
#define PyObject_TypeCheck(ob, tp) \
(Py_IS_TYPE(ob, tp) || PyType_IsSubtype(Py_TYPE(ob), (tp)))

static inline int _PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
}
#define PyObject_TypeCheck(ob, type) _PyObject_TypeCheck(_PyObject_CAST(ob), type)

PyAPI_DATA(PyTypeObject) PyType_Type; /* built-in 'type' */
PyAPI_DATA(PyTypeObject) PyBaseObject_Type; /* built-in 'object' */
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Convert :c:func:`PyObject_TypeCheck` macro to a static inline function. Patch by
Erlend E. Aasland.

0 comments on commit 4bb2a1e

Please sign in to comment.