Add "load" function
[scilab.git] / scilab / modules / atoms / macros / atomsAutoload.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2009 - DIGITEO - Pierre MARECHAL <pierre.marechal@scilab.org>
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 // End user function
11
12 // Load the toolboxes that are marked "autoload"
13
14 function result = atomsAutoload()
15         
16         // Check input parameters
17         // =========================================================================
18         rhs = argn(2);
19         if rhs > 0 then
20                 error(msprintf(gettext("%s: Wrong number of input arguments: %d expected.\n"),"atomsAutoload",0))
21         end
22         
23         // Get the list of packages to load
24         // =========================================================================
25         packages = atomsGetAutoload();
26         
27         // Libraries to resume
28         // =========================================================================
29         libs_resume = [];
30         
31         // Get the list of lib [before]
32         // =====================================================================
33         libs_before = librarieslist();
34         
35         // Load the wanted packages
36         // =========================================================================
37         result = atomsLoad(packages(:,1),packages(:,2));
38         
39         // Get the list of lib [after]
40         // =====================================================================
41         libs_after = librarieslist();
42         
43         // Loop on libs_after
44         // =====================================================================
45         for i=1:size(libs_after,"*")
46                 
47                 if find(libs_after(i) == libs_before) == [] then
48                         libs_resume = [ libs_resume ; libs_after(i) ];
49                 end
50         end
51         
52         // If libs_resume is empty, the job is done
53         // =========================================================================
54         if isempty(libs_resume) then
55                 return;
56         end
57         
58         // Build the resume cmd
59         // =========================================================================
60         
61         resume_cmd = "[";
62         
63         for i=1:size(libs_resume,"*")
64                 resume_cmd = resume_cmd + libs_resume(i);
65                 if i<size(libs_resume,"*") then
66                         resume_cmd = resume_cmd + ",";
67                 else
68                         resume_cmd = resume_cmd + "] = resume(";
69                 end
70         end
71         
72         for i=1:size(libs_resume,"*")
73                 resume_cmd = resume_cmd + libs_resume(i);
74                 if i<size(libs_resume,"*") then
75                         resume_cmd = resume_cmd + ",";
76                 else
77                         resume_cmd = resume_cmd + ");";
78                 end
79         end
80         
81         // Exec the resume cmd
82         // =========================================================================
83         execstr(resume_cmd,"errcatch");
84         
85 endfunction