]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
gh-89653: PEP 670: Convert macros to functions (#99843)
authorVictor Stinner <vstinner@python.org>
Mon, 28 Nov 2022 15:40:08 +0000 (16:40 +0100)
committerGitHub <noreply@github.com>
Mon, 28 Nov 2022 15:40:08 +0000 (16:40 +0100)
commit02f72b8b938e301bbaaf0142547014e074bd564c
tree1ffd7f82d70652c6f480a67fe70aa8ae248fae18
parent53eef27133c1da395b3b4d7ce0ab1d5b743ffb41
gh-89653: PEP 670: Convert macros to functions (#99843)

Convert macros to static inline functions to avoid macro pitfalls,
like duplication of side effects:

* DK_ENTRIES()
* DK_UNICODE_ENTRIES()
* PyCode_GetNumFree()
* PyFloat_AS_DOUBLE()
* PyInstanceMethod_GET_FUNCTION()
* PyMemoryView_GET_BASE()
* PyMemoryView_GET_BUFFER()
* PyMethod_GET_FUNCTION()
* PyMethod_GET_SELF()
* PySet_GET_SIZE()
* _PyHeapType_GET_MEMBERS()

Changes:

* PyCode_GetNumFree() casts PyCode_GetNumFree.co_nfreevars from int
  to Py_ssize_t to be future proof, and because Py_ssize_t is
  commonly used in the C API.
* PyCode_GetNumFree() doesn't cast its argument: the replaced macro
  already required the exact type PyCodeObject*.
* Add assertions in some functions using "CAST" macros to check
  the arguments type when Python is built with assertions
  (debug build).
* Remove an outdated comment in unicodeobject.h.
Include/cpython/classobject.h
Include/cpython/code.h
Include/cpython/floatobject.h
Include/cpython/memoryobject.h
Include/cpython/setobject.h
Include/cpython/unicodeobject.h
Include/internal/pycore_dict.h
Include/internal/pycore_object.h