Index: swig/Lib/python/pytypemaps.swg |
=================================================================== |
--- swig/Lib/python/pytypemaps.swg (revision 0) |
+++ swig/Lib/python/pytypemaps.swg (revision 0) |
@@ -0,0 +1,98 @@ |
+/* ------------------------------------------------------------ |
+ * 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); |
+ } |
+ } |
+} |
+ |
+ |