12 for (
int i = 0, iur = 0; i < nArgs; ++i, ++iur) {
14 if (PyTuple_Check(item)) {
15 for (
int j = 0; j < PyTuple_GET_SIZE(item); ++j, ++iur) {
16 PyObject* subitem = PyTuple_GET_ITEM(item, j);
35 PyErr_Format(PyExc_NotImplementedError,
36 "no __setitem__ handler for return type (%s)",
49 PyErr_SetString(PyExc_TypeError,
"insufficient arguments to __setitem__");
59 Py_ssize_t realsize = 0;
60 for (Py_ssize_t i = 0; i < nArgs - 1; ++i) {
62 realsize += PyTuple_Check(item) ? PyTuple_GET_SIZE(item) : 1;
66 if (realsize != nArgs - 1) {
70 cargs.
fArgs = unrolled;
86 Py_ssize_t realsize = 0;
87 for (Py_ssize_t i = 0; i < nArgs; ++i) {
89 realsize += PyTuple_Check(item) ? PyTuple_GET_SIZE(item) : 1;
93 if (realsize != nArgs) {
static void unroll(cpyrt_PyArgs_t packed_args, cpyrt_PyArgs_t unrolled, Py_ssize_t nArgs)
bool ProcessArgs(PyCallArgs &args) override
virtual bool InitExecutor_(Executor *&, CallContext *ctxt=nullptr)
std::string GetReturnTypeName()
virtual bool ProcessArgs(PyCallArgs &args)
bool InitExecutor_(Executor *&, CallContext *ctxt=nullptr) override
bool ProcessArgs(PyCallArgs &args) override
static PyObject * cpyrt_PyArgs_SET_ITEM(cpyrt_PyArgs_t args, Py_ssize_t i, PyObject *item)
PyObject *const * cpyrt_PyArgs_t
static Py_ssize_t cpyrt_PyArgs_GET_SIZE(cpyrt_PyArgs_t, size_t nargsf)
static PyObject * cpyrt_PyArgs_GET_ITEM(cpyrt_PyArgs_t args, Py_ssize_t i)