getf is obsolete, see exec
Allan CORNET [Wed, 23 Sep 2009 11:38:23 +0000 (13:38 +0200)]
26 files changed:
scilab/CHANGES_5.2.X
scilab/RELEASE_NOTES_5.2.X
scilab/bin/scilab
scilab/modules/console/src/c/dropFiles.c
scilab/modules/core/tests/nonreg_tests/bug_4077.dia.ref
scilab/modules/core/tests/nonreg_tests/bug_4077.tst
scilab/modules/core/tests/unit_tests/comment.dia.ref
scilab/modules/core/tests/unit_tests/comment.tst
scilab/modules/differential_equations/demos/dae/dae2/pendg1_gateway.sce
scilab/modules/elementary_functions/macros/GLoad.sci
scilab/modules/functions/help/en_US/getf.xml
scilab/modules/functions/macros/genlib_old.sci
scilab/modules/functions/sci_gateway/c/sci_getf.c
scilab/modules/functions/src/c/LibScilab_Import.def
scilab/modules/functions/tests/nonreg_tests/bug_1469.dia.ref [new file with mode: 0644]
scilab/modules/functions/tests/nonreg_tests/bug_1469.tst
scilab/modules/functions/tests/unit_tests/getf.dia.ref
scilab/modules/functions/tests/unit_tests/getf.tst
scilab/modules/graphics/demos/contourf.dem
scilab/modules/interpolation/help/pt_BR/linear_interpn.xml
scilab/modules/m2sci/macros/translatepaths.sci
scilab/modules/scicos/demos/scicos.dem
scilab/modules/scicos/demos/scicos_learn.sci
scilab/modules/scicos/macros/scicos_scicos/SaveasInterfFunc_.sci
scilab/modules/scicos/macros/scicos_scicos/do_addnew.sci
scilab/modules/scicos/macros/scicos_utils/create_palette.sci

index 6dcdff8..b6a7543 100644 (file)
@@ -101,6 +101,8 @@ Core functions:
      
 * sethomedirectory is obsolete (see home). 
 
+* getf is obsolete (see exec).
+
 fileio functions:
 =================
 
@@ -236,15 +238,14 @@ Optimization:
  - Created fminsearch optimization function
  - Added examples in the help for optim
  
-Linear algebra
-=============
+Linear algebra:
+===============
  - Clarified documentation for lu function.
 
-elementary functions
-=============
+elementary functions:
+=====================
  - 'sort' is obsolete. see 'gsort'
 
-
 Bug fixes:
 ==========
 
index 931371d..dcd4b0e 100644 (file)
@@ -3,10 +3,12 @@
 
 Known incompatibilities:
 
-- Fonction "figure": when setting the size of the figure using the "Position" 
+- Function "figure": when setting the size of the figure using the "Position" 
   property with a matrix such as [x y width height], the values of width and 
   height no more set the window size itself but the size of the virtual graphics
   window (the part of the figure which contains uicontrols and graphics) as if
   the user sets the axes_size property of a figure.
 
-- 'sort' is obsolete. see 'gsort'
\ No newline at end of file
+- 'sort' is obsolete. see 'gsort'.
+
+- 'getf' is obsolete. see 'exec'.
\ No newline at end of file
index 8fe7a89..013eb55 100755 (executable)
@@ -573,7 +573,7 @@ do_compile()
        rm -f report
        name=`basename $1 .sci`
        echo generating $name.bin
-       echo "predef();getf('$name.sci');save('$name.bin');quit"\
+       echo "predef();exec('$name.sci');save('$name.bin');quit"\
              | $SCILABBIN -ns -nwni | sed 1,8d 1>report 2>&1
        if (grep error report 1> /dev/null  2>&1);
        then cat report;echo " "
index 8f2b8c9..be2c8cd 100644 (file)
@@ -36,7 +36,7 @@
 #define FORMAT_BIN_SCE_EXTENSION_FILES "load('%s');"
 #define FORMAT_GRAPH_GRAPHB_EXTENSION_FILES "edit_graph('%s');"
 #define FORMAT_COS_COSF_EXTENSION_FILES "scicos('%s');"
-#define FORMAT_SCI_EXTENSION_FILES "exec('%s');" /* "getf('%s');" */
+#define FORMAT_SCI_EXTENSION_FILES "exec('%s');"
 #define FORMAT_SCE_TST_EXTENSION_FILES "exec('%s');"
 #define FORMAT_SCG_EXTENSION_FILES "xload('%s');"
 #define FORMAT_UNKNOW_EXTENSION_FILES "disp(gettext('Unknown file type : %s\n'));"
index c2f6370..3d90cb0 100644 (file)
@@ -11,6 +11,7 @@
 //
 // <-- Short Description -->
 // problem with getf and try
+warning('off');
 mputl(['function r=circe()'
 '  for j=1,end'
 '  try b=0,end'
@@ -18,3 +19,4 @@ mputl(['function r=circe()'
 'endfunction'],TMPDIR+'/circe.sci');
 for i=1,getf(TMPDIR+'/circe.sci'),end
 if type(circe)<>13 then bugmes();quit;end
+warning('on');
index 31ee4ed..15987cc 100644 (file)
@@ -12,6 +12,7 @@
 //
 // <-- Short Description -->
 // problem with getf and try
+warning('off');
 mputl(['function r=circe()'
 '  for j=1,end'
 '  try b=0,end'
@@ -19,4 +20,4 @@ mputl(['function r=circe()'
 'endfunction'],TMPDIR+'/circe.sci');
 for i=1,getf(TMPDIR+'/circe.sci'),end
 if type(circe)<>13 then pause,end
-
+warning('on');
index 06ad429..f7df45c 100644 (file)
@@ -218,6 +218,7 @@ function a=foo
 endfunction
 a=foo();
 if a<>15 then bugmes();quit;end
+warning('off');
 //with  getf
 t=['function a=foo'
   'a=0;k=0;//initialization'
@@ -259,6 +260,7 @@ if a<>15 then bugmes();quit;end
 getf(TMPDIR+'/foo.sci')
 a=foo();
 if a<>15 then bugmes();quit;end
+warning('on');
 //with macr2lst
 //first define an utilitary function
 function [C,L,lc]=getcomments(lst,lc)
index 41787aa..d94e625 100644 (file)
@@ -235,6 +235,7 @@ endfunction
 a=foo();
 if a<>15 then pause,end
 
+warning('off');
 //with  getf
 t=['function a=foo'
   'a=0;k=0;//initialization'
@@ -279,6 +280,7 @@ if a<>15 then pause,end
 getf(TMPDIR+'/foo.sci')
 a=foo();
 if a<>15 then pause,end
+warning('on');
 
 //with macr2lst
 
index 7eb3c1a..a441519 100644 (file)
@@ -9,11 +9,11 @@
 // Sliding pendulum, curve #1
 //
 
-getf("SCI/demos/simulation/dae/dae2/pendg.sci")
-getf("SCI/demos/simulation/dae/dae2/pendc1.sci")
+exec("SCI/demos/simulation/dae/dae2/pendg.sci")
+exec("SCI/demos/simulation/dae/dae2/pendc1.sci")
 
-getf('SCI/demos/demos_lib/demo_message.sci');
-getf('SCI/demos/demos_lib/demo_run.sci');
+exec('SCI/demos/demos_lib/demo_message.sci');
+exec('SCI/demos/demos_lib/demo_run.sci');
 
 demo_message('SCI/demos/simulation/dae/dae2/pendg1_1.sce');
 
index e566102..bf62c63 100644 (file)
@@ -17,7 +17,7 @@ function GLoad(name)
                break;
        end
        select name1
-               case "sci" then getf(name),
+               case "sci" then exec(name),
                case "sce" then exec(name),
                case "scg" then xload(name),
                case "bin" then load(name),
index a33bced..12e2f40 100644 (file)
  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
  *
  -->
-<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" version="5.0-subset Scilab" xml:lang="fr" xml:id="getf">
+<refentry version="5.0-subset Scilab" xml:id="getf" xml:lang="en"
+          xmlns="http://docbook.org/ns/docbook"
+          xmlns:xlink="http://www.w3.org/1999/xlink"
+          xmlns:svg="http://www.w3.org/2000/svg"
+          xmlns:ns5="http://www.w3.org/1999/xhtml"
+          xmlns:mml="http://www.w3.org/1998/Math/MathML"
+          xmlns:db="http://docbook.org/ns/docbook">
   <info>
-    <pubdate>$LastChangedDate$</pubdate>
+    <pubdate>$LastChangedDate: 2008-03-26 08:50:39 +0000 (mer, 26 mar 2008)
+    $</pubdate>
   </info>
+
   <refnamediv>
     <refname>getf</refname>
-    <refpurpose> chargement de fonctions à partir d'un fichier  </refpurpose>
+
+    <refpurpose>defining a function from a file</refpurpose>
   </refnamediv>
+
   <refsynopsisdiv>
-    <title>Séquence d'appel</title>
+    <title>Calling Sequence</title>
+
     <synopsis>getf(file-name [,opt])</synopsis>
   </refsynopsisdiv>
+
   <refsection>
-    <title>Paramètres</title>
+    <title>Parameters</title>
+
     <variablelist>
       <varlistentry>
         <term>filename</term>
+
         <listitem>
-          <para>chaîne de caractères</para>
+          <para>Scilab string.</para>
         </listitem>
       </varlistentry>
+
       <varlistentry>
         <term>opt</term>
+
         <listitem>
-          <para>chaîne de caractères optionnelle</para>
-              <variablelist>
-                <varlistentry>
-                  <term>"c"</term>
-                  <listitem>
-                    <para>les fonctions sont "compilées"  pour accélérer leur exécution (par défaut).</para>
-                  </listitem>
-                </varlistentry>
-                
-                <varlistentry>
-                  <term>"n"</term>
-                  <listitem>
-                    <para>les fonctions ne sont pas "compilées".</para>
-                  </listitem>
-                </varlistentry>
-                
-                <varlistentry>
-                  <term>"p"</term>
-                  <listitem>
-                    <para>les fonctions sont "compilées" et préparées pour les statistiques d'appel (voir <link linkend="profile">profile</link>).</para>
-                  </listitem>
-                </varlistentry>
-            </variablelist>
-            </listitem>
-          </varlistentry>
+          <para>optional character string</para>
+
+          <variablelist>
+            <varlistentry>
+              <term>"c"</term>
+
+              <listitem>
+                <para>loaded functions are "compiled" to be more efficient
+                (default)</para>
+              </listitem>
+            </varlistentry>
+
+            <varlistentry>
+              <term>"n"</term>
+
+              <listitem>
+                <para>loaded functions are not "compiled"</para>
+              </listitem>
+            </varlistentry>
+
+            <varlistentry>
+              <term>"p"</term>
+
+              <listitem>
+                <para>loaded functions are "compiled" and prepared for
+                profiling (see profile)</para>
+              </listitem>
+            </varlistentry>
+          </variablelist>
+        </listitem>
+      </varlistentry>
     </variablelist>
   </refsection>
+
   <refsection>
     <title>Description</title>
-    <para>
-    Charge une ou plusieurs fonctions (voir <link linkend="functions">functions</link>)
-    définies dans le fichier <literal>'file-name'</literal>.
-    La chaîne de caractères <literal>opt='n'</literal>
-    signifie que les fonctions ne sont pas compilées
-    (pré-interprétées) au chargement. Cela peut être utile
-    en phase de mise au point (voir <link linkend="comp">comp</link>). Par défaut
-    les fonctions sont compilées
-    (i.e. <literal>opt='c'</literal> est utilisée).
-  </para>
-    <para>
-    Dans le fichier chaque fonction doit commencer par une ligne de la forme :
-  </para>
-    <programlisting><![CDATA[ 
+    
+    <para> This function is obsolete. see 'exec' </para>
+
+    <para>loads one or several functions (see <literal>functions</literal>)
+    defined in the file <literal>'file-name'</literal>. The string
+    <literal>opt='n'</literal> means that the functions are not compiled
+    (pre-interpreted) when loaded. This can be useful for some debugging
+    purpose (see <literal>comp</literal>). By default, functions are compiled
+    when loaded (i.e. <literal>opt='c'</literal> is used).</para>
+
+    <para>In the file a function must begin by a "syntax definition" line as
+    follows:</para>
+
+    <programlisting>
+
 function [y1,...,yn]=foo(x1,...,xm)
- ]]></programlisting>
-    <para>
-      les lignes suivantes contiennent une suite d'instructions Scilab.
-    </para>
-    <para>
-      La "ligne de définition" donne la syntaxe
-      d'appel complète de la fonction.  Les <literal>yi</literal>
-      sont les variables de sortie, calculées à partir des
-      variables d'entrée <literal>xi</literal> et des variables
-      existantes dans le contexte appelant lorsque la fonction est
-      exécutée. On peut utiliser éventuellement un
-      sous-ensemble de ces variables d'entrée et de sortie.
-    </para>
-    <para>
-      Il est possible d'écrire plusieurs fonctions dans un
-      seul fichier. Une fonction est alors terminée par le
-      mot-clé <link linkend="function">endfunction</link> ou par la ligne de
-      déclaration de la fonction suivante (ancienne convention) ou
-      par la fin du fichier.
-    </para>
-    <para>L'usage de <link linkend="getf">getf</link> ne permet pas gérer
-    correctement les fichiers contenant des fonctions définies a
-    l'intérieur d'une fonction. Le chargement de tels fichiers ne
-    peut se faire que par l'intermédiaire de la fonction
-    <link linkend="exec">exec</link>. </para>
-    <para><link linkend="getf">getf</link> est une fonction obsolete. Le chargement des
-    fonctions doit être réalisé en utilisant la fonction
-    <link linkend="exec">exec</link>. A noter que dans ce cas l'usage des mots-clé
-    <link linkend="function">endfunction</link> est impératif. L'usage de
-    <link linkend="exec">exec</link> sous entend l'option <literal>opt=='c'</literal>.</para>
-   <para>Pour préparer la fonction pour la collecte des
-   statistiques d'appel, il faut désormais utiliser la fonction <link linkend="add_profiling">add_profiling</link>.</para>
+   
+    </programlisting>
+
+    <para>The following lines contain a sequence of scilab
+    instructions.</para>
+
+    <para>The "syntax definition" line gives the "full" calling syntax of this
+    function. The <literal>yi</literal> are output variables calculated as
+    functions of input variables <literal>xi</literal> and variables existing
+    in Scilab when the function is executed. Shorter input or output argument
+    list may be used.</para>
+
+    <para>Many functions may be written in the same file. A function is
+    terminated by an <literal>endfunction</literal> keyword. For compatibility
+    with previous versions a function may also be terminated by the following
+    <literal>function</literal> keyword or the <literal>EOF</literal> mark.
+    For that reason it is not possible to load function containing nested
+    function definition using the <literal>getf</literal> function.</para>
+
+    <para><literal>getf</literal> is an obsolete way for loading functions
+    into scilab from a file. It is replaced by the function <link
+    linkend="exec">exec</link>. Note that functions in a file should be
+    terminated by an <literal>endfunction</literal> keyword. The
+    <literal>exec</literal> function supposes
+    <literal>opt=='c'</literal>.</para>
+
+    <para>To prepare a function for profiling please use the <link
+    linkend="add_profiling">add_profiling</link> function.</para>
   </refsection>
+
   <refsection>
-    <title>Exemples</title>
-    <programlisting role="example"><![CDATA[ 
+    <title>Examples</title>
+
+    <programlisting role="example">
+
 getf('SCI/modules/graphics/macros/plot.sci')
 
 getf SCI/modules/graphics/macros/plot.sci
- ]]></programlisting>
+  </programlisting>
   </refsection>
+
   <refsection>
-    <title>Voir Aussi</title>
+    <title>See Also</title>
+
     <simplelist type="inline">
-      <member>
-        <link linkend="functions">functions</link>
-      </member>
-      <member>
-        <link linkend="function">function</link>
-      </member>
-      <member>
-        <link linkend="genlib">genlib</link>
-      </member>
-      <member>
-        <link linkend="getd">getd</link>
-      </member>
-      <member>
-        <link linkend="exec">exec</link>
-      </member>
-      <member>
-        <link linkend="edit">edit</link>
-      </member>
-      <member>
-        <link linkend="comp">comp</link>
-      </member>
-      <member>
-       <link linkend="add_profiling">add_profiling</link>
-      </member>
+      <member><link linkend="functions">functions</link></member>
+
+      <member><link linkend="function">function</link></member>
+
+      <member><link linkend="genlib">genlib</link></member>
+
+      <member><link linkend="getd">getd</link></member>
+
+      <member><link linkend="exec">exec</link></member>
+
+      <member><link linkend="edit">edit</link></member>
+
+      <member><link linkend="comp">comp</link></member>
+
+      <member><link linkend="add_profiling">add_profiling</link></member>
     </simplelist>
   </refsection>
-</refentry>
+</refentry>
\ No newline at end of file
index b15a90e..5adf575 100644 (file)
@@ -71,7 +71,7 @@ function genlib_old(nam,path,force,verbose,names)
       if verbose then 
        mprintf(gettext("%s: %s file compilation forced\n"),"genlib_old",names(i)+".sci");
       end
-      // getf sci file and save functions it defines as a .bin file
+      // exec sci file and save functions it defines as a .bin file
       getsave(scif);
     end  
   else
@@ -133,7 +133,7 @@ function getsave(fl)
   prot=funcprot();funcprot(0)
   nold=size(who('get'),'*')
 
-  ierr=execstr('getf(fl)','errcatch') // get functions defined in file 'fl'
+  ierr=execstr('exec(fl)','errcatch') // get functions defined in file 'fl'
   if ierr<>0 then
     clear ierr
     mprintf(gettext("%s: Warning: Error in file %s : %s. File ignored\n"),"genlib_old",fl,lasterror())
index 47198ba..54a34e1 100644 (file)
@@ -9,13 +9,27 @@
  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
  *
  */
-
+#include <string.h>
 #include "gw_functions.h"
+#include "warningmode.h"
+#include "sciprint.h"
+#include "localization.h"
 /*--------------------------------------------------------------------------*/
 extern int C2F(intgetf)(); /* fortran */
 /*--------------------------------------------------------------------------*/
 int C2F(sci_getf)(char *fname,unsigned long fname_len)
 {
+       if (getWarningMode())
+       {
+               /* recursion calls of getf by deff */
+               if (strcmp(fname,"getf") == 0)
+               {
+                       sciprint(_("WARNING: Function %s is obsolete.\n"), fname);
+                       sciprint(_("WARNING: Please use %s instead.\n"), "exec");
+                       sciprint(_("WARNING: This function will be permanently removed in Scilab %s.\n"), "5.3");
+               }
+       }
+
        C2F(intgetf)();
        return 0;
 }
diff --git a/scilab/modules/functions/tests/nonreg_tests/bug_1469.dia.ref b/scilab/modules/functions/tests/nonreg_tests/bug_1469.dia.ref
new file mode 100644 (file)
index 0000000..b52c5d4
--- /dev/null
@@ -0,0 +1,358 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2006-2008 - INRIA - Serge STEER <serge.steer@inria.fr>
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 1469 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=1469
+//
+// <-- Short Description -->
+//    Comments modify line numbering in functions
+//
+//    What you don't believe?
+//
+//    Try this:
+//
+//    1st test, no comment in line 1:
+//
+//    -->function foo1()
+//    -->  function foo3
+//    -->  endfunction
+//    -->  disp("line a");
+//    -->  disp("line b");
+//    -->  disp("line c");
+//    -->endfunction
+//
+//    -->setbpt("foo1",[3,4])
+//
+//    -->foo1()
+//    Stop after row     3 in function foo1 :
+// ...
+//test of line numbering in  functions, handling initial comments
+// ================ Test 1 =====================================================
+function foo,endfunction
+L=macr2lst(foo);
+R1=L(4)(1)=='15'&size(L)==6
+ R1  =
+  T  
+if ~R1 then bugmes();quit;end
+clear foo;
+// ================ Test 2 =====================================================
+function foo,,endfunction
+L=macr2lst(foo);
+R2=L(4)(1)=='15'&size(L)==6
+ R2  =
+  T  
+if ~R2 then bugmes();quit;end
+clear foo;
+// ================ Test 3 =====================================================
+function foo(),endfunction
+L=macr2lst(foo);
+R3=L(4)(1)=='15'&size(L)==6
+ R3  =
+  T  
+if ~R3 then bugmes();quit;end
+clear foo;
+// ================ Test 4 =====================================================
+function foo(),a=1,endfunction
+L=macr2lst(foo);
+R4=L(4)(1)=='6'&size(L)==8
+ R4  =
+  T  
+if ~R4 then bugmes();quit;end
+clear foo;
+// ================ Test 5 =====================================================
+function foo
+endfunction
+L=macr2lst(foo);
+R5=L(4)(1)=='15'&size(L)==7
+ R5  =
+  T  
+if ~R5 then bugmes();quit;end
+clear foo;
+// ================ Test 6 =====================================================
+function foo,
+endfunction
+L=macr2lst(foo);
+R6=L(4)(1)=='15'&size(L)==7
+ R6  =
+  T  
+if ~R6 then bugmes();quit;end
+clear foo;
+// ================ Test 7 =====================================================
+function foo//ZZZZ
+endfunction
+L=macr2lst(foo);
+R7=L(4)(1)=='31'&L(5)(1)=='15'&size(L)==8
+ R7  =
+  T  
+if ~R7 then bugmes();quit;end
+clear foo;
+// ================ Test 8 =====================================================
+function foo,//ZZZZ
+endfunction
+L=macr2lst(foo);
+R8=L(4)(1)=='31'&L(5)(1)=='15'&size(L)==8
+ R8  =
+  T  
+if ~R8 then bugmes();quit;end
+clear foo;
+// ================ Test 9 =====================================================
+function foo
+//ZZZZ
+endfunction
+L=macr2lst(foo);
+R9=L(4)(1)=='15'&L(5)(1)=='31'&size(L)==9
+ R9  =
+  T  
+if ~R9 then bugmes();quit;end
+clear foo;
+// ================ Test 10 ====================================================
+function foo,//ZZZZ
+  a=1
+endfunction
+L=macr2lst(foo);
+R10=L(4)(1)=='31'&L(5)(1)=='15'&L(6)(1)=='6'&size(L)==11
+ R10  =
+  T  
+if ~R10 then bugmes();quit;end
+clear foo;
+// ================ Test 11 ====================================================
+function loc=foo,[l,w]=where(),loc=l(1),endfunction
+R11= and(foo()==1)
+ R11  =
+  T  
+if ~R11 then bugmes();quit;end
+clear foo;
+// ================ Test 12 ====================================================
+function loc=foo,//ZZZZ
+  [l,w]=where(),loc=l(1)
+endfunction
+R12= and(foo()==2)
+ R12  =
+  T  
+if ~R12 then bugmes();quit;end
+clear foo;
+// ================ Test 13 ====================================================
+function loc=foo
+//ZZZZ
+  [l,w]=where(),loc=l(1)
+endfunction
+R13= and(foo()==3)
+ R13  =
+  T  
+if ~R13 then bugmes();quit;end
+clear foo;
+// ================ Test 14 ====================================================
+function loc=foo1()
+  [l,w]=where(),loc=l(1)
+  function loc=foo3(loc)
+    [l,w]=where(),loc=[loc,l(1:2)']
+  endfunction
+  [l,w]=where(),loc=[loc,l(1)]
+  loc=foo3(loc)
+endfunction
+R14= and(foo1()==[2,6,2,7])
+ R14  =
+  T  
+if ~R14 then bugmes();quit;end
+clear foo1;
+// ================ Test 15 ====================================================
+function loc=foo1()//ZZZZZZZ
+  [l,w]=where(),loc=l(1)
+  function loc=foo3(loc)
+    [l,w]=where(),loc=[loc,l(1:2)']
+  endfunction
+  [l,w]=where(),loc=[loc,l(1)]
+  loc=foo3(loc)
+endfunction
+L=macr2lst(foo1);
+R15=and(foo1()==[2,6,2,7])&(L(4)(1)=='31')&(L(5)=='15')
+ R15  =
+  T  
+if ~R15 then bugmes();quit;end
+clear foo1;
+// ================ Test 16 ====================================================
+function loc=foo1()
+  //ZZZZZZZ
+  [l,w]=where(),loc=l(1)
+  function loc=foo3(loc)
+    [l,w]=where(),loc=[loc,l(1:2)']
+  endfunction
+  [l,w]=where(),loc=[loc,l(1)]
+  loc=foo3(loc)
+endfunction
+L=macr2lst(foo1);
+R16=and(foo1()==[3,7,2,8])&(L(4)=='15')&(L(5)(1)=='31')
+ R16  =
+  T  
+if ~R16 then bugmes();quit;end
+clear foo1;
+// ================ Test 17 ====================================================
+//pb execution des macros non compilee
+deff('y=foo(a,b,c)','y=a+b+c','n')
+R17=foo('aaa','bbb','cc')=='aaabbbcc'
+ R17  =
+  T  
+if ~R17 then bugmes();quit;end
+clear foo
+// ================ Test 18 ====================================================
+deff('y=foo(a,b,c)',['','y=a+b+c'],'n')
+R18=foo('aaa','bbb','cc')=='aaabbbcc'
+ R18  =
+  T  
+if ~R18 then bugmes();quit;end
+// ================ Test 19 ====================================================
+comp(foo)
+Warning : redefining function: foo                     . Use funcprot(0) to avoid this message
+
+R19=foo('aaa','bbb','cc')=='aaabbbcc'
+ R19  =
+  T  
+if ~R19 then bugmes();quit;end
+clear foo
+// ================ Test 20 ====================================================
+//function definition nested in a or loop!
+z=0;R20=%t
+ R20  =
+  T  
+for k=1:2
+ function y=foo()
+   y=k
+ endfunction
+ L=macr2lst(foo);
+ R20=R20&(L(4)=='15')&(L(5)(1)=='2');
+ z=z+foo();
+end
+R20=R20&z==3
+ R20  =
+  T  
+if ~R20 then bugmes();quit;end
+// ================ Test 21 ====================================================
+//test avec getf
+t=['function foo,//ZZZZ'
+'  a=1'
+'endfunction'];
+mputl(t,TMPDIR+'/foo.sci');
+warning('off');
+getf(TMPDIR+'/foo.sci')
+warning('on');
+L=macr2lst(foo); //getf ignores declaration line comments
+R21=L(4)(1)=='15'&L(5)(1)=='6'&size(L)==10
+ R21  =
+  T  
+if ~R21 then bugmes();quit;end
+clear foo;
+// ================ Test 22 ====================================================
+t=['function foo'
+'//ZZZZ'
+'  a=1'
+'endfunction'];
+mputl(t,TMPDIR+'/foo.sci');
+function foo
+//ZZZZ
+  a=1
+endfunction
+L=macr2lst(foo); //getf ignores declaration line comments
+R22=L(4)(1)=='15'&L(5)(1)=='31'&L(6)(1)=='15'&size(L)==12
+ R22  =
+  T  
+if ~R22 then bugmes();quit;end
+clear foo;
+// ================ Test 23 ====================================================
+function foo()
+  function bar()
+    a=1
+endfunction
+endfunction
+t=fun2string(foo,'foo')
+ t  =
+!function []=foo()  !
+!                   !
+!  function bar()   !
+!                   !
+!      a=1          !
+!                   !
+!  endfunction      !
+!                   !
+!endfunction        !
+if size(t,1)<>5 then bugmes();quit;end
+clear foo
+function foo()
+  function bar()
+    a=1
+ endfunction
+endfunction
+t1=fun2string(foo,'foo')
+ t1  =
+!function []=foo()  !
+!                   !
+!  function bar()   !
+!                   !
+!      a=1          !
+!                   !
+!  endfunction      !
+!                   !
+!endfunction        !
+if or(t<>t1) then bugmes();quit;end
+// ================ Test 24 ====================================================
+function test;endfunction
+L=macr2lst(test)
+ L  =
+       L(1)
+ test   
+       L(2)
+     []
+       L(3)
+     []
+       L(4)
+ 15   
+       L(5)
+ 99   
+       L(6)
+ 15   
+if size(L)<>6 then bugmes();quit;end
+if L(4)<>'15'|L(5)<>'99'| L(6)<>'15' then bugmes();quit;end
index 08a9d00..9571b65 100644 (file)
@@ -4,8 +4,6 @@
 //
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
-
-// <-- NOT FIXED -->
 // <-- Non-regression test for bug 1469 -->
 //
 // <-- Bugzilla URL -->
@@ -239,7 +237,9 @@ t=['function foo,//ZZZZ'
 '  a=1'
 'endfunction'];
 mputl(t,TMPDIR+'/foo.sci');
+warning('off');
 getf(TMPDIR+'/foo.sci')
+warning('on');
 L=macr2lst(foo); //getf ignores declaration line comments
 R21=L(4)(1)=='15'&L(5)(1)=='6'&size(L)==10
 if ~R21 then pause,end
@@ -252,7 +252,7 @@ t=['function foo'
 '  a=1'
 'endfunction'];
 mputl(t,TMPDIR+'/foo.sci');
-getf(TMPDIR+'/foo.sci')
+exec(TMPDIR+'/foo.sci')
 L=macr2lst(foo); //getf ignores declaration line comments
 R22=L(4)(1)=='15'&L(5)(1)=='31'&L(6)(1)=='15'&size(L)==12
 if ~R22 then pause,end
index d118b9e..026f07d 100644 (file)
@@ -5,5 +5,7 @@
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
 funcprot(0);
+warning('off');
 ierr = execstr('getf(''SCI/modules/graphics/macros/plot.sci'');','errcatch');
+warning('on');
 if ierr <> 0 then bugmes();quit;end
index f1aa101..c3a9130 100644 (file)
@@ -5,5 +5,7 @@
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
 funcprot(0);
+warning('off');
 ierr = execstr('getf(''SCI/modules/graphics/macros/plot.sci'');','errcatch');
+warning('on');
 if ierr <> 0 then pause,end
\ No newline at end of file
index e5545ec..08e8933 100644 (file)
@@ -5,7 +5,7 @@
 // This file is distributed under the same license as the Scilab package.
 //
 
-getf('SCI/modules/graphics/demos/peaks.sci');
+exec('SCI/modules/graphics/demos/peaks.sci');
 z=peakit();
 levels=[-6:-1,-logspace(-5,0,10),logspace(-5,0,10),1:8];
   m=size(levels,'*');
index 60da762..04c41a3 100644 (file)
@@ -224,7 +224,7 @@ xselect()
 // exemplo 4 : interpolação trilinear (ver ajuda de splin3d
 //             que tem os mesmos exemplos com
 //             interpolação por spline tricúbico)
-getf("SCI/demos/interp/interp_demo.sci") 
+exec("SCI/demos/interp/interp_demo.sci") 
 func =  "v=(x-0.5).^2 + (y-0.5).^3 + (z-0.5).^2";
 deff("v=f(x,y,z)",func);
 n = 5; 
index cdc36ca..695368e 100644 (file)
@@ -138,7 +138,7 @@ for i=1:size(funpath,1)
     end
     
     tmp_sci_file=pathconvert(TMPDIR)+"tmp_"+fnam+".sci"
-    ierr=execstr("getf(tmp_sci_file)","errcatch");errclear();
+    ierr=execstr("exec(tmp_sci_file)","errcatch");errclear();
     if ierr==0 & strindex(mpath,TMPDIR)==[] then
       txt=[]
       txt=mgetl(scipath)
index cd54898..d0a1bf3 100644 (file)
@@ -123,7 +123,7 @@ while %t do
       if n ==0 then break,end
       dirr=pwd()
       chdir(TMPDIR)
-      if n>4 then err=execstr('getf(''toto.sci'')','errcatch'),
+      if n>4 then err=execstr('exec(''toto.sci'')','errcatch'),
        if err<>0 then 
          x_message('tutorials must be played in order!'),
          break
index 77786a8..aaf0364 100644 (file)
@@ -62,7 +62,7 @@ names=[
     'x_matrix']
 
 for k=1:size(names,'r')
-  getf(get_function_path(names(k)))
+  exec(get_function_path(names(k)))
 end
 
 global %fig_counter
index 7da91ad..4b8b897 100644 (file)
@@ -54,7 +54,7 @@ function SaveasInterfFunc_()
        end
        
        if %path<>[] then 
-         if execstr('getf(%path)','errcatch')<>0 then
+         if execstr('exec(%path)','errcatch')<>0 then
             message([name+': error:'
                      lasterror()])
          end
index 62a35b3..a05d9ab 100644 (file)
@@ -62,7 +62,7 @@ function [scs_m, fct] = do_addnew(scs_m)
     //  message(path+' file, Not found')
     //  return
     //end
-    //if execstr('getf(u)','errcatch')<>0 then
+    //if execstr('exec(u)','errcatch')<>0 then
     //  file('close',u)
     //  message([name + " erroneous function:"; lasterror()])
     //  return
index a223942..1aa7625 100644 (file)
@@ -50,7 +50,7 @@ function [routines,IntFunc] = create_palette(Path)
     lisf = listfiles(Path+'*.sci')
     for i=1:size(lisf,'*')
       fil=lisf(i)
-      ierror=execstr('getf(fil)','errcatch')
+      ierror=execstr('exec(fil)','errcatch')
       if ierror <>0 then
        to_del=[to_del i];
       end