Skip to content

Commit

Permalink
bpo-39573: Make Py_IS_TYPE() take constant parameters (GH-18799)
Browse files Browse the repository at this point in the history
Add _PyObject_CAST_CONST() macro: cast a pointer to (const PyObject *).
  • Loading branch information
petdance authored Mar 6, 2020
1 parent 8bae219 commit 8767ce9
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions Include/object.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down

0 comments on commit 8767ce9

Please sign in to comment.