/
niceSOFT
/
swig
Обзор
Документация
Войти
/
niceSOFT
/
swig
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Lib/python/pytypemaps.swg
119 строк
4 KB
William S Fulton
Use the canonical capitalisation of Unified Typemap Library
23 июл 2026, 19:30
23 июл 2026, 19:30
5d35391
Код
Авторство
О чём код?
/* ------------------------------------------------------------ * Typemap specializations for Python * ------------------------------------------------------------ */ /* ------------------------------------------------------------ * Fragment section * ------------------------------------------------------------ */ #ifdef SWIG_PYTHON_LEGACY_BOOL // Default prior to SWIG 3.0.0 #undef SWIG_TYPECHECK_BOOL %define SWIG_TYPECHECK_BOOL 10000 %enddef #endif /* Include fundamental fragment 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> /* ------------------------------------------------------------ * Unified Typemap Library 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, $isvoid) /* 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) /* clear errors */ #define %error_clear PyErr_Clear() /* PEP 484 type hints. Included before the Unified Typemap Library so that the %apply in the library, such as %apply size_t { std::size_t }, also copies the pytyping typemaps and not just the in, out and typecheck typemaps. */ %include <pytyping.swg> /* Include the Unified Typemap Library */ %include <typemaps/swigtypemaps.swg> /* ------------------------------------------------------------ * Python extra typemaps / typemap overrides * ------------------------------------------------------------ */ /* Add missing error handling to PyObject * */ %typemap(out,noblock=1) PyObject * { $result = $1; if (!$result) SWIG_fail; } %typemap(out,noblock=1) PyObject * const & { $result = *$1; if (!$result) SWIG_fail; } /* 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, "$symname", 0, 0, (void *)($value), &$descriptor } %typemap(consttab) SWIGTYPE ((* const)(ANY)) = SWIGTYPE ((*)(ANY)); %typemap(constcode) SWIGTYPE ((*)(ANY)) "" %typemap(constcode) SWIGTYPE ((* const)(ANY)) = 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)); SWIG_Py_DECREF(robj); } } }