Atoms 0.2
[scilab.git] / scilab / modules / atoms / macros / atoms_internals / atomsIsPackage.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 // Internal function
11
12 // Return true if the package is a valid package or not
13
14 function result = atomsIsPackage(package_names,package_versions)
15         
16         // Initialize
17         // =========================================================================
18         result = [];
19         
20         // Check input parameters
21         // =========================================================================
22         rhs  = argn(2);
23         
24         if rhs < 1 | rhs > 2 then
25                 error(msprintf(gettext("%s: Wrong number of input argument: %d to %d expected.\n"),"atomsIsPackage",1,2));
26         end
27         
28         if type(package_names) <> 10 then
29                 error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsIsPackage",1));
30         end
31         
32         if (rhs == 2) & type(package_versions) <> 10 then
33                 error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsIsPackage",1));
34         end
35         
36         if (rhs == 2) & or( size(package_names) <> size(package_versions) ) then
37                 error(msprintf(gettext("%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"),"atomsIsPackage",1,2));
38         end
39         
40         // Get all package description
41         // =========================================================================
42         allpackages = atomsGetTOOLBOXES();
43         
44         // Loop on packages
45         // =========================================================================
46         
47         for i=1:size(package_names,"*")
48                 
49                 result(i) = %F;
50                 
51                 if rhs == 1 then
52                         version = "";
53                 else
54                         version = package_versions(i);
55                 end
56                 
57                 // 1st case : just test the name, not the version
58                 if isempty(version) & isfield(allpackages,package_names(i)) then
59                         result(i) = %T;
60                 
61                 // 2nd case : Check a specific version
62                 elseif isfield(allpackages,package_names(i)) then
63                         this_package = allpackages(package_names(i));
64                         if isfield(this_package,version) then
65                                 result(i) = %T;
66                         end
67                 end
68                 
69         end
70         
71 endfunction