| Index: swig/Lib/python/defarg.swg
|
| ===================================================================
|
| --- swig/Lib/python/defarg.swg (revision 0)
|
| +++ swig/Lib/python/defarg.swg (revision 0)
|
| @@ -0,0 +1,37 @@
|
| +/* 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);
|
| +}
|
|
|