diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2016-08-24 22:29:32 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2016-08-24 22:29:32 (GMT) |
commit | 577e1f8cb41b76ea763910a47abf42a1952ddec3 (patch) | |
tree | c813887a0af4c5b7312b2e835677546584c067ea /Include | |
parent | 53868aaabb154c11bf666b31662bb4ae8bc6ec79 (diff) | |
download | cpython-577e1f8cb41b76ea763910a47abf42a1952ddec3.zip cpython-577e1f8cb41b76ea763910a47abf42a1952ddec3.tar.gz cpython-577e1f8cb41b76ea763910a47abf42a1952ddec3.tar.bz2 |
Add _PyObject_FastCallKeywords()
Issue #27830: Similar to _PyObject_FastCallDict(), but keyword arguments are
also passed in the same C array than positional arguments, rather than being
passed as a Python dict.
Diffstat (limited to 'Include')
-rw-r--r-- | Include/abstract.h | 17 | ||||
-rw-r--r-- | Include/funcobject.h | 6 |
2 files changed, 23 insertions, 0 deletions
diff --git a/Include/abstract.h b/Include/abstract.h index 5820864..474d746 100644 --- a/Include/abstract.h +++ b/Include/abstract.h @@ -292,6 +292,23 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/ #define _PyObject_CallArg1(func, arg) \ _PyObject_FastCall((func), &(arg), 1) + /* Call the callable object func with the "fast call" calling convention: + args is a C array for positional arguments followed by (key, value) + pairs for keyword arguments. + + nargs is the number of positional parameters at the beginning of stack. + nkwargs is the number of (key, value) pairs at the end of stack. + + If nargs and nkwargs are equal to zero, stack can be NULL. + + Return the result on success. Raise an exception and return NULL on + error. */ + PyAPI_FUNC(PyObject *) _PyObject_FastCallKeywords( + PyObject *func, + PyObject **stack, + Py_ssize_t nargs, + Py_ssize_t nkwargs); + PyAPI_FUNC(PyObject *) _Py_CheckFunctionResult(PyObject *func, PyObject *result, const char *where); diff --git a/Include/funcobject.h b/Include/funcobject.h index 6b89c86..5aff632 100644 --- a/Include/funcobject.h +++ b/Include/funcobject.h @@ -64,6 +64,12 @@ PyAPI_FUNC(PyObject *) _PyFunction_FastCallDict( PyObject **args, Py_ssize_t nargs, PyObject *kwargs); + +PyAPI_FUNC(PyObject *) _PyFunction_FastCallKeywords( + PyObject *func, + PyObject **stack, + Py_ssize_t nargs, + Py_ssize_t nkwargs); #endif /* Macros for direct access to these values. Type checks are *not* |