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); |
+} |