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}
|
\begin{cfuncdesc}{PyObject*}{PyImport_AddModule}{char *name}
|
||||||
Return the module object corresponding to a module name. The
|
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,
|
First check the modules dictionary if there's one there, and if not,
|
||||||
create a new one and insert it in the modules dictionary.
|
create a new one and insert it in the modules dictionary.
|
||||||
Return \NULL{} with an exception set on failure.
|
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.
|
failure, it returns false and raises the appropriate exception.
|
||||||
\end{cfuncdesc}
|
\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,
|
\begin{cfuncdesc}{int}{PyArg_ParseTupleAndKeywords}{PyObject *args,
|
||||||
PyObject *kw, char *format, char *keywords[],
|
PyObject *kw, char *format, char *keywords[],
|
||||||
\moreargs}
|
\moreargs}
|
||||||
|
@ -683,6 +689,13 @@ return false and raise an appropriate exception.
|
||||||
on failure, it returns false and raises the appropriate exception.
|
on failure, it returns false and raises the appropriate exception.
|
||||||
\end{cfuncdesc}
|
\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,
|
\begin{cfuncdesc}{int}{PyArg_Parse}{PyObject *args, char *format,
|
||||||
\moreargs}
|
\moreargs}
|
||||||
Function used to deconstruct the argument lists of ``old-style''
|
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(PyObject *) Py_BuildValue(char *, ...);
|
||||||
|
|
||||||
PyAPI_FUNC(int) PyArg_VaParse(PyObject *, char *, va_list);
|
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(PyObject *) Py_VaBuildValue(char *, va_list);
|
||||||
|
|
||||||
PyAPI_FUNC(int) PyModule_AddObject(PyObject *, char *, PyObject *);
|
PyAPI_FUNC(int) PyModule_AddObject(PyObject *, char *, PyObject *);
|
||||||
|
|
|
@ -12,6 +12,9 @@ What's New in Python 2.4 alpha 2?
|
||||||
Core and builtins
|
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()
|
- Allow string and unicode return types from .encode()/.decode()
|
||||||
methods on string and unicode objects. Added unicode.decode()
|
methods on string and unicode objects. Added unicode.decode()
|
||||||
which was missing for no apparent reason.
|
which was missing for no apparent reason.
|
||||||
|
|
|
@ -12,6 +12,9 @@ int PyArg_VaParse(PyObject *, char *, va_list);
|
||||||
|
|
||||||
int PyArg_ParseTupleAndKeywords(PyObject *, PyObject *,
|
int PyArg_ParseTupleAndKeywords(PyObject *, PyObject *,
|
||||||
char *, char **, ...);
|
char *, char **, ...);
|
||||||
|
int PyArg_VaParseTupleAndKeywords(PyObject *, PyObject *,
|
||||||
|
char *, char **, va_list);
|
||||||
|
|
||||||
|
|
||||||
/* Forward */
|
/* Forward */
|
||||||
static int vgetargs1(PyObject *, char *, va_list *, int);
|
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
|
static int
|
||||||
vgetargskeywords(PyObject *args, PyObject *keywords, char *format,
|
vgetargskeywords(PyObject *args, PyObject *keywords, char *format,
|
||||||
char **kwlist, va_list *p_va)
|
char **kwlist, va_list *p_va)
|
||||||
|
|
Loading…
Reference in New Issue