special cases and other things in wxPython, and since I plan on making several more, I've decided to put the SWIG sources in wxPython's CVS instead of relying on maintaining patches. This effectivly becomes a fork of an obsolete version of SWIG, :-( but since SWIG 1.3 still doesn't have some things I rely on in 1.1, not to mention that my custom patches would all have to be redone, I felt that this is the easier road to take. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15307 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /* This file defines an internal function for processing default arguments
 | |
|    with shadow classes.
 | |
| 
 | |
|    There seems to be no straightforward way to write a shadow functions
 | |
|    involving default arguments. For example :
 | |
| 
 | |
|              def foo(arg1,arg2,*args):
 | |
|                      shadowc.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):
 | |
|                     shadowc.__call_defarg(shadowc.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.
 | |
| */
 | |
| 
 | |
| static 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)) {
 | |
|              PyErr_SetString(PyExc_TypeError, "__call_defarg : Need a callable object!");
 | |
| 	     return NULL;
 | |
| 	}
 | |
| 	return PyEval_CallObject(func,parms);
 | |
| 
 | |
| }
 |