1 /* This file defines an internal function for processing default arguments 2 with proxy classes. 3 4 There seems to be no straightforward way to write proxy functions 5 involving default arguments. For example : 6 7 def foo(arg1,arg2,*args): 8 proxyc.foo(arg1,arg2,args) 9 10 This fails because args is now a tuple and SWIG doesn't know what to 11 do with it. 12 13 This file allows a different approach : 14 15 def foo(arg1,arg2,*args): 16 proxyc.__call_defarg(proxyc.foo,(arg1,arg2,)+args) 17 18 Basically, we form a new tuple from the object, call this special 19 __call_defarg method and it passes control to the real wrapper function. 20 An ugly hack, but it works. 21 */ 22 23 SWIGINTERN PyObject *swig_call_defargs(PyObject *self, PyObject *args) { 24 PyObject *func; 25 PyObject *parms; 26 27 if (!PyArg_ParseTuple(args,"OO",&func,&parms)) 28 return NULL; 29 30 if (!PyCallable_Check(func)) { 31 SWIG_PYTHON_THREAD_BEGIN_BLOCK; 32 PyErr_SetString(PyExc_TypeError, "__call_defarg : Need a callable object!"); 33 SWIG_PYTHON_THREAD_END_BLOCK; 34 return NULL; 35 } 36 return PyEval_CallObject(func,parms); 37 } 38