You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.1 KiB
37 lines
1.1 KiB
/* This file defines an internal function for processing default arguments |
|
with proxy classes. |
|
|
|
There seems to be no straightforward way to write proxy functions |
|
involving default arguments. For example : |
|
|
|
def foo(arg1,arg2,*args): |
|
proxyc.foo(arg1,arg2,args) |
|
|
|
This fails because args is now a tuple and SWIG doesn't know what to |
|
do with it. |
|
|
|
This file allows a different approach : |
|
|
|
def foo(arg1,arg2,*args): |
|
proxyc.__call_defarg(proxyc.foo,(arg1,arg2,)+args) |
|
|
|
Basically, we form a new tuple from the object, call this special |
|
__call_defarg method and it passes control to the real wrapper function. |
|
An ugly hack, but it works. |
|
*/ |
|
|
|
SWIGINTERN PyObject *swig_call_defargs(PyObject *self, PyObject *args) { |
|
PyObject *func; |
|
PyObject *parms; |
|
|
|
if (!PyArg_ParseTuple(args,"OO",&func,&parms)) |
|
return NULL; |
|
|
|
if (!PyCallable_Check(func)) { |
|
SWIG_PYTHON_THREAD_BEGIN_BLOCK; |
|
PyErr_SetString(PyExc_TypeError, "__call_defarg : Need a callable object!"); |
|
SWIG_PYTHON_THREAD_END_BLOCK; |
|
return NULL; |
|
} |
|
return PyEval_CallObject(func,parms); |
|
}
|
|
|