fix some dynamic_link tests 54/17654/2
Antoine ELIAS [Fri, 8 Jan 2016 14:29:21 +0000 (15:29 +0100)]
Change-Id: I4657d992096b8eb0c2fd5720cb1e91c6a8b8cfaa

23 files changed:
scilab/modules/ast/src/cpp/system_env/configvariable.cpp
scilab/modules/differential_equations/src/c/errmds.h
scilab/modules/dynamic_link/macros/windows/dlwGenerateMakefile.sci
scilab/modules/dynamic_link/tests/nonreg_tests/bug_11544.tst
scilab/modules/dynamic_link/tests/nonreg_tests/bug_3532.dia.ref
scilab/modules/dynamic_link/tests/nonreg_tests/bug_3532.tst
scilab/modules/dynamic_link/tests/nonreg_tests/bug_3630.c
scilab/modules/dynamic_link/tests/nonreg_tests/bug_3630.dia.ref
scilab/modules/dynamic_link/tests/nonreg_tests/bug_3630.tst
scilab/modules/dynamic_link/tests/nonreg_tests/bug_3944.dia.ref
scilab/modules/dynamic_link/tests/nonreg_tests/bug_3944.tst
scilab/modules/dynamic_link/tests/nonreg_tests/bug_4574.dia.ref
scilab/modules/dynamic_link/tests/nonreg_tests/bug_4574.tst
scilab/modules/dynamic_link/tests/nonreg_tests/bug_6902.dia.ref
scilab/modules/dynamic_link/tests/nonreg_tests/bug_6902.tst
scilab/modules/dynamic_link/tests/nonreg_tests/bug_9761.dia.ref
scilab/modules/dynamic_link/tests/nonreg_tests/bug_9761.tst
scilab/modules/dynamic_link/tests/unit_tests/ilib_for_link.tst
scilab/modules/dynamic_link/tests/unit_tests/ilib_for_link.unix.dia.ref
scilab/modules/dynamic_link/tests/unit_tests/ilib_for_link.win.dia.ref
scilab/modules/dynamic_link/tests/unit_tests/ilib_mex_build.dia.ref
scilab/modules/dynamic_link/tests/unit_tests/ilib_mex_build.tst
scilab/modules/dynamic_link/tests/unit_tests/links.dia.ref

index 7b1e341..f5f7259 100644 (file)
@@ -823,7 +823,7 @@ void ConfigVariable::removeDynamicLibrary(int _iDynamicLibraryIndex)
     if (_iDynamicLibraryIndex < (int)m_DynLibList.size())
     {
         std::list<EntryPointStr*>::const_iterator it;
-        for (it = m_EntryPointList.begin() ; it != m_EntryPointList.end() ; it++)
+        for (it = m_EntryPointList.begin() ; it != m_EntryPointList.end() ; )
         {
             //clear all entry points linked to removed dynamic library
             if ((*it)->iLibIndex == _iDynamicLibraryIndex)
@@ -838,6 +838,10 @@ void ConfigVariable::removeDynamicLibrary(int _iDynamicLibraryIndex)
                 }
                 it = m_EntryPointList.begin();
             }
+            else
+            {
+                ++it;
+            }
         }
         //remove dynamic library
         FREE(m_DynLibList[_iDynamicLibraryIndex]->pwstLibraryName);
index 8ef4928..5d981a8 100644 (file)
@@ -15,7 +15,7 @@
 #define __ERRMDS_H__
 
 #include "machine.h"
-#include "dynlib_output_stream.h"
+#include "dynlib_differential_equations.h"
 
 /* routine used by fortran */
 
@@ -26,7 +26,7 @@
 * @param num  : error to catch, if num=-1 all errors are catched
 * @return 0
 */
-OUTPUT_STREAM_IMPEXP int C2F(errmds)(int *num, int *imess, int *imode);
+DIFFERENTIAL_EQUATIONS_IMPEXP int C2F(errmds)(int *num, int *imess, int *imode);
 
 #endif /* __ERRMDS_H__ */
 /*--------------------------------------------------------------------------*/
index 5d7e13d..04a2418 100644 (file)
@@ -185,6 +185,9 @@ function ilib_gen_Make_win32(name, ..
     val = getenv("DEBUG_SCILAB_DYNAMIC_LINK","");
     if val <> "YES" & val <> "NO" & isDebug()then
         setenv("DEBUG_SCILAB_DYNAMIC_LINK","YES");
+        CFLAGS = CFLAGS + " -D_DEBUG";
+    else
+        CFLAGS = CFLAGS + " -DNDEBUG";
     end
 
     // remove duplicated files
@@ -193,10 +196,10 @@ function ilib_gen_Make_win32(name, ..
     FILES_SRC = strcat(FILES_SRC_MATRIX," ");
 
     OBJ_DEST_PATH = "";
-    if (getenv("DEBUG_SCILAB_DYNAMIC_LINK","NO") == "NO") then
-        OBJ_DEST_PATH = "Release/";
-    else
+    if (getenv("DEBUG_SCILAB_DYNAMIC_LINK","YES") == "YES") then
         OBJ_DEST_PATH = "Debug/";
+    else
+        OBJ_DEST_PATH = "Release/";
     end
 
     OBJS_MATRIX = [];
index 5a50b9f..d18ae52 100644 (file)
@@ -9,7 +9,7 @@
 //
 // <-- WINDOWS ONLY -->
 //
-// <-- Non-regression test for bug 10544 -->
+// <-- Non-regression test for bug 11544 -->
 //
 // <-- Bugzilla URL -->
 // http://bugzilla.scilab.org/show_bug.cgi?id=11544
@@ -24,7 +24,7 @@ cd(TMPDIR + "/bug_11544");
 
 src = [
 "#include ""api_scilab.h"""
-"int sci_bug_11544(char* fname, int len)"
+"int sci_bug_11544(char* fname, void* pvApiCtx)"
 "{"
 "    AssignOutputVariable(pvApiCtx, 0) = 1;"
 "    return 0;"
index dd4b712..3611231 100644 (file)
@@ -26,19 +26,19 @@ if getos() == 'Windows' then
   if ierr <> 999 then bugmes();quit;end
   ulink();
   
-  Cfunctions = ['Windows_Main'];
+  Cfunctions = ['CreateScilabConsole'];
   link(SCI+'/bin/scilab_windows.dll',Cfunctions,'c');
   ulink();
   
-  Cfunctions = ['Windows_Main','Console_Main','createInnosetupMutex','closeInnosetupMutex'];
+  Cfunctions = ['CreateScilabConsole','CloseScilabConsole','createInnosetupMutex','closeInnosetupMutex'];
   link(SCI+'/bin/scilab_windows.dll',Cfunctions,'c');
   ulink();
   
-  Cfunctions = ['Windows_Main';'Console_Main';'createInnosetupMutex';'closeInnosetupMutex'];
+  Cfunctions = ['CreateScilabConsole';'CloseScilabConsole';'createInnosetupMutex';'closeInnosetupMutex'];
   link(SCI+'/bin/scilab_windows.dll',Cfunctions,'c');
   ulink();
   
-  Cfunctions = ['Windows_Main','Console_Main';'createInnosetupMutex','closeInnosetupMutex'];
+  Cfunctions = ['CreateScilabConsole','CloseScilabConsole';'createInnosetupMutex','closeInnosetupMutex'];
   ierr = execstr("link(SCI+''/bin/scilab_windows.dll'',Cfunctions,''c'');",'errcatch');
   if ierr <> 999 then bugmes();quit;end
   ulink();
index 90c749e..cd90b69 100644 (file)
@@ -30,19 +30,19 @@ if getos() == 'Windows' then
   if ierr <> 999 then pause,end
   ulink();
   
-  Cfunctions = ['Windows_Main'];
+  Cfunctions = ['CreateScilabConsole'];
   link(SCI+'/bin/scilab_windows.dll',Cfunctions,'c');
   ulink();
   
-  Cfunctions = ['Windows_Main','Console_Main','createInnosetupMutex','closeInnosetupMutex'];
+  Cfunctions = ['CreateScilabConsole','CloseScilabConsole','createInnosetupMutex','closeInnosetupMutex'];
   link(SCI+'/bin/scilab_windows.dll',Cfunctions,'c');
   ulink();
   
-  Cfunctions = ['Windows_Main';'Console_Main';'createInnosetupMutex';'closeInnosetupMutex'];
+  Cfunctions = ['CreateScilabConsole';'CloseScilabConsole';'createInnosetupMutex';'closeInnosetupMutex'];
   link(SCI+'/bin/scilab_windows.dll',Cfunctions,'c');
   ulink();
   
-  Cfunctions = ['Windows_Main','Console_Main';'createInnosetupMutex','closeInnosetupMutex'];
+  Cfunctions = ['CreateScilabConsole','CloseScilabConsole';'createInnosetupMutex','closeInnosetupMutex'];
   ierr = execstr("link(SCI+''/bin/scilab_windows.dll'',Cfunctions,''c'');",'errcatch');
   if ierr <> 999 then pause,end
   ulink();
index a004fdf..ad9f581 100644 (file)
@@ -1,95 +1,14 @@
 /* ============================================== */
-#define __USE_DEPRECATED_STACK_FUNCTIONS__
-#include "stack-c.h"
+#include "api_scilab.h"
 #include "sciprint.h"
 #include "Scierror.h"
 /* ============================================== */
-/*  Interfaces for c fonctions */
-/* ============================================== */
-void c_sum(double *b, double *c, double *a);
-void c_sub(double *b, double *c, double *a);
-/* ============================================== */
-int c_intsum(char *fname)
+int c_interface1(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt opt, int nout, scilabVar* out)
 {
-    int l1 = 0, m1 = 0, n1 = 0, l2 = 0, m2 = 0, n2 = 0, l3 = 0, m3 = 1, n3 = 1;
-    int minlhs = 1, maxlhs = 1, minrhs = 2, maxrhs = 2;
-
-    /* Check number of inputs (rhs=2) and outputs (lhs=1) */
-    CheckRhs(minrhs, maxrhs) ;
-    CheckLhs(minlhs, maxlhs) ;
-
-    /* Get Qdata (#1) and Param (#2) and create C (#3) as double ("d") matrices */
-    GetRhsVar(1, MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);   /* b */
-    GetRhsVar(2, MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);   /* c */
-
-    CreateVar(Rhs + 1, MATRIX_OF_DOUBLE_DATATYPE, &m3, &n3, &l3); /* Result : a = b+c */
-
-    /* Check dimensions  */
-    if (!(m1 == 1) | !(n1 == 1))
-    {
-        sciprint("%s: Wrong inputs \r\n", "c_fun");
-        SciError(999);
-        return 0;
-    }
-    if (!(m2 == 1) | !(n2 == 1))
-    {
-        sciprint("%s: Wrong inputs \r\n", "c_fun");
-        SciError(999);
-        return 0;
-    }
-
-    /* Call c_fun */
-    c_sum(stk(l1), stk(l2), stk(l3));
-
-    /*  Return result  */
-    LhsVar(1) = Rhs + 1;
     return 0;
 }
 /* ============================================== */
-int c_intsub(char *fname)
+int c_interface2(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt opt, int nout, scilabVar* out)
 {
-    int l1 = 0, m1 = 0, n1 = 0, l2 = 0, m2 = 0, n2 = 0, l3 = 0, m3 = 1, n3 = 1;
-    int minlhs = 1, maxlhs = 1, minrhs = 2, maxrhs = 2;
-
-    /* Check number of inputs (rhs=2) and outputs (lhs=1) */
-    CheckRhs(minrhs, maxrhs) ;
-    CheckLhs(minlhs, maxlhs) ;
-
-    /* Get Qdata (#1) and Param (#2) and create C (#3) as double ("d") matrices */
-    GetRhsVar(1, MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);   /* b */
-    GetRhsVar(2, MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);   /* c */
-
-    CreateVar(Rhs + 1, MATRIX_OF_DOUBLE_DATATYPE, &m3, &n3, &l3); /* Result : a = b-c */
-
-    /* Check dimensions  */
-    if (!(m1 == 1) | !(n1 == 1))
-    {
-        sciprint("%s: Wrong inputs \r\n", "c_fun");
-        SciError(999);
-        return 0;
-    }
-    if (!(m2 == 1) | !(n2 == 1))
-    {
-        sciprint("%s: Wrong inputs \r\n", "c_fun");
-        SciError(999);
-        return 0;
-    }
-
-    /* Call c_fun */
-    c_sub(stk(l1), stk(l2), stk(l3));
-
-    /*  Return result  */
-    LhsVar(1) = Rhs + 1;
     return 0;
 }
-/* ============================================== */
-void c_sum(double *b, double *c, double *a)
-{
-    *a = *b + *c;
-}
-/* ============================================== */
-void c_sub(double *b, double *c, double *a)
-{
-    *a = *b - *c;
-}
-/* ============================================== */
index b94c9dd..44d1074 100644 (file)
@@ -22,7 +22,7 @@ TEST_DIR = OS_TMP_DIR + filesep() + 'bug_3630';
 copyfile(SCI+'/modules/dynamic_link/tests/nonreg_tests/bug_3630.c' , TEST_DIR + filesep() + 'bug_3630.c');
 chdir(TEST_DIR);
 files=['bug_3630.c'];
-ilib_build('libc_fun',['c_sum','c_intsum';'c_sub','c_intsub'],files,[]);
+ilib_build('libc_fun',['c_interface1','c_interface1';'c_interface2','c_interface2'],files,[]);
 [primitives1,commandes] = what();
 nbprimitives1 = size(primitives1,'*');
 // load the shared library 
@@ -31,16 +31,16 @@ chdir(currentpath);
 [primitives2,commandes] = what();
 nbprimitives2 = size(primitives2,'*');
 if (nbprimitives2 - nbprimitives1) <> 2 then bugmes();quit;end
-if ~or(primitives2 == 'c_sum') then bugmes();quit;end
-if ~or(primitives2 == 'c_sub') then bugmes();quit;end
+if ~or(primitives2 == 'c_interface1') then bugmes();quit;end
+if ~or(primitives2 == 'c_interface2') then bugmes();quit;end
 // ulink() all libraries
 ulink();
-clearfun('c_sum');
-clearfun('c_sub');
+clearfun('c_interface1');
+clearfun('c_interface2');
 [primitives3,commandes] = what();
 nbprimitives3 = size(primitives3,'*');
-if or(primitives3 == 'c_sum') then bugmes();quit;end
-if or(primitives3 == 'c_sub') then bugmes();quit;end
+if or(primitives3 == 'c_interface1') then bugmes();quit;end
+if or(primitives3 == 'c_interface2') then bugmes();quit;end
 if (nbprimitives3 - nbprimitives1) <> 0 then bugmes();quit;end
 //remove TMP_DIR
 rmdir(TEST_DIR,'s');
index 6a5dbea..a86e9a6 100644 (file)
@@ -33,7 +33,7 @@ copyfile(SCI+'/modules/dynamic_link/tests/nonreg_tests/bug_3630.c' , TEST_DIR +
 chdir(TEST_DIR);
 
 files=['bug_3630.c'];
-ilib_build('libc_fun',['c_sum','c_intsum';'c_sub','c_intsub'],files,[]);
+ilib_build('libc_fun',['c_interface1','c_interface1';'c_interface2','c_interface2'],files,[]);
 
 [primitives1,commandes] = what();
 nbprimitives1 = size(primitives1,'*');
@@ -48,19 +48,19 @@ nbprimitives2 = size(primitives2,'*');
 
 if (nbprimitives2 - nbprimitives1) <> 2 then pause,end
 
-if ~or(primitives2 == 'c_sum') then pause,end
-if ~or(primitives2 == 'c_sub') then pause,end
+if ~or(primitives2 == 'c_interface1') then pause,end
+if ~or(primitives2 == 'c_interface2') then pause,end
 
 // ulink() all libraries
 ulink();
-clearfun('c_sum');
-clearfun('c_sub');
+clearfun('c_interface1');
+clearfun('c_interface2');
 
 [primitives3,commandes] = what();
 nbprimitives3 = size(primitives3,'*');
 
-if or(primitives3 == 'c_sum') then pause,end
-if or(primitives3 == 'c_sub') then pause,end
+if or(primitives3 == 'c_interface1') then pause,end
+if or(primitives3 == 'c_interface2') then pause,end
 
 if (nbprimitives3 - nbprimitives1) <> 0 then pause,end
 
index cace460..7689bc7 100644 (file)
@@ -16,7 +16,7 @@
 // variable tables to compile other files
 ilib_verbose(0);
 cd(TMPDIR);
-mputl('ilib_mex_build(''libmex'',[''mexf16'',''mexfunction16'',''cmex''],[],[],'''','''','''','''')','builder.sce');
+mputl('ilib_mex_build(''libmex2'',[''mexf16'',''mexfunction16'',''cmex''],[],[],'''','''','''','''')','builder.sce');
 mputl([
 '#include ""mex.h""'
 'void mexFunction(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[])'
index 0335b76..0102b48 100644 (file)
@@ -20,7 +20,7 @@
 ilib_verbose(0);
 
 cd(TMPDIR);
-mputl('ilib_mex_build(''libmex'',[''mexf16'',''mexfunction16'',''cmex''],[],[],'''','''','''','''')','builder.sce');
+mputl('ilib_mex_build(''libmex2'',[''mexf16'',''mexfunction16'',''cmex''],[],[],'''','''','''','''')','builder.sce');
 
 mputl([
 '#include ""mex.h""'
index 98f2337..91b2c7e 100644 (file)
 // ilib_build does not check if library is already loaded in scilab.
 ilib_verbose(0);
 chdir(TMPDIR);
-i=['#define __USE_DEPRECATED_STACK_FUNCTIONS__'
-   '#include ""stack-c.h""'
-   '#include ""stackTypeVariable.h""'
-   'int intfun1(char *fname)' 
+i=['#include ""api_scilab.h""'
+   'int intfun1(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt opt, int nout, scilabVar* out)'
    '{'
    '  return 0;'
    '}'];
 mputl(i,'intfun1.c');
 ilib_build('foo',['scifun1','intfun1'],'intfun1.c',[]);
 exec loader.sce;
-i=['#define __USE_DEPRECATED_STACK_FUNCTIONS__'
-   '#include ""stack-c.h""'
-   '#include ""stackTypeVariable.h""'
-   'int intfun1(char *fname)' 
+i=['#include ""api_scilab.h""'
+   'int intfun1(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt opt, int nout, scilabVar* out)'
    '{'
    '  return 1;'
    '}'];
 mputl(i,'intfun2.c');
 cmdstr = "ilib_build(''foo'',[''scifun1'',''intfun2''],''intfun2.c'',[]);"
- cmdstr  =
- ilib_build('foo',['scifun1','intfun2'],'intfun2.c',[]);   
+ cmdstr  = 
+ ilib_build('foo',['scifun1','intfun2'],'intfun2.c',[]);
 ierr = execstr(cmdstr, 'errcatch');
 if ierr <> 999 then bugmes();quit;end
index 1f03843..2dfb033 100644 (file)
 ilib_verbose(0);
 chdir(TMPDIR);
 
-i=['#define __USE_DEPRECATED_STACK_FUNCTIONS__'
-   '#include ""stack-c.h""'
-   '#include ""stackTypeVariable.h""'
-   'int intfun1(char *fname)' 
+i=['#include ""api_scilab.h""'
+   'int intfun1(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt opt, int nout, scilabVar* out)'
    '{'
    '  return 0;'
    '}'];
@@ -30,10 +28,8 @@ mputl(i,'intfun1.c');
 ilib_build('foo',['scifun1','intfun1'],'intfun1.c',[]);
 exec loader.sce;
 
-i=['#define __USE_DEPRECATED_STACK_FUNCTIONS__'
-   '#include ""stack-c.h""'
-   '#include ""stackTypeVariable.h""'
-   'int intfun1(char *fname)' 
+i=['#include ""api_scilab.h""'
+   'int intfun1(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt opt, int nout, scilabVar* out)'
    '{'
    '  return 1;'
    '}'];
index d8b1a7e..2710468 100644 (file)
 cd(TMPDIR);
 name = 'gw_example1';
 table = ['sci_func1', 'func1'];
-WITHOUT_AUTO_PUTLHSVAR = %t;
 n1 = ilib_gen_gateway(name,table);
 r1 = fileinfo(n1);
-WITHOUT_AUTO_PUTLHSVAR = %f;
+table = ['sci_func1', 'func1';'sci_func2', 'func2'];
 n2 = ilib_gen_gateway(name,table);
 r2 = fileinfo(n2);
 // there is a modification then gateway must be modified
 if ~or(r1 <> r2) then bugmes();quit;end
-WITHOUT_AUTO_PUTLHSVAR = %f;
 n3 = ilib_gen_gateway(name,table);
 r3 = fileinfo(n3);
 // there is no modification 
index 8f6a1e2..aa41cbc 100644 (file)
@@ -19,18 +19,16 @@ cd(TMPDIR);
 name = 'gw_example1';
 table = ['sci_func1', 'func1'];
 
-WITHOUT_AUTO_PUTLHSVAR = %t;
 n1 = ilib_gen_gateway(name,table);
 r1 = fileinfo(n1);
 
-WITHOUT_AUTO_PUTLHSVAR = %f;
+table = ['sci_func1', 'func1';'sci_func2', 'func2'];
 n2 = ilib_gen_gateway(name,table);
 r2 = fileinfo(n2);
 
 // there is a modification then gateway must be modified
 if ~or(r1 <> r2) then pause,end
 
-WITHOUT_AUTO_PUTLHSVAR = %f;
 n3 = ilib_gen_gateway(name,table);
 r3 = fileinfo(n3);
 // there is no modification 
index 60a81aa..85d1932 100644 (file)
@@ -15,7 +15,7 @@
 // <-- Short Description -->
 // NDEBUG not defined by default in release mode on Windows for dynamic link
 if getos() == "Windows" then
-  assert_checkequal(getenv('DEBUG_SCILAB_DYNAMIC_LINK',''),'');
+  setenv('DEBUG_SCILAB_DYNAMIC_LINK','NO');
   ilib_verbose(0);
   currentpath = pwd();
   cd TMPDIR;
index 9b111d1..dc6da47 100644 (file)
@@ -16,7 +16,7 @@
 // NDEBUG not defined by default in release mode on Windows for dynamic link
 
 if getos() == "Windows" then
-  assert_checkequal(getenv('DEBUG_SCILAB_DYNAMIC_LINK',''),'');
+  setenv('DEBUG_SCILAB_DYNAMIC_LINK','NO');
 
   ilib_verbose(0);
   currentpath = pwd();
index 14d0ed5..32ef3f1 100644 (file)
@@ -38,7 +38,7 @@ cur_dir = pwd();
 
 chdir(TMP_DIR);
 
-ilib_for_link('ext1c','fun1.c',[],"c") 
+ilib_for_link('ext1c','fun1.c',[],"c");
 
 // load the shared library 
 exec loader.sce;
index 6206559..b8ae7a1 100644 (file)
@@ -27,7 +27,7 @@ mputl(f1,TMP_DIR+filesep()+'fun1.c');
 //generated. 
 cur_dir = pwd();
 chdir(TMP_DIR);
-ilib_for_link('ext1c','fun1.c',[],"c") 
+ilib_for_link('ext1c','fun1.c',[],"c");
    Generate a loader file
    Generate a Makefile
    ilib_gen_Make: Copy compilation files (Makefile*, libtool...) to TMPDIR
@@ -35,9 +35,6 @@ ilib_for_link('ext1c','fun1.c',[],"c")
    ilib_gen_Make: Modification of the Makefile in TMPDIR.
    Running the Makefile
    Generate a cleaner file
- ans  =
- libext1c.so   
 // load the shared library 
 exec loader.sce;
 Shared archive loaded.
index f757f3f..213e71f 100644 (file)
@@ -27,16 +27,13 @@ mputl(f1,TMP_DIR+filesep()+'fun1.c');
 //generated. 
 cur_dir = pwd();
 chdir(TMP_DIR);
-ilib_for_link('ext1c','fun1.c',[],"c") 
+ilib_for_link('ext1c','fun1.c',[],"c");
    Generate a loader file
    Generate a Makefile
    Running the Makefile
    Compilation of fun1.c
    Building shared library (be patient)
    Generate a cleaner file
- ans  =
- libext1c.dll   
 // load the shared library 
 exec loader.sce;
 Shared archive loaded.
index 798d4d6..9aba095 100644 (file)
@@ -17,7 +17,7 @@ mputl([
 '  sciprint(""%d %d %d\n"",dims[0],dims[1],dims[2]);'
 '}'
 ],'mexfunction16.c');
-ilib_mex_build('libmex',['mexf16','mexfunction16','cmex'],['mexfunction16.c'],[],'','','','');
+ilib_mex_build('libmex2',['mexf16','mexfunction16','cmex'],['mexfunction16.c'],[],'','','','');
 exec(TMPDIR+'/loader.sce');
 mexf16(rand(2,3,2));
 2 3 2
index 97dea3a..cbc5424 100644 (file)
@@ -22,7 +22,7 @@ mputl([
 '}'
 ],'mexfunction16.c');
 
-ilib_mex_build('libmex',['mexf16','mexfunction16','cmex'],['mexfunction16.c'],[],'','','','');
+ilib_mex_build('libmex2',['mexf16','mexfunction16','cmex'],['mexfunction16.c'],[],'','','','');
 
 exec(TMPDIR+'/loader.sce');
 mexf16(rand(2,3,2));
index 3c81635..e3989ef 100644 (file)
@@ -9,90 +9,45 @@
 // <-- CLI SHELL MODE -->
 ilib_verbose(0);
 curPath = pwd();
-pref='ext';
-suf='f';
-routines=[pref(ones(1,12))+string(1:12)+suf(ones(1,12))];
-copyfile(SCI+filesep()+'modules'+filesep()+'dynamic_link'+filesep()+'tests'+filesep()+'unit_tests'+filesep()+'externals.f', TMPDIR);
+pref="ext";
+suf="f";
+routines=["ext1f","ext2f","ext3f","ext8f","ext9f","ext11f","ext12f"];//[pref(ones(1,12))+string(1:12)+suf(ones(1,12))];
+copyfile(SCI+filesep()+"modules"+filesep()+"dynamic_link"+filesep()+"tests"+filesep()+"unit_tests"+filesep()+"externals.f", TMPDIR);
 chdir(TMPDIR);
-ilib_for_link(routines,'externals.f',[],"f");
+ilib_for_link(routines,"externals.f",[],"f");
 // load the shared library
 exec loader.sce ;
 //===========================================================
 //(very) simple example 1
 //===========================================================
 a=[1,2,3];b=[4,5,6];n=3;
-c=call('ext1f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');
+c=call("ext1f",n,1,"i",a,2,"d",b,3,"d","out",[1,3],4,"d");
 if norm(c-(a+b)) > %eps then bugmes();quit;end
 //===========================================================
 //Simple example #2
 //===========================================================
 a=[1,2,3];b=[4,5,6];n=3;
-c=call('ext2f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');
+c=call("ext2f",n,1,"i",a,2,"d",b,3,"d","out",[1,3],4,"d");
 if norm(c-(sin(a)+cos(b))) > %eps then bugmes();quit;end
 //===========================================================
 //Example #3
 //===========================================================
 a=[1,2,3];b=[4,5,6];n=3;
-c=call('ext3f','yes',1,'c',n,2,'i',a,3,'d',b,4,'d','out',[1,3],5,'d');
+c=call("ext3f","yes",1,"c",n,2,"i",a,3,"d",b,4,"d","out",[1,3],5,"d");
 if norm(c-(sin(a)+cos(b)))> %eps then bugmes();quit;end
-c=call('ext3f','no',1,'c',n,2,'i',a,3,'d',b,4,'d','out',[1,3],5,'d');
+c=call("ext3f","no",1,"c",n,2,"i",a,3,"d",b,4,"d","out",[1,3],5,"d");
 if norm(c-(a+b)) > %eps then bugmes();quit;end
 //===========================================================
-//Example #4
-//===========================================================
-a=[1,2,3];b=[4,5,6];n=3;yes='yes';
-c=call('ext4f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');
-if norm(c-(sin(a)+cos(b))) > %eps then bugmes();quit;end
-yes='no';
-c=call('ext4f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');
-if norm(c-(a+b)) > %eps then bugmes();quit;end
-//clear yes  --> undefined variable : yes
-//===========================================================
-//Example #5
-//===========================================================
-// reading vector a in scilab internal stack
-a=[1,2,3];b=[2,3,4];
-c=call('ext5f',b,1,'d','out',[1,3],2,'d');
-if norm(c-(a+2*b)) > %eps then bugmes();quit;end
-//===========================================================
-//Example #6
-//===========================================================
-//reading  vector with name='a' in scilab internal stack
-a=[1,2,3];b=[2,3,4];
-c=call('ext6f','a',1,'c',b,2,'d','out',[1,3],3,'d');
-if norm(c-(a+2*b)) > %eps then bugmes();quit;end
-//===========================================================
-//Example #7
-//===========================================================
-//creating vector c in scilab internal stack
-clear c;
-a=[1,2,3]; b=[2,3,4];
-//c does not exist (c made by ext7f)
-c1=call('ext7f',a,1,'d',b,2,'d','out',2);
-if norm(c1-b) > %eps then bugmes();quit;end
-//c now exists
-if norm(c-(a+2*b)) > %eps then bugmes();quit;end
-//d exists
-if d<>"test" then bugmes();quit;end
-//===========================================================
 //Example #8
 //===========================================================
 //call ext8f argument function with dynamic link
-yref=ode([1;0;0],0,[0.4,4],'ext8f');
+yref=ode([1;0;0],0,[0.4,4],"ext8f");
 //===========================================================
 //Example #9
 //===========================================================
 //passing a parameter to ext9f routine by a list:
 param=[0.04,10000,3d+7];
-y=ode([1;0;0],0,[0.4,4],list('ext9f',param));
-if norm(y-yref) > 10000*%eps then bugmes();quit;end
-//===========================================================
-//Example #10
-//===========================================================
-//Passing a parameter to argument function of ode
-param=[0.04,10000,3d+7];
-y=ode([1;0;0],0,[0.4,4],'ext10f');
-//param must be defined as a scilab variable upon calling ode
+y=ode([1;0;0],0,[0.4,4],list("ext9f",param));
 if norm(y-yref) > 10000*%eps then bugmes();quit;end
 //===========================================================
 //Example #11
@@ -100,8 +55,8 @@ if norm(y-yref) > 10000*%eps then bugmes();quit;end
 //sharing common data
 a=1:10;
 n=10;a=1:10;
-call('ext11f',n,1,'i',a,2,'r','out',2);  //loads b with a
-c=call('ext12f',n,1,'i','out',[1,10],2,'r');  //loads c with b
+call("ext11f",n,1,"i",a,2,"r","out",2);  //loads b with a
+c=call("ext12f",n,1,"i","out",[1,10],2,"r");  //loads c with b
 if norm(c-a) > %eps then bugmes();quit;end
 //===========================================================
 chdir(curPath);