mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +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
	
	 Brett Cannon
						Brett Cannon