STRING_V2 => string
[scilab.git] / scilab / modules / string / macros / evstr.sci
1 function [%val,%ierr]=evstr(%str)
2 // Copyright INRIA
3 [lhs,rhs]=argn(0)
4 %val=[]
5 select type(%str)
6  case 10 then // matrix of character strings
7     for %l=1:size(%str,'r')
8       %t1(%l)=strcat(%str(%l,:),',')+';'
9     end
10     %t1(1)='%val=['+%t1(1);
11     %t1($)=part(%t1($),1:length(%t1($))-1)+']'
12     if lhs==2 then
13       %ierr=execstr(%t1,'errcatch')
14     else
15       execstr(%t1)
16     end
17  case 15 then // list
18     %sexp=%str(2),
19     %nstr=prod(size(%sexp)); %=list();
20     if lhs==2 then
21       for %k=1:%nstr,
22         [%w,%ierr]=evstr(%sexp(%k)),
23         %(%k)=%w
24         if %ierr<>0 then %val=[];return;end
25       end,
26       [%val,%ierr]=evstr(%str(1))
27     else
28       for %k=1:%nstr, %(%k)=evstr(%sexp(%k)),end,
29       %val=evstr(%str(1))
30     end
31  case 1 then // real or complex constant matrix
32    %val=%str
33    %ierr=0
34 else 
35    error(msprintf(gettext("%s: Wrong type for first input argument: Matrix of strings or list expected.\n"),"evstr"));
36 end
37 endfunction