mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
gh-65210: Add const qualifiers in PyArg_VaParseTupleAndKeywords() (GH-105958)
Change the declaration of the keywords parameter in functions PyArg_ParseTupleAndKeywords() and PyArg_VaParseTupleAndKeywords() from `char **` to `char * const *` in C and `const char * const *` in C++. It makes these functions compatible with argument of type `const char * const *`, `const char **` or `char * const *` in C++ and `char * const *` in C without explicit type cast. Co-authored-by: C.A.M. Gerlach <CAM.Gerlach@Gerlach.CAM>
This commit is contained in:
parent
cda737924f
commit
da6760bdf5
7 changed files with 57 additions and 13 deletions
|
@ -413,7 +413,7 @@ API Functions
|
|||
than a variable number of arguments.
|
||||
|
||||
|
||||
.. c:function:: int PyArg_ParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], ...)
|
||||
.. c:function:: int PyArg_ParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char * const *keywords, ...)
|
||||
|
||||
Parse the parameters of a function that takes both positional and keyword
|
||||
parameters into local variables.
|
||||
|
@ -424,15 +424,24 @@ API Functions
|
|||
Returns true on success; on failure, it returns false and raises the
|
||||
appropriate exception.
|
||||
|
||||
.. note::
|
||||
|
||||
The *keywords* parameter declaration is :c:expr:`char * const *` in C and
|
||||
:c:expr:`const char * const *` in C++.
|
||||
This can be overridden with the :c:macro:`PY_CXX_CONST` macro.
|
||||
|
||||
.. versionchanged:: 3.6
|
||||
Added support for :ref:`positional-only parameters
|
||||
<positional-only_parameter>`.
|
||||
|
||||
.. versionchanged:: 3.13
|
||||
The *keywords* parameter has now type :c:expr:`char * const *` in C and
|
||||
:c:expr:`const char * const *` in C++, instead of :c:expr:`char **`.
|
||||
Added support for non-ASCII keyword parameter names.
|
||||
|
||||
|
||||
.. c:function:: int PyArg_VaParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], va_list vargs)
|
||||
|
||||
.. c:function:: int PyArg_VaParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char * const *keywords, va_list vargs)
|
||||
|
||||
Identical to :c:func:`PyArg_ParseTupleAndKeywords`, except that it accepts a
|
||||
va_list rather than a variable number of arguments.
|
||||
|
@ -505,6 +514,19 @@ API Functions
|
|||
|
||||
PyArg_ParseTuple(args, "O|O:ref", &object, &callback)
|
||||
|
||||
.. c:macro:: PY_CXX_CONST
|
||||
|
||||
The value to be inserted, if any, before :c:expr:`char * const *`
|
||||
in the *keywords* parameter declaration of
|
||||
:c:func:`PyArg_ParseTupleAndKeywords` and
|
||||
:c:func:`PyArg_VaParseTupleAndKeywords`.
|
||||
Default empty for C and ``const`` for C++
|
||||
(:c:expr:`const char * const *`).
|
||||
To override, define it to the desired value before including
|
||||
:file:`Python.h`.
|
||||
|
||||
.. versionadded:: 3.13
|
||||
|
||||
|
||||
---------------
|
||||
Building values
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue