diff options
Diffstat (limited to 'share/swig/2.0.11/python/defarg.swg')
-rw-r--r-- | share/swig/2.0.11/python/defarg.swg | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/share/swig/2.0.11/python/defarg.swg b/share/swig/2.0.11/python/defarg.swg new file mode 100644 index 0000000..10c9916 --- /dev/null +++ b/share/swig/2.0.11/python/defarg.swg @@ -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); +} |