mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 10:26:02 +00:00 
			
		
		
		
	Cleanup getargs.c
Factorize argument checks in: * vgetargskeywordsfast() * vgetargskeywordsfast_impl()
This commit is contained in:
		
							parent
							
								
									773dc6dd06
								
							
						
					
					
						commit
						80ab22fa2c
					
				
					 1 changed files with 17 additions and 49 deletions
				
			
		|  | @ -1453,14 +1453,6 @@ _PyArg_ParseTupleAndKeywordsFast(PyObject *args, PyObject *keywords, | ||||||
|     int retval; |     int retval; | ||||||
|     va_list va; |     va_list va; | ||||||
| 
 | 
 | ||||||
|     if ((args == NULL || !PyTuple_Check(args)) || |  | ||||||
|         (keywords != NULL && !PyDict_Check(keywords)) || |  | ||||||
|         parser == NULL) |  | ||||||
|     { |  | ||||||
|         PyErr_BadInternalCall(); |  | ||||||
|         return 0; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     va_start(va, parser); |     va_start(va, parser); | ||||||
|     retval = vgetargskeywordsfast(args, keywords, parser, &va, 0); |     retval = vgetargskeywordsfast(args, keywords, parser, &va, 0); | ||||||
|     va_end(va); |     va_end(va); | ||||||
|  | @ -1474,14 +1466,6 @@ _PyArg_ParseTupleAndKeywordsFast_SizeT(PyObject *args, PyObject *keywords, | ||||||
|     int retval; |     int retval; | ||||||
|     va_list va; |     va_list va; | ||||||
| 
 | 
 | ||||||
|     if ((args == NULL || !PyTuple_Check(args)) || |  | ||||||
|         (keywords != NULL && !PyDict_Check(keywords)) || |  | ||||||
|         parser == NULL) |  | ||||||
|     { |  | ||||||
|         PyErr_BadInternalCall(); |  | ||||||
|         return 0; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     va_start(va, parser); |     va_start(va, parser); | ||||||
|     retval = vgetargskeywordsfast(args, keywords, parser, &va, FLAG_SIZE_T); |     retval = vgetargskeywordsfast(args, keywords, parser, &va, FLAG_SIZE_T); | ||||||
|     va_end(va); |     va_end(va); | ||||||
|  | @ -1495,13 +1479,6 @@ _PyArg_ParseStack(PyObject **args, Py_ssize_t nargs, PyObject *kwnames, | ||||||
|     int retval; |     int retval; | ||||||
|     va_list va; |     va_list va; | ||||||
| 
 | 
 | ||||||
|     if ((kwnames != NULL && !PyTuple_Check(kwnames)) || |  | ||||||
|         parser == NULL) |  | ||||||
|     { |  | ||||||
|         PyErr_BadInternalCall(); |  | ||||||
|         return 0; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     va_start(va, parser); |     va_start(va, parser); | ||||||
|     retval = vgetargskeywordsfast_impl(args, nargs, NULL, kwnames, parser, &va, 0); |     retval = vgetargskeywordsfast_impl(args, nargs, NULL, kwnames, parser, &va, 0); | ||||||
|     va_end(va); |     va_end(va); | ||||||
|  | @ -1515,13 +1492,6 @@ _PyArg_ParseStack_SizeT(PyObject **args, Py_ssize_t nargs, PyObject *kwnames, | ||||||
|     int retval; |     int retval; | ||||||
|     va_list va; |     va_list va; | ||||||
| 
 | 
 | ||||||
|     if ((kwnames != NULL && !PyTuple_Check(kwnames)) || |  | ||||||
|         parser == NULL) |  | ||||||
|     { |  | ||||||
|         PyErr_BadInternalCall(); |  | ||||||
|         return 0; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     va_start(va, parser); |     va_start(va, parser); | ||||||
|     retval = vgetargskeywordsfast_impl(args, nargs, NULL, kwnames, parser, &va, FLAG_SIZE_T); |     retval = vgetargskeywordsfast_impl(args, nargs, NULL, kwnames, parser, &va, FLAG_SIZE_T); | ||||||
|     va_end(va); |     va_end(va); | ||||||
|  | @ -1536,14 +1506,6 @@ _PyArg_VaParseTupleAndKeywordsFast(PyObject *args, PyObject *keywords, | ||||||
|     int retval; |     int retval; | ||||||
|     va_list lva; |     va_list lva; | ||||||
| 
 | 
 | ||||||
|     if ((args == NULL || !PyTuple_Check(args)) || |  | ||||||
|         (keywords != NULL && !PyDict_Check(keywords)) || |  | ||||||
|         parser == NULL) |  | ||||||
|     { |  | ||||||
|         PyErr_BadInternalCall(); |  | ||||||
|         return 0; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     va_copy(lva, va); |     va_copy(lva, va); | ||||||
| 
 | 
 | ||||||
|     retval = vgetargskeywordsfast(args, keywords, parser, &lva, 0); |     retval = vgetargskeywordsfast(args, keywords, parser, &lva, 0); | ||||||
|  | @ -1558,14 +1520,6 @@ _PyArg_VaParseTupleAndKeywordsFast_SizeT(PyObject *args, PyObject *keywords, | ||||||
|     int retval; |     int retval; | ||||||
|     va_list lva; |     va_list lva; | ||||||
| 
 | 
 | ||||||
|     if ((args == NULL || !PyTuple_Check(args)) || |  | ||||||
|         (keywords != NULL && !PyDict_Check(keywords)) || |  | ||||||
|         parser == NULL) |  | ||||||
|     { |  | ||||||
|         PyErr_BadInternalCall(); |  | ||||||
|         return 0; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     va_copy(lva, va); |     va_copy(lva, va); | ||||||
| 
 | 
 | ||||||
|     retval = vgetargskeywordsfast(args, keywords, parser, &lva, FLAG_SIZE_T); |     retval = vgetargskeywordsfast(args, keywords, parser, &lva, FLAG_SIZE_T); | ||||||
|  | @ -2010,12 +1964,20 @@ vgetargskeywordsfast_impl(PyObject **args, Py_ssize_t nargs, | ||||||
|     freelist.entries_malloced = 0; |     freelist.entries_malloced = 0; | ||||||
| 
 | 
 | ||||||
|     assert(keywords == NULL || PyDict_Check(keywords)); |     assert(keywords == NULL || PyDict_Check(keywords)); | ||||||
|     assert(kwnames == NULL || PyTuple_Check(kwnames)); |  | ||||||
|     assert((keywords != NULL || kwnames != NULL) |     assert((keywords != NULL || kwnames != NULL) | ||||||
|            || (keywords == NULL && kwnames == NULL)); |            || (keywords == NULL && kwnames == NULL)); | ||||||
|     assert(parser != NULL); |  | ||||||
|     assert(p_va != NULL); |     assert(p_va != NULL); | ||||||
| 
 | 
 | ||||||
|  |     if (parser == NULL) { | ||||||
|  |         PyErr_BadInternalCall(); | ||||||
|  |         return 0; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if (kwnames != NULL && !PyTuple_Check(kwnames)) { | ||||||
|  |         PyErr_BadInternalCall(); | ||||||
|  |         return 0; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     if (!parser_init(parser)) { |     if (!parser_init(parser)) { | ||||||
|         return 0; |         return 0; | ||||||
|     } |     } | ||||||
|  | @ -2204,7 +2166,13 @@ vgetargskeywordsfast(PyObject *args, PyObject *keywords, | ||||||
|     PyObject **stack; |     PyObject **stack; | ||||||
|     Py_ssize_t nargs; |     Py_ssize_t nargs; | ||||||
| 
 | 
 | ||||||
|     assert(args != NULL && PyTuple_Check(args)); |     if (args == NULL | ||||||
|  |         || !PyTuple_Check(args) | ||||||
|  |         || (keywords != NULL && !PyDict_Check(keywords))) | ||||||
|  |     { | ||||||
|  |         PyErr_BadInternalCall(); | ||||||
|  |         return 0; | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     stack = &PyTuple_GET_ITEM(args, 0); |     stack = &PyTuple_GET_ITEM(args, 0); | ||||||
|     nargs = PyTuple_GET_SIZE(args); |     nargs = PyTuple_GET_SIZE(args); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Victor Stinner
						Victor Stinner