12345678910111213141516171819202122232425262728293031323334353637 |
- /* 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);
- }
|