Add PyArg_VaParseTupleAndKeywords(). Document this function and
PyArg_VaParse(). Closes patch #550732. Thanks Greg Chapman.
This commit is contained in:
parent
9a2a1cb031
commit
711e7d97e4
|
@ -145,7 +145,7 @@ values from C values.
|
|||
|
||||
\begin{cfuncdesc}{PyObject*}{PyImport_AddModule}{char *name}
|
||||
Return the module object corresponding to a module name. The
|
||||
\var{name} argument may be of the form \code{package.module}).
|
||||
\var{name} argument may be of the form \code{package.module}.
|
||||
First check the modules dictionary if there's one there, and if not,
|
||||
create a new one and insert it in the modules dictionary.
|
||||
Return \NULL{} with an exception set on failure.
|
||||
|
@ -675,6 +675,12 @@ return false and raise an appropriate exception.
|
|||
failure, it returns false and raises the appropriate exception.
|
||||
\end{cfuncdesc}
|
||||
|
||||
\begin{cfuncdesc}{int}{PyArg_VaParse}{PyObject *args, char *format,
|
||||
va_list vargs}
|
||||
Identical to \cfunction{PyArg_ParseTuple()}, except that it accepts a
|
||||
va_list rather than a variable number of arguments.
|
||||
\end{cfuncdesc}
|
||||
|
||||
\begin{cfuncdesc}{int}{PyArg_ParseTupleAndKeywords}{PyObject *args,
|
||||
PyObject *kw, char *format, char *keywords[],
|
||||
\moreargs}
|
||||
|
@ -683,6 +689,13 @@ return false and raise an appropriate exception.
|
|||
on failure, it returns false and raises the appropriate exception.
|
||||
\end{cfuncdesc}
|
||||
|
||||
\begin{cfuncdesc}{int}{PyArg_VaParseTupleAndKeywords}{PyObject *args,
|
||||
PyObject *kw, char *format, char *keywords[],
|
||||
va_list vargs}
|
||||
Identical to \cfunction{PyArg_ParseTupleAndKeywords()}, except that it
|
||||
accepts a va_list rather than a variable number of arguments.
|
||||
\end{cfuncdesc}
|
||||
|
||||
\begin{cfuncdesc}{int}{PyArg_Parse}{PyObject *args, char *format,
|
||||
\moreargs}
|
||||
Function used to deconstruct the argument lists of ``old-style''
|
||||
|
|
|
@ -17,6 +17,8 @@ PyAPI_FUNC(int) PyArg_UnpackTuple(PyObject *, char *, int, int, ...);
|
|||
PyAPI_FUNC(PyObject *) Py_BuildValue(char *, ...);
|
||||
|
||||
PyAPI_FUNC(int) PyArg_VaParse(PyObject *, char *, va_list);
|
||||
PyAPI_FUNC(int) PyArg_VaParseTupleAndKeywords(PyObject *, PyObject *,
|
||||
char *, char **, va_list);
|
||||
PyAPI_FUNC(PyObject *) Py_VaBuildValue(char *, va_list);
|
||||
|
||||
PyAPI_FUNC(int) PyModule_AddObject(PyObject *, char *, PyObject *);
|
||||
|
|
|
@ -12,6 +12,9 @@ What's New in Python 2.4 alpha 2?
|
|||
Core and builtins
|
||||
-----------------
|
||||
|
||||
- Patch #550732: Add PyArg_VaParseTupleAndKeywords(). Analogous to
|
||||
PyArg_VaParse(). Both are now documented. Thanks Greg Chapman.
|
||||
|
||||
- Allow string and unicode return types from .encode()/.decode()
|
||||
methods on string and unicode objects. Added unicode.decode()
|
||||
which was missing for no apparent reason.
|
||||
|
|
|
@ -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…
Reference in New Issue