PageRenderTime 17ms CodeModel.GetById 11ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 1ms

/trunk/Lib/python/defarg.swg

#
Unknown | 37 lines | 28 code | 9 blank | 0 comment | 0 complexity | 779551a0b0407862c6de3e5fb8651fb8 MD5 | raw file
 1/* This file defines an internal function for processing default arguments
 2   with proxy classes.
 3
 4   There seems to be no straightforward way to write proxy functions
 5   involving default arguments. For example :
 6
 7             def foo(arg1,arg2,*args):
 8                     proxyc.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                    proxyc.__call_defarg(proxyc.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
23SWIGINTERN 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    SWIG_PYTHON_THREAD_BEGIN_BLOCK;
32    PyErr_SetString(PyExc_TypeError, "__call_defarg : Need a callable object!");
33    SWIG_PYTHON_THREAD_END_BLOCK;
34    return NULL;
35  }
36  return PyEval_CallObject(func,parms);
37}