Manage load of deps for external_objects_java. 60/16460/1
Vincent COUVERT [Thu, 7 May 2015 10:10:21 +0000 (12:10 +0200)]
Change-Id: Ib683ae8f84991b30b1959950c8f59df327c0bfc1

scilab/modules/functions_manager/includes/dynamic_modules.hxx
scilab/modules/functions_manager/src/cpp/dynamic_modules.cpp

index 0aa96d9..c93fa0c 100644 (file)
@@ -196,6 +196,8 @@ public :
 
 class ExternalObjectsJavaModule : public GenericModule
 {
+    static bool loadedDep;
+    static void LoadDeps(std::wstring _functionName);
 public :
     static int Load();
 };
index 4139673..1cd1ca6 100644 (file)
@@ -611,6 +611,16 @@ int ExternalObjectsModule::Load()
     return 1;
 }
 
+bool ExternalObjectsJavaModule::loadedDep = false;
+void ExternalObjectsJavaModule::LoadDeps(std::wstring _functionName)
+{
+    if (loadedDep == false)
+    {
+        loadOnUseClassPath("external_objects_java");
+        loadedDep = true;
+    }
+};
+
 int ExternalObjectsJavaModule::Load()
 {
     wstring wstModuleName = L"external_objects_java";
@@ -623,7 +633,7 @@ int ExternalObjectsJavaModule::Load()
 
     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, NULL, wstModuleName));
+        symbol::Context::getInstance()->addFunction(types::Function::createFunction(vect[i].wstFunction, vect[i].wstName, pwstLibName, vect[i].iType, &ExternalObjectsJavaModule::LoadDeps, wstModuleName));
     }
 
     FREE(pwstLibName);