diff --git a/Lib/scilab/scirun.swg b/Lib/scilab/scirun.swg index e9766ca8f..ad3a7fa1f 100644 --- a/Lib/scilab/scirun.swg +++ b/Lib/scilab/scirun.swg @@ -163,8 +163,20 @@ SWIG_Scilab_Raise(const int obj, const char *type, swig_type_info *descriptor) { Scierror(SWIG_SCILAB_ERROR, "SWIG/Scilab: Exception (%s) occured.\n", type); } +/* Module initialization */ + +static int swig_module_initialized = 0; + +SWIGRUNTIME int +SWIG_Module_Initialized() { + return swig_module_initialized; +} + /* Pointer conversion functions */ +SWIGRUNTIME swig_type_info * +SWIG_Scilab_TypeQuery(const char *name); + SWIGINTERN int SwigScilabCheckPtr(void *pvApiCtx, int iVar, swig_type_info *descriptor, char *fname) { SciErr sciErr; diff --git a/Lib/scilab/sciruntime.swg b/Lib/scilab/sciruntime.swg index cc9aad5f2..9abedfe3d 100644 --- a/Lib/scilab/sciruntime.swg +++ b/Lib/scilab/sciruntime.swg @@ -21,6 +21,19 @@ SWIG_Scilab_SetModule(swig_module_info *swig_module) { %insert(init) "swiginit.swg" +%insert(init) %{ +SWIGRUNTIME swig_type_info * +SWIG_Scilab_TypeQuery(const char *name) { + if (SWIG_Module_Initialized()) { + return SWIG_TypeQuery(name); + } + else { + SWIG_Error(SWIG_RuntimeError, "the module is not initialized"); + return NULL; + } +} +%} + %insert(init) %{ #ifdef __cplusplus extern "C" @@ -28,4 +41,5 @@ extern "C" int _Init(SWIG_GatewayParameters) { SWIG_InitializeModule(NULL); SWIG_CreateScilabVariables(pvApiCtx); + swig_module_initialized = 1; %}