Xcos blocks: rewrite fromws_c to C++
[scilab.git] / scilab / modules / scicos / macros / scicos_utils / scicos_workspace_init.sci
1 //  Scicos
2 //
3 //  Copyright (C) INRIA - METALAU Project <scicos@inria.fr>
4 //
5 // This program is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation; either version 2 of the License, or
8 // (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 //
19 // See the file ./license.txt
20 //
21 //
22 function scicos_workspace_init()
23     //preserve all variables of type struct having a "time" and a "value"
24     //field in temporary binary files
25     path=TMPDIR+"/Workspace/"
26     mkdir(path);
27
28
29     //prepare the fromworkspace stuff We need to store all variables of
30     //type struct which have 2 fields "values" and "time". these variables
31     //are stored into Scilab binary files whose name are the variable names
32     //and which contain 2 variables "x" and "t"
33     //
34     prt=funcprot(),funcprot(0)
35     varnames = who("get");
36     //varnames = varnames(1:$-predef()+1);  //** exclude protected variables
37     protected = ["ans" "%e" "%eps" "%fftw" "%gui" "%i" "%inf" "%io" "%nan" "%pi" "%s" "%z" "%tk" "PWD" "SCI" "SCIHOME" "TMPDIR" "home" "workingDirectory" "workingfiles"];
38     varnames(members(varnames, protected) <> 0) = [];
39     for var=varnames'
40         v=evstr(var);
41         if typeof(v)=="st" then
42             fn=fieldnames(v);
43             if and(fn==["values";"time"] | fn==["time";"values"]) then
44                 if execstr("x=v.values","errcatch")==0 then
45                     if execstr("t=v.time","errcatch") ==0 then
46                         execstr("save("""+path+var+""",""x"",""t"")");
47                     end
48                 end
49             end
50         end
51     end
52     funcprot(prt)
53 endfunction