Add license header (string module)
[scilab.git] / scilab / modules / string / macros / evstr.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA - 
3 // 
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at    
8 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
9
10
11 function [%val,%ierr]=evstr(%str)
12
13 [lhs,rhs]=argn(0)
14 %val=[]
15 select type(%str)
16  case 10 then // matrix of character strings
17     for %l=1:size(%str,'r')
18       %t1(%l)=strcat(%str(%l,:),',')+';'
19     end
20     %t1(1)='%val=['+%t1(1);
21     %t1($)=part(%t1($),1:length(%t1($))-1)+']'
22     if lhs==2 then
23       %ierr=execstr(%t1,'errcatch')
24     else
25       execstr(%t1)
26     end
27  case 15 then // list
28     %sexp=%str(2),
29     %nstr=prod(size(%sexp)); %=list();
30     if lhs==2 then
31       for %k=1:%nstr,
32         [%w,%ierr]=evstr(%sexp(%k)),
33         %(%k)=%w
34         if %ierr<>0 then %val=[];return;end
35       end,
36       [%val,%ierr]=evstr(%str(1))
37     else
38       for %k=1:%nstr, %(%k)=evstr(%sexp(%k)),end,
39       %val=evstr(%str(1))
40     end
41  case 1 then // real or complex constant matrix
42    %val=%str
43    %ierr=0
44 else 
45    error(msprintf(gettext("%s: Wrong type for first input argument: Matrix of strings or list expected.\n"),"evstr"));
46 end
47 endfunction