Add "load" function
[scilab.git] / scilab / modules / atoms / macros / atomsIsLoaded.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 // Return %T if a (or several) toolbox has been loaded in this scilab session
13
14 function res = atomsIsLoaded(name,version)
15         
16         rhs = argn(2);
17         res = [];
18         
19         // Check number of input arguments
20         // =========================================================================
21         
22         if rhs < 1 | rhs > 2 then
23                 error(msprintf(gettext("%s: Wrong number of input argument: %d to %d expected.\n"),"atomsIsLoaded",1,2));
24         end
25         
26         // Check input parameters type
27         // =========================================================================
28         
29         if type(name) <> 10 then
30                 error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsIsLoaded",1));
31         end
32         
33         if rhs>1 &  (~isempty(version)) & type(version)<>10  then
34                 error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsIsLoaded",2));
35         end
36         
37         // name and version must have the same size
38         // =========================================================================
39         
40         if rhs>1 & version<>[] & or(size(name)<>size(version)) then
41                 error(msprintf(gettext("%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"),"atomsIsLoaded",1,2));
42         end
43         
44         // Value of version if not precised
45         // =========================================================================
46         
47         if rhs < 2 then
48                 version = [];
49         end
50         
51         // Get the list of installed packages
52         // =========================================================================
53         packages = atomsGetLoaded();
54         
55         // Loop on name
56         // =========================================================================
57         
58         for i=1:size(name,"*")
59                 
60                 if isempty(version) then
61                         // Just check the name
62                         res(i) = or(packages(:,1) == name(i));
63                 
64                 else
65                         // Filter on names
66                         packages_version = packages( find(packages(:,1) == name(i)) , 2 );
67                         
68                         // Check if the wnated version is present$
69                         res(i) = or(packages_version == version(i) );
70                 end
71                 
72         end
73         
74         // Reshape the matrix
75         // =========================================================================
76         res = matrix(res,size(name) );
77         
78 endfunction