mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
bpo-39573: Convert Py_REFCNT and Py_SIZE to functions (GH-20429)
Convert Py_REFCNT() and Py_SIZE() macros to static inline functions. They cannot be used as l-value anymore: use Py_SET_REFCNT() and Py_SET_SIZE() to set an object reference count and size. Replace &Py_SIZE(self) with &((PyVarObject*)self)->ob_size in arraymodule.c. This change is backward incompatible on purpose, to prepare the C API for an opaque PyObject structure.
This commit is contained in:
parent
20941de0dd
commit
fe2978b3b9
6 changed files with 44 additions and 14 deletions
|
@ -88,13 +88,13 @@ the definition of all other Python objects.
|
|||
.. versionadded:: 3.9
|
||||
|
||||
|
||||
.. c:macro:: Py_REFCNT(o)
|
||||
.. c:function:: Py_ssize_t Py_REFCNT(const PyObject *o)
|
||||
|
||||
This macro is used to access the :attr:`ob_refcnt` member of a Python
|
||||
object.
|
||||
It expands to::
|
||||
Get the reference count of the Python object *o*.
|
||||
|
||||
(((PyObject*)(o))->ob_refcnt)
|
||||
.. versionchanged:: 3.10
|
||||
:c:func:`Py_REFCNT()` is changed to the inline static function.
|
||||
Use :c:func:`Py_SET_REFCNT()` to set an object reference count.
|
||||
|
||||
|
||||
.. c:function:: void Py_SET_REFCNT(PyObject *o, Py_ssize_t refcnt)
|
||||
|
@ -104,12 +104,13 @@ the definition of all other Python objects.
|
|||
.. versionadded:: 3.9
|
||||
|
||||
|
||||
.. c:macro:: Py_SIZE(o)
|
||||
.. c:function:: Py_ssize_t Py_SIZE(const PyVarObject *o)
|
||||
|
||||
This macro is used to access the :attr:`ob_size` member of a Python object.
|
||||
It expands to::
|
||||
Get the size of the Python object *o*.
|
||||
|
||||
(((PyVarObject*)(o))->ob_size)
|
||||
.. versionchanged:: 3.10
|
||||
:c:func:`Py_SIZE()` is changed to the inline static function.
|
||||
Use :c:func:`Py_SET_SIZE()` to set an object size.
|
||||
|
||||
|
||||
.. c:function:: void Py_SET_SIZE(PyVarObject *o, Py_ssize_t size)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue