summaryrefslogtreecommitdiff
path: root/share/swig/2.0.11/python/defarg.swg
diff options
context:
space:
mode:
Diffstat (limited to 'share/swig/2.0.11/python/defarg.swg')
-rw-r--r--share/swig/2.0.11/python/defarg.swg37
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);
+}