04652c23185a35585c74bc98158b78503d69b4b0
[scilab.git] / scilab / modules / functions / macros / bytecode.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2003-2008 - INRIA - Serge STEER <serge.steer@inria.fr>
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.1-en.txt
9
10 function x=bytecode(f)
11     //returns the function f bytecode array in x
12     //should be hard-coded
13     nsiz=6
14     if type(f)==8 then //bytecode to function
15         u=mopen(TMPDIR+"/%fun.bin","wb");
16         name_x=[673720353 673720360 673720360 673720360 673720360 673720360]
17         mput(int32([name_x  13]),"l",u)
18         mput(f,"l",u)
19         mclose(u)
20         load(TMPDIR+"/%fun.bin")
21     elseif type(f)==13 then //function to bytecode
22         warnMode = warning("query");
23         warning("off");
24         save(TMPDIR+"/%fun.bin",f)
25         warning(warnMode);
26         I=fileinfo(TMPDIR+"/%fun.bin");
27         u=mopen(TMPDIR+"/%fun.bin","rb");
28         mgeti(1+nsiz,"i",u);
29         x=mgeti(I(1)-(1+nsiz),"i",u);
30         mclose(u)
31     else
32         error(msprintf(gettext("%s: Wrong type for input argument #%d.\n"),"bytecode",1))
33     end
34 endfunction