mirror of
https://github.com/python/cpython.git
synced 2025-09-01 06:28:36 +00:00
Add PyArg_VaParseTupleAndKeywords(). Document this function and
PyArg_VaParse(). Closes patch #550732. Thanks Greg Chapman.
This commit is contained in:
parent
9a2a1cb031
commit
711e7d97e4
4 changed files with 55 additions and 1 deletions
|
@ -12,6 +12,9 @@ int PyArg_VaParse(PyObject *, char *, va_list);
|
|||
|
||||
int PyArg_ParseTupleAndKeywords(PyObject *, PyObject *,
|
||||
char *, char **, ...);
|
||||
int PyArg_VaParseTupleAndKeywords(PyObject *, PyObject *,
|
||||
char *, char **, va_list);
|
||||
|
||||
|
||||
/* Forward */
|
||||
static int vgetargs1(PyObject *, char *, va_list *, int);
|
||||
|
@ -1153,6 +1156,39 @@ PyArg_ParseTupleAndKeywords(PyObject *args,
|
|||
}
|
||||
|
||||
|
||||
int
|
||||
PyArg_VaParseTupleAndKeywords(PyObject *args,
|
||||
PyObject *keywords,
|
||||
char *format,
|
||||
char **kwlist, va_list va)
|
||||
{
|
||||
int retval;
|
||||
va_list lva;
|
||||
|
||||
if ((args == NULL || !PyTuple_Check(args)) ||
|
||||
(keywords != NULL && !PyDict_Check(keywords)) ||
|
||||
format == NULL ||
|
||||
kwlist == NULL)
|
||||
{
|
||||
PyErr_BadInternalCall();
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef VA_LIST_IS_ARRAY
|
||||
memcpy(lva, va, sizeof(va_list));
|
||||
#else
|
||||
#ifdef __va_copy
|
||||
__va_copy(lva, va);
|
||||
#else
|
||||
lva = va;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
retval = vgetargskeywords(args, keywords, format, kwlist, &lva);
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
vgetargskeywords(PyObject *args, PyObject *keywords, char *format,
|
||||
char **kwlist, va_list *p_va)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue