f209ef4318341c8733e8b1fe6bf50551c69e0c1c
[scilab.git] / scilab / modules / atoms / macros / atoms_internals / atomsIsDirectChild.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 // Returns True if the package named "child_name" (version doesn't matter)
13 // is directy needed by the package whose name is "parent_name" and version is
14 // "parent_version". No matter whether if "parent_name - parent_version" is
15 // installed or not
16
17 // Input arguments :
18 //
19 //   parent_name : . String Array
20 //                 . mandatory
21 //
22 //   parent_version : . String Array
23 //                    . mandatory
24 //
25 //   child_name     : . Single String
26 //                    . mandatory
27
28 // Output arguments :
29 //
30 //   result : . Boolean Array
31
32 function result = atomsIsDirectChild(parent_name,parent_version,child_name)
33         
34         rhs    = argn(2);
35         result = [];
36         
37         // Check number of input arguments
38         // =========================================================================
39         if rhs <> 3 then
40                 error(msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"),"atomsIsDirectChild",4));
41         end
42         
43         // Check input parameter type
44         // =========================================================================
45         
46         if type(parent_name) <> 10 then
47                 error(msprintf(gettext("%s: Wrong type for input argument #%d: A Single String expected.\n"),"atomsIsDirectChild",1));
48         end
49         
50         if type(parent_version) <> 10 then
51                 error(msprintf(gettext("%s: Wrong type for input argument #%d: A Single String expected.\n"),"atomsIsDirectChild",2));
52         end
53         
54         if type(child_name) <> 10 then
55                 error(msprintf(gettext("%s: Wrong type for input argument #%d: A Single String expected.\n"),"atomsIsDirectChild",3));
56         end
57         
58         // Check input parameter dimension
59         // =========================================================================
60         
61         if size(parent_name,"*") <> size(parent_version,"*") then
62                 error(msprintf(gettext("%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"),"atomsIsDirectChild",1,2));
63         end
64         
65         if size(child_name,"*") <> 1 then
66                 error(msprintf(gettext("%s: Wrong size for input argument #%d: A Single String expected.\n"),"atomsIsDirectChild",3));
67         end
68         
69         // Loop on parents
70         // =========================================================================
71         
72         for i=1:size(parent_name,"*")
73                 parent_deps = atomsToolboxDetails(parent_name(i),parent_version(i),"Depends");
74                 result = [ result ; grep(parent_deps,"/\s"+child_name+"\s/","r") <> [] ];
75         end
76         
77         // reshape the matrix
78         // =========================================================================
79         result = matrix(result,size(parent_name) );
80         
81 endfunction