From: Andy Lester Date: Fri, 6 Mar 2020 08:03:58 +0000 (-0600) Subject: bpo-39573: Make Py_IS_TYPE() take constant parameters (GH-18799) X-Git-Tag: v3.9.0a5~166 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8767ce92d24d3687405848442e6c67cf0af1c657;p=thirdparty%2FPython%2Fcpython.git bpo-39573: Make Py_IS_TYPE() take constant parameters (GH-18799) Add _PyObject_CAST_CONST() macro: cast a pointer to (const PyObject *). --- diff --git a/Include/object.h b/Include/object.h index 3d0da52c2b6b..6b6c66a52a6b 100644 --- a/Include/object.h +++ b/Include/object.h @@ -110,6 +110,7 @@ typedef struct _object { /* Cast argument to PyObject* type. */ #define _PyObject_CAST(op) ((PyObject*)(op)) +#define _PyObject_CAST_CONST(op) ((const PyObject*)(op)) typedef struct { PyObject ob_base; @@ -123,10 +124,10 @@ typedef struct { #define Py_TYPE(ob) (_PyObject_CAST(ob)->ob_type) #define Py_SIZE(ob) (_PyVarObject_CAST(ob)->ob_size) -static inline int _Py_IS_TYPE(PyObject *ob, PyTypeObject *type) { +static inline int _Py_IS_TYPE(const PyObject *ob, const PyTypeObject *type) { return ob->ob_type == type; } -#define Py_IS_TYPE(ob, type) _Py_IS_TYPE(_PyObject_CAST(ob), type) +#define Py_IS_TYPE(ob, type) _Py_IS_TYPE(_PyObject_CAST_CONST(ob), type) static inline void _Py_SET_REFCNT(PyObject *ob, Py_ssize_t refcnt) { ob->ob_refcnt = refcnt;