ATOMS: homogenize function's profile
[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(packages)
15         
16         // Initialize
17         // =========================================================================
18         result = [];
19         
20         // Check input parameters
21         // =========================================================================
22         rhs  = argn(2);
23         
24         if rhs <> 1 then
25                 error(msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"),"atomsIsPackage",1));
26         end
27         
28         if type(packages) <> 10 then
29                 error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsIsPackage",1));
30         end
31         
32         if size(packages(1,:),"*") > 2 then
33                 error(msprintf(gettext("%s: Wrong size for input argument #%d: mx1 or mx2 string matrix expected.\n"),"atomsIsPackage",1));
34         end
35         
36         // If packages is mx1 matrix, add a 2nd column with empty versions
37         // =========================================================================
38         if size(packages(1,:),"*") == 1 then
39                 packages = [ packages emptystr(size(packages(:,1),"*"),1) ];
40         end
41         
42         // Get all package description
43         // =========================================================================
44         allpackages = atomsGetTOOLBOXES();
45         
46         // Loop on packages
47         // =========================================================================
48         
49         for i=1:size(packages(:,1),"*")
50                 
51                 result(i) = %F,
52                 name      = packages(i,1);
53                 version   = packages(i,2);
54                 
55                 // 1st case : just test the name, not the version
56                 if isempty(version) & isfield(allpackages,name) then
57                         result(i) = %T;
58                 
59                 // 2nd case : Check a specific version
60                 elseif isfield(allpackages,name) then
61                         result(i) = isfield(allpackages(name),version);
62                 end
63                 
64         end
65         
66 endfunction