From b82e7cb42090e0c81362fbfaa1e3ab145c3688fa Mon Sep 17 00:00:00 2001 From: =?utf8?q?Cl=C3=A9ment=20DAVID?= Date: Mon, 28 Nov 2016 17:24:03 +0100 Subject: [PATCH] Xcos: add dummy gateways in NWNI mode Change-Id: I53159e63f43e613124bbf803209ba24f306a4d00 --- .../functions_manager/src/cpp/dynamic_modules.cpp | 32 +++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/scilab/modules/functions_manager/src/cpp/dynamic_modules.cpp b/scilab/modules/functions_manager/src/cpp/dynamic_modules.cpp index ea5b2f1..6a48d43 100644 --- a/scilab/modules/functions_manager/src/cpp/dynamic_modules.cpp +++ b/scilab/modules/functions_manager/src/cpp/dynamic_modules.cpp @@ -17,9 +17,12 @@ #include "context.hxx" #include "configvariable.hxx" + extern "C" { #include "loadOnUseClassPath.h" +#include "Scierror.h" + //XML API #include #include @@ -548,6 +551,12 @@ int ScicosModule::Load() return 1; } +static types::Function::ReturnValue sci_dummy_xcos_in_NWNI(types::typed_list &/*in*/, int /*_iRetCount*/, types::typed_list &/*out*/) +{ + Scierror(999, _("Scilab '%s' module disabled in -nogui or -nwni mode.\n"), "xcos"); + return types::Function::Error; +}; + bool XcosModule::loadedDep = false; int XcosModule::LoadDeps(const std::wstring& _functionName) { @@ -562,17 +571,30 @@ int XcosModule::LoadDeps(const std::wstring& _functionName) int XcosModule::Load() { - std::wstring wstModuleName = L"xcos"; + const std::wstring wstModuleName = L"xcos"; + const wchar_t* wstLibName = wstModuleName.c_str(); #ifdef _MSC_VER - wchar_t* pwstLibName = buildModuleDynLibraryNameW(wstModuleName.c_str(), DYNLIB_NAME_FORMAT_2); + wchar_t* pwstLibName = buildModuleDynLibraryNameW(wstLibName, DYNLIB_NAME_FORMAT_2); #else - wchar_t* pwstLibName = buildModuleDynLibraryNameW(wstModuleName.c_str(), DYNLIB_NAME_FORMAT_3); + wchar_t* pwstLibName = buildModuleDynLibraryNameW(wstLibName, DYNLIB_NAME_FORMAT_3); #endif vectGateway vect = loadGatewaysName(wstModuleName); - for (int i = 0 ; i < (int)vect.size() ; i++) + + if (getScilabMode() != SCILAB_NWNI) + { + for (int i = 0 ; i < (int)vect.size() ; i++) + { + symbol::Context::getInstance()->addFunction(types::Function::createFunction(vect[i].wstFunction, vect[i].wstName, pwstLibName, vect[i].iType, &XcosModule::LoadDeps, wstModuleName)); + } + } + else { - symbol::Context::getInstance()->addFunction(types::Function::createFunction(vect[i].wstFunction, vect[i].wstName, pwstLibName, vect[i].iType, &XcosModule::LoadDeps, wstModuleName)); + for (int i = 0 ; i < (int)vect.size() ; i++) + { + symbol::Context::getInstance()->addFunction(types::Function::createFunction(vect[i].wstFunction, &sci_dummy_xcos_in_NWNI, wstModuleName)); + } + } FREE(pwstLibName); -- 1.7.9.5