add demos dynamic link
Allan CORNET [Thu, 8 Jan 2009 08:50:10 +0000 (09:50 +0100)]
scilab/modules/dynamic_link/demos/call_c.sce [new file with mode: 0644]
scilab/modules/dynamic_link/demos/call_fortran.sce [new file with mode: 0644]
scilab/modules/dynamic_link/demos/dynamic_link.dem.gateway.sce [new file with mode: 0644]
scilab/modules/dynamic_link/dynamic_link.iss
scilab/modules/dynamic_link/etc/dynamic_link.start

diff --git a/scilab/modules/dynamic_link/demos/call_c.sce b/scilab/modules/dynamic_link/demos/call_c.sce
new file mode 100644 (file)
index 0000000..39e568a
--- /dev/null
@@ -0,0 +1,51 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+//
+
+//           CALLING EXTERNAL C FUNCTION
+
+if haveacompiler() then
+
+
+// we use TMPDIR for compilation 
+       
+  foo=['void foo(double *a,double *b,double *c)';
+     '{ *c = *a + *b; }'  ];
+     
+  mprintf('\n');
+  mprintf(gettext('C Function to call in scilab.\n'));
+  
+  disp(foo);
+       
+if ~c_link('foo') then
+  path = getcwd(); 
+  chdir(TMPDIR); 
+  mputl(foo,'foo.c');
+  
+  mprintf('\n');
+  mprintf(gettext('Call ilib_for_link to build C function.\n'));
+  ilib_for_link(['foo'],'foo.c',[],"c");
+  exec loader.sce ;
+  chdir(path) 
+end    
+
+//Z = X+Y by C function
+X = 5;
+Y = 7;
+mprintf('\n');
+mprintf(gettext('Call C function. Z = X+Y'));
+mprintf('\n');
+mprintf(gettext('with X = %d'), X);
+mprintf('\n');
+mprintf(gettext('with Y = %d'), Y);
+mprintf('\n');
+mprintf("Z = call(''foo'', X, 1, ''d'', Y, 2, ''d'', ''out'', [1,1], 3, ''d'');");
+mprintf('\n');
+Z = call('foo', X, 1, 'd', Y, 2, 'd', 'out', [1,1], 3, 'd');
+mprintf(gettext('result Z = %d'), Z);
+mprintf('\n');
+
+end
\ No newline at end of file
diff --git a/scilab/modules/dynamic_link/demos/call_fortran.sce b/scilab/modules/dynamic_link/demos/call_fortran.sce
new file mode 100644 (file)
index 0000000..1582d49
--- /dev/null
@@ -0,0 +1,54 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+//
+
+if haveacompiler() then
+
+//           CALLING EXTERNAL FORTRAN SUBROUTINE
+
+foof = ['      subroutine foof(a,b,c)';
+        '      double precision  a,b,c';
+        '      c=a+b ';
+        '      return'; '       end'];
+
+  mprintf('\n');
+  mprintf(gettext('Fortran subroutine to call in scilab.\n'));
+  
+  disp(foof);
+
+// we use TMPDIR for compilation 
+       
+if ~c_link('foof') then
+  path = getcwd(); 
+  chdir(TMPDIR); 
+  mputl(foof,'foof.f');
+  
+  mprintf('\n');
+  mprintf(gettext('Call ilib_for_link to build fortran subroutine.\n'));
+  
+  ilib_for_link(['foof'],'foof.f',[],"f");
+  exec loader.sce ;
+  chdir(path) 
+end    
+
+//Z = X+Y by fortran subroutine
+X = 5;
+Y = 7;
+
+mprintf('\n');
+mprintf(gettext('Call Fortran subroutine. Z = X+Y'));
+mprintf('\n');
+mprintf(gettext('with X = %d'), X);
+mprintf('\n');
+mprintf(gettext('with Y = %d'), Y);
+mprintf('\n');
+mprintf("Z = call(''foof'', X, 1, ''d'', Y, 2, ''d'', ''out'', [1,1], 3, ''d'');");
+mprintf('\n');
+Z = call('foof', X, 1, 'd', Y, 2, 'd', 'out', [1,1], 3, 'd');
+mprintf(gettext('result Z = %d'), Z);
+mprintf('\n');
+
+end
\ No newline at end of file
diff --git a/scilab/modules/dynamic_link/demos/dynamic_link.dem.gateway.sce b/scilab/modules/dynamic_link/demos/dynamic_link.dem.gateway.sce
new file mode 100644 (file)
index 0000000..8593e8c
--- /dev/null
@@ -0,0 +1,13 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+//
+
+demopath = get_absolute_file_path("dynamic_link.dem.gateway.sce");
+
+subdemolist = ["call a C function"             , "call_c.sce" ;
+               "call a fortran subroutine"             , "call_fortran.sce" ;];
+
+subdemolist(:,2) = demopath + subdemolist(:,2)
index 0e36463..1734035 100644 (file)
@@ -6,7 +6,7 @@
 ; This file must be used under the terms of the CeCILL.
 ; This source file is licensed as described in the file COPYING, which
 ; you should have received as part of this distribution.  The terms
-; are also available at    
+; are also available at
 ; http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 ;
 ;##############################################################################################################
@@ -47,7 +47,7 @@ Source: modules\{#DYNAMIC_LINK}\macros\buildmacros.sce; DestDir: {app}\modules\{
 Source: modules\{#DYNAMIC_LINK}\macros\buildmacros.bat; DestDir: {app}\modules\{#DYNAMIC_LINK}\macros; Flags: recursesubdirs; Components: {#COMPN_SCILAB}
 Source: modules\{#DYNAMIC_LINK}\macros\cleanmacros.bat; DestDir: {app}\modules\{#DYNAMIC_LINK}\macros; Flags: recursesubdirs; Components: {#COMPN_SCILAB}
 ;
-;Source: modules\{#DYNAMIC_LINK}\demos\*.*; DestDir: {app}\modules\{#DYNAMIC_LINK}\demos; Flags: recursesubdirs; Components: {#COMPN_SCILAB}
+Source: modules\{#DYNAMIC_LINK}\demos\*.*; DestDir: {app}\modules\{#DYNAMIC_LINK}\demos; Flags: recursesubdirs; Components: {#COMPN_SCILAB}
 ;
 Source: modules\{#DYNAMIC_LINK}\examples\*.*; DestDir: {app}\modules\{#DYNAMIC_LINK}\examples; Flags: recursesubdirs; Components: {#COMPN_SCILAB}
 ;
index 5fb0e7d..f632ff8 100644 (file)
@@ -38,5 +38,10 @@ if MSDOS then
   clear findmsvccompiler
 end
 // ====================================================================
+//add demo
+pathdemos = pathconvert(SCI+"/modules/dynamic_link/demos/dynamic_link.dem.gateway.sce",%f,%t);
+add_demo(gettext("Dynamic link"),pathdemos);
+clear pathdemos ;
+// ====================================================================
 clear LCC 
 // ====================================================================