diff Python/getargs.c @ 32606:cc1f74d19fcb legacy-trunk

Add PyArg_VaParseTupleAndKeywords(). Document this function and PyArg_VaParse(). Closes patch #550732. Thanks Greg Chapman.
author Brett Cannon <bcannon@gmail.com>
date Sat, 10 Jul 2004 22:20:32 +0000
parents 6c4a04ce965c
children 8ca8febc0a0d
line wrap: on
line diff
--- a/Python/getargs.c	Sat Jul 10 22:07:02 2004 +0000
+++ b/Python/getargs.c	Sat Jul 10 22:20:32 2004 +0000
@@ -12,6 +12,9 @@
 
 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 @@
 }
 
 
+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)