summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2021-09-08 09:59:13 (GMT)
committerGitHub <noreply@github.com>2021-09-08 09:59:13 (GMT)
commitcb15afcccffc6c42cbfb7456ce8db89cd2f77512 (patch)
tree1a0e5510e261f441f1bd3b7027c5ab452967288e /Include
parent4dc4300c686f543d504ab6fa9fe600eaf11bb695 (diff)
downloadcpython-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.h10
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) {