| /* ------------------------------------------------------------ |
| * Typemap specializations for Python |
| * ------------------------------------------------------------ */ |
| |
| /* ------------------------------------------------------------ |
| * Fragment section |
| * ------------------------------------------------------------ */ |
| /* bool is dangerous in Python, change precedence */ |
| #undef SWIG_TYPECHECK_BOOL |
| %define SWIG_TYPECHECK_BOOL 10000 %enddef |
| |
| /* Include fundamental fragemt definitions */ |
| %include <typemaps/fragments.swg> |
| |
| /* Look for user fragments file. */ |
| %include <pyfragments.swg> |
| |
| /* Python fragments for fundamental types */ |
| %include <pyprimtypes.swg> |
| |
| /* Python fragments for char* strings */ |
| %include <pystrings.swg> |
| |
| /* Backward compatibility output helper */ |
| %fragment("t_output_helper","header") %{ |
| #define t_output_helper SWIG_Python_AppendOutput |
| %} |
| |
| |
| /* ------------------------------------------------------------ |
| * Unified typemap section |
| * ------------------------------------------------------------ */ |
| |
| /* directors are supported in Python */ |
| #ifndef SWIG_DIRECTOR_TYPEMAPS |
| #define SWIG_DIRECTOR_TYPEMAPS |
| #endif |
| |
| |
| /* Python types */ |
| #define SWIG_Object PyObject * |
| #define VOID_Object SWIG_Py_Void() |
| |
| /* Python allows implicit conversion */ |
| #define %implicitconv_flag $implicitconv |
| |
| |
| /* Overload of the output/constant/exception/dirout handling */ |
| |
| /* append output */ |
| #define SWIG_AppendOutput(result, obj) SWIG_Python_AppendOutput(result, obj) |
| |
| /* set constant */ |
| #define SWIG_SetConstant(name, obj) SWIG_Python_SetConstant(d, name,obj) |
| |
| /* raise */ |
| #define SWIG_Raise(obj, type, desc) SWIG_Python_Raise(obj, type, desc) |
| |
| /* Include the unified typemap library */ |
| %include <typemaps/swigtypemaps.swg> |
| |
| |
| /* ------------------------------------------------------------ |
| * Python extra typemaps |
| * ------------------------------------------------------------ */ |
| |
| /* Get the address of the 'python self' object */ |
| |
| %typemap(in,numinputs=0,noblock=1) PyObject **PYTHON_SELF { |
| $1 = &$self; |
| } |
| |
| |
| /* Consttab, needed for callbacks, it should be removed later */ |
| |
| %typemap(consttab) SWIGTYPE ((*)(ANY)) |
| { SWIG_PY_POINTER, (char*)"$symname", 0, 0, (void *)($value), &$descriptor } |
| |
| %typemap(constcode) SWIGTYPE ((*)(ANY)) ""; |
| |
| |
| /* Smart Pointers */ |
| %typemap(out,noblock=1) const SWIGTYPE & SMARTPOINTER { |
| $result = SWIG_NewPointerObj(%new_copy(*$1, $*ltype), $descriptor, SWIG_POINTER_OWN | %newpointer_flags); |
| } |
| |
| %typemap(ret,noblock=1) const SWIGTYPE & SMARTPOINTER, SWIGTYPE SMARTPOINTER { |
| if ($result) { |
| PyObject *robj = PyObject_CallMethod($result, (char *)"__deref__", NULL); |
| if (robj && !PyErr_Occurred()) { |
| SwigPyObject_append((PyObject *) SWIG_Python_GetSwigThis($result), |
| (PyObject *) SWIG_Python_GetSwigThis(robj)); |
| Py_DECREF(robj); |
| } |
| } |
| } |
| |
| |