diff options
author | Victor Stinner <vstinner@python.org> | 2021-09-08 09:59:13 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-08 09:59:13 (GMT) |
commit | cb15afcccffc6c42cbfb7456ce8db89cd2f77512 (patch) | |
tree | 1a0e5510e261f441f1bd3b7027c5ab452967288e /Include | |
parent | 4dc4300c686f543d504ab6fa9fe600eaf11bb695 (diff) | |
download | cpython-cb15afcccffc6c42cbfb7456ce8db89cd2f77512.zip cpython-cb15afcccffc6c42cbfb7456ce8db89cd2f77512.tar.gz cpython-cb15afcccffc6c42cbfb7456ce8db89cd2f77512.tar.bz2 |
bpo-39573: Py_TYPE becomes a static inline function (GH-28128)
Convert the Py_TYPE() and Py_SIZE() macros to static inline
functions. The Py_SET_TYPE() and Py_SET_SIZE() functions must now be
used to set an object type and size.
Diffstat (limited to 'Include')
-rw-r--r-- | Include/object.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/Include/object.h b/Include/object.h index fb8a63f..490cbff 100644 --- a/Include/object.h +++ b/Include/object.h @@ -134,10 +134,16 @@ static inline Py_ssize_t _Py_REFCNT(const PyObject *ob) { // bpo-39573: The Py_SET_TYPE() function must be used to set an object type. -#define Py_TYPE(ob) (_PyObject_CAST(ob)->ob_type) +static inline PyTypeObject* _Py_TYPE(const PyObject *ob) { + return ob->ob_type; +} +#define Py_TYPE(ob) _Py_TYPE(_PyObject_CAST_CONST(ob)) // bpo-39573: The Py_SET_SIZE() function must be used to set an object size. -#define Py_SIZE(ob) (_PyVarObject_CAST(ob)->ob_size) +static inline Py_ssize_t _Py_SIZE(const PyVarObject *ob) { + return ob->ob_size; +} +#define Py_SIZE(ob) _Py_SIZE(_PyVarObject_CAST_CONST(ob)) static inline int _Py_IS_TYPE(const PyObject *ob, const PyTypeObject *type) { |