ATOMS: homogenize function's profile
[scilab.git] / scilab / modules / atoms / macros / atomsGetLoadedPath.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 // Output argument :
13
14 //   path : . If the toolbox is loaded, path is the path of the loaded toolbox
15 //            otherwise, path = ""
16 //          . Matrix of string (n x 1)
17 //          . mandatory
18
19 function path = atomsGetLoadedPath(packages)
20         
21         // Load Atoms Internals lib if it's not already loaded
22         // =========================================================================
23         if ~ exists("atomsinternalslib") then
24                 load("SCI/modules/atoms/macros/atoms_internals/lib");
25         end
26         
27         rhs         = argn(2);
28         lhs         = argn(1);
29         res         = [];
30         path        = [];
31         
32         // Check number of input arguments
33         // =========================================================================
34         
35         if rhs <> 1 then
36                 error(msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"),"atomsGetLoadedPath",1));
37         end
38         
39         // Check input parameters type
40         // =========================================================================
41         
42         if type(packages) <> 10 then
43                 error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsGetLoadedPath",1));
44         end
45         
46         if size(packages(1,:),"*") > 2 then
47                 error(msprintf(gettext("%s: Wrong size for input argument #%d: mx1 or mx2 string matrix expected.\n"),"atomsGetLoadedPath",1));
48         end
49         
50         // If packages is mx1 matrix, add a 2nd column with empty versions
51         // =========================================================================
52         
53         if size(packages(1,:),"*") == 1 then
54                 packages = [ packages emptystr(size(packages(:,1),"*"),1) ];
55         end
56         
57         // Get the list of installed packages
58         // =========================================================================
59         loadedpackages = atomsGetLoaded();
60         
61         // Loop on name
62         // =========================================================================
63         
64         for i=1:size(packages(:,1),"*")
65                 
66                 name    = packages(i,1);
67                 version = packages(i,2);
68                 
69                 if isempty(version) then
70                         // Just check the name
71                         res(i) = or(loadedpackages(:,1) == name);
72                         
73                 else
74                         // Filter on names
75                         packages_version = loadedpackages( find(loadedpackages(:,1) == name) , 2 );
76                         
77                         // Check if the wanted version is present
78                         res(i) = or(packages_version == version);
79                 end
80                 
81                 if res(i) then
82                         path(i) = loadedpackages( find(loadedpackages(:,1) == name) , 4 )
83                 else
84                         path(i) = "";
85                 end
86                 
87         end
88         
89 endfunction