]>
Commit | Line | Data |
---|---|---|
c90f71dd RD |
1 | /* This file defines an internal function for processing default arguments |
2 | with shadow classes. | |
3 | ||
4 | There seems to be no straightforward way to write a shadow functions | |
5 | involving default arguments. For example : | |
6 | ||
7 | def foo(arg1,arg2,*args): | |
8 | shadowc.foo(arg1,arg2,args) | |
9 | ||
10 | This fails because args is now a tuple and SWIG doesn't know what to | |
11 | do with it. | |
12 | ||
13 | This file allows a different approach : | |
14 | ||
15 | def foo(arg1,arg2,*args): | |
16 | shadowc.__call_defarg(shadowc.foo,(arg1,arg2,)+args) | |
17 | ||
18 | Basically, we form a new tuple from the object, call this special | |
19 | __call_defarg method and it passes control to the real wrapper function. | |
20 | An ugly hack, but it works. | |
21 | */ | |
22 | ||
23 | static PyObject *swig_call_defargs(PyObject *self, PyObject *args) { | |
24 | PyObject *func; | |
25 | PyObject *parms; | |
26 | ||
27 | if (!PyArg_ParseTuple(args,"OO",&func,&parms)) | |
28 | return NULL; | |
29 | ||
30 | if (!PyCallable_Check(func)) { | |
31 | PyErr_SetString(PyExc_TypeError, "__call_defarg : Need a callable object!"); | |
32 | return NULL; | |
33 | } | |
34 | return PyEval_CallObject(func,parms); | |
35 | ||
36 | } |