122b2cf6053cb6c3b15dad681d82d718c9e1bc9c
[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 = "0";
53                 else
54                         version = package_versions(i);
55                 end
56                 
57                 // 1st case : just test the name, not the version
58                 if version == "0" then
59                         if isfield(allpackages,package_names(i)) then
60                                 result(i) = %T;
61                         end
62                 
63                 // 2nd case : Check a specific version
64                 else
65                         if isfield(allpackages,package_names(i)) then
66                                 this_package = allpackages(package_names(i));
67                                 if isfield(this_package,version) then
68                                         result(i) = %T;
69                                 end
70                         end
71                 end
72                 
73         end
74         
75 endfunction