/trunk/Lib/python/pytypemaps.swg
# · Unknown · 101 lines · 71 code · 30 blank · 0 comment · 0 complexity · ef3319295c527b02fa45e462f8e7e048 MD5 · raw file
- /* ------------------------------------------------------------
- * 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 */
- #if defined(SWIGPYTHON_BUILTIN)
- #define SWIG_SetConstant(name, obj) SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, name,obj)
- #else
- #define SWIG_SetConstant(name, obj) SWIG_Python_SetConstant(d, name,obj)
- #endif
- /* 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 / typemap overrides
- * ------------------------------------------------------------ */
- /* 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);
- }
- }
- }