git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7925 626c5289-ae23-0410-ae9c-e8d60b6d4f22
97 lines
2.5 KiB
Text
97 lines
2.5 KiB
Text
/* ------------------------------------------------------------
|
|
* 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()
|
|
|
|
/* Overload of the output/constant/exception/dirout handling */
|
|
|
|
/* append output */
|
|
#define SWIG_AppendOutput(result,obj) SWIG_Python_AppendOutput(result, obj)
|
|
|
|
/* set constant */
|
|
%define %set_constant(name, obj) %begin_block
|
|
PyObject *_obj = obj;
|
|
PyDict_SetItemString(d, name, _obj);
|
|
Py_DECREF(_obj);
|
|
%end_block %enddef
|
|
|
|
/* raise */
|
|
%define %raise(obj, type, desc)
|
|
PyObject *_obj = obj;
|
|
PyErr_SetObject(SWIG_Python_ExceptionType(desc), _obj);
|
|
Py_DECREF(_obj);
|
|
SWIG_fail %enddef
|
|
|
|
|
|
/* Include the unified typemap library */
|
|
%include <typemaps/swigtypemaps.swg>
|
|
|
|
|
|
/* ------------------------------------------------------------
|
|
* Python extra typemaps
|
|
* ------------------------------------------------------------ */
|
|
|
|
/* Get the address of the 'python self' object */
|
|
|
|
%typemap(in,numinputs=0) PyObject **PYTHON_SELF "$1 = &obj0;";
|
|
|
|
/* For output, we increase the reference object */
|
|
%typemap(out,noblock=1) PyObject * {
|
|
Py_XINCREF($1);
|
|
$result = $1;
|
|
}
|
|
|
|
%typemap(out,noblock=1) PyObject * const & {
|
|
Py_XINCREF(*$1);
|
|
$result = *$1;
|
|
}
|
|
|
|
/* 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)) "";
|
|
|
|
|
|
|
|
|
|
|