fbbaa139d5eed5654668b7ad25d18cb359562e21
[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(name,version)
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 | rhs > 2 then
36                 error(msprintf(gettext("%s: Wrong number of input argument: %d to %d expected.\n"),"atomsGetLoadedPath",1,2));
37         end
38         
39         // Check input parameters type
40         // =========================================================================
41         
42         if type(name) <> 10 then
43                 error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsGetLoadedPath",1));
44         end
45         
46         if rhs>1 &  (~isempty(version)) & type(version)<>10  then
47                 error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsGetLoadedPath",2));
48         end
49         
50         // name and version must have the same size
51         // =========================================================================
52         
53         if rhs>1 & version<>[] & or(size(name)<>size(version)) then
54                 error(msprintf(gettext("%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"),"atomsGetLoadedPath",1,2));
55         end
56         
57         // Value of version if not precised
58         // =========================================================================
59         
60         if rhs < 2 then
61                 version = [];
62         end
63         
64         // Get the list of installed packages
65         // =========================================================================
66         packages = atomsGetLoaded();
67         
68         // Loop on name
69         // =========================================================================
70         
71         for i=1:size(name,"*")
72                 
73                 if isempty(version) then
74                         // Just check the name
75                         res(i) = or(packages(:,1) == name(i));
76                         
77                 else
78                         // Filter on names
79                         packages_version = packages( find(packages(:,1) == name(i)) , 2 );
80                         
81                         // Check if the wanted version is present$
82                         res(i) = or(packages_version == version(i) );
83                 end
84                 
85                 if res(i) then
86                         path(i) = packages( find(packages(:,1) == name(i)) , 4 )
87                 else
88                         path(i) = "";
89                 end
90                 
91         end
92         
93         // Reshape the matrix [path]
94         // =========================================================================
95         path = matrix(path,size(name));
96         
97 endfunction