b0fd63e7bb1070355acac6dca68f4d7b348dedc6
[scilab.git] / scilab / modules / m2sci / macros / kernel / getvar2sci.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) ???? - INRIA - Scilab
3 //
4 // Copyright (C) 2012 - 2016 - Scilab Enterprises
5 //
6 // This file is hereby licensed under the terms of the GNU GPL v2.0,
7 // pursuant to article 5.3.4 of the CeCILL v.2.1.
8 // This file was originally licensed under the terms of the CeCILL v2.1,
9 // and continues to be available under such terms.
10 // For more information, see the COPYING file which you should have received
11 // along with this program.
12
13 function [sci_equiv]=getvar2sci(var,lhslist)
14     // Translate the named variable acquisition
15
16     // Global variable for M2SCI
17     global("varslist")
18
19     rhs=argn(2)
20     if rhs<>2 then
21         error(gettext("Wrong number of inputs."))
22     end
23
24     // Search variable name in variable name table
25     [boolval,index]=isdefinedvar(var)
26     varname=var.name
27
28     // Variable is not defined yet
29     if ~boolval then
30         scinam=varname
31
32         // If Matlab variable name is a function name in Scilab
33         if funptr(varname)<>0 then
34             scinam="%"+varname
35         end
36
37         // Undefined variable may be a M-file or a global variable
38         // Check if a corresponding M-file exists here
39         if isanmfile(varname) then
40             // A M-file without parameter
41             if verbose_mode<0 then
42                 m2sci_info(msprintf(gettext("L.%d: Unknown variable %s is a M-file."),nblines,varname),-1);
43             end
44             sci_equiv=Funcall(varname,size(lhslist),list(),lhslist)
45         elseif exists("sci_"+varname)==1 then
46             // A translated function without parameter
47             if verbose_mode<0 then
48                 m2sci_info(msprintf(gettext("L.%d: Unknown variable %s is a M-file (sci_%s exists)."),nblines,varname,varname),-1);
49             end
50             sci_equiv=Funcall(varname,size(lhslist),list(),lhslist)
51         elseif or(varname==["i","j"]) then
52             if verbose_mode<0 then
53                 m2sci_info(msprintf(gettext("Variable %s supposed to be the Imaginary unit."),varname),-1);
54             end
55             sci_equiv=Variable("%i",Infer(list(1,1),Type(Double,Complex)))
56         else
57             // Try to find what is 'varname'
58             sci_equiv=get_unknown(varname,lhslist)
59             if verbose_mode<0 then
60                 m2sci_info(msprintf(gettext("L.%d: Unknown variable %s."),nblines,varname),-1);
61             end
62         end
63     else
64         sci_equiv=Variable(varname,Infer(varslist(index).dims,varslist(index).type))
65     end
66 endfunction