summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Lester <andy@petdance.com>2020-03-06 08:03:58 (GMT)
committerGitHub <noreply@github.com>2020-03-06 08:03:58 (GMT)
commit8767ce92d24d3687405848442e6c67cf0af1c657 (patch)
treefe11e8ffa447ba7ac65d31cf48109422f5c45794
parent8bae21962bab2fac7630982abd73676b89930902 (diff)
downloadcpython-8767ce92d24d3687405848442e6c67cf0af1c657.zip
cpython-8767ce92d24d3687405848442e6c67cf0af1c657.tar.gz
cpython-8767ce92d24d3687405848442e6c67cf0af1c657.tar.bz2
bpo-39573: Make Py_IS_TYPE() take constant parameters (GH-18799)
Add _PyObject_CAST_CONST() macro: cast a pointer to (const PyObject *).
-rw-r--r--Include/object.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/Include/object.h b/Include/object.h
index 3d0da52..6b6c66a 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;