summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2022-05-11 22:49:03 (GMT)
committerGitHub <noreply@github.com>2022-05-11 22:49:03 (GMT)
commit6de78ef96afbaa127472bb9dc0a4e41e44555d00 (patch)
treef858a9a2dd32a8511f4d5ad41c9be4fed7afa712
parentd492f0ab2add26d89474b002a9a5a2da306222c5 (diff)
downloadcpython-6de78ef96afbaa127472bb9dc0a4e41e44555d00.zip
cpython-6de78ef96afbaa127472bb9dc0a4e41e44555d00.tar.gz
cpython-6de78ef96afbaa127472bb9dc0a4e41e44555d00.tar.bz2
gh-89653: PEP 670: Use PyObject* type for parameters (#92694)
Use the PyObject* type for parameters of static inline functions: * Py_SIZE(): same parameter type than PyObject_Size() * PyList_GET_SIZE(), PyList_SET_ITEM(): same parameter type than PyList_Size() and PyList_SetItem() * PyTuple_GET_SIZE(), PyTuple_SET_ITEM(): same parameter type than PyTuple_Size() and PyTuple_SetItem().
-rw-r--r--Include/cpython/listobject.h14
-rw-r--r--Include/cpython/tupleobject.h14
-rw-r--r--Include/object.h7
3 files changed, 20 insertions, 15 deletions
diff --git a/Include/cpython/listobject.h b/Include/cpython/listobject.h
index 4989ccc..1add821 100644
--- a/Include/cpython/listobject.h
+++ b/Include/cpython/listobject.h
@@ -30,20 +30,22 @@ PyAPI_FUNC(void) _PyList_DebugMallocStats(FILE *out);
// Macros and static inline functions, trading safety for speed
-static inline Py_ssize_t PyList_GET_SIZE(PyListObject *op) {
- return Py_SIZE(op);
+static inline Py_ssize_t PyList_GET_SIZE(PyObject *op) {
+ PyListObject *list = _PyList_CAST(op);
+ return Py_SIZE(list);
}
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000
-# define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyList_CAST(op))
+# define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
#endif
#define PyList_GET_ITEM(op, index) (_PyList_CAST(op)->ob_item[index])
static inline void
-PyList_SET_ITEM(PyListObject *op, Py_ssize_t index, PyObject *value) {
- op->ob_item[index] = value;
+PyList_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
+ PyListObject *list = _PyList_CAST(op);
+ list->ob_item[index] = value;
}
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000
#define PyList_SET_ITEM(op, index, value) \
- PyList_SET_ITEM(_PyList_CAST(op), index, _PyObject_CAST(value))
+ PyList_SET_ITEM(_PyObject_CAST(op), index, _PyObject_CAST(value))
#endif
diff --git a/Include/cpython/tupleobject.h b/Include/cpython/tupleobject.h
index a41cee1..3d9c1af 100644
--- a/Include/cpython/tupleobject.h
+++ b/Include/cpython/tupleobject.h
@@ -19,23 +19,25 @@ PyAPI_FUNC(void) _PyTuple_MaybeUntrack(PyObject *);
// Macros and static inline functions, trading safety for speed
-static inline Py_ssize_t PyTuple_GET_SIZE(PyTupleObject *op) {
- return Py_SIZE(op);
+static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
+ PyTupleObject *tuple = _PyTuple_CAST(op);
+ return Py_SIZE(tuple);
}
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000
-# define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyTuple_CAST(op))
+# define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
#endif
#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[index])
/* Function *only* to be used to fill in brand new tuples */
static inline void
-PyTuple_SET_ITEM(PyTupleObject *op, Py_ssize_t index, PyObject *value) {
- op->ob_item[index] = value;
+PyTuple_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
+ PyTupleObject *tuple = _PyTuple_CAST(op);
+ tuple->ob_item[index] = value;
}
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000
#define PyTuple_SET_ITEM(op, index, value) \
- PyTuple_SET_ITEM(_PyTuple_CAST(op), index, _PyObject_CAST(value))
+ PyTuple_SET_ITEM(_PyObject_CAST(op), index, _PyObject_CAST(value))
#endif
PyAPI_FUNC(void) _PyTuple_DebugMallocStats(FILE *out);
diff --git a/Include/object.h b/Include/object.h
index fac8892..f2af428 100644
--- a/Include/object.h
+++ b/Include/object.h
@@ -137,11 +137,12 @@ static inline PyTypeObject* Py_TYPE(PyObject *ob) {
#endif
// bpo-39573: The Py_SET_SIZE() function must be used to set an object size.
-static inline Py_ssize_t Py_SIZE(PyVarObject *ob) {
- return ob->ob_size;
+static inline Py_ssize_t Py_SIZE(PyObject *ob) {
+ PyVarObject *var_ob = _PyVarObject_CAST(ob);
+ return var_ob->ob_size;
}
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000
-# define Py_SIZE(ob) Py_SIZE(_PyVarObject_CAST(ob))
+# define Py_SIZE(ob) Py_SIZE(_PyObject_CAST(ob))
#endif