1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
// Copyright (C) INRIA - 2009 - Arnaud TORSET
//
// This file must be used under the terms of the CeCILL.
// This source file is licensed as described in the file COPYING, which
// you should have received as part of this distribution. The terms
// are also available at
// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
function y=findDeps(x, deps)
//give the dependances of x
//
nbArgsIn = size(deps.x,'c');
//stocke deps.x dans y
y=deps.x;
for i=1:nbArgsIn,
//on boucle sur le nombre d'entrées afin de pouvoir extraire chaque éléments
//l'element est stockédans deps(deps.a(i))
for j=1:size(deps(deps.a(i)),'c'),
//on boucle sur les dependances de cet element afin de savoir s'il faut rajoutere des dependances
nouveau = 0;
for k=1:size(y,'c'),
//on boucle sur le nombre d'elements de y afin de faire une comparaison entre les elements
//presents et absents de la liste.
//S'il est absent de la liste(nouveau=0), on le rajoute à y, sinon(nouveau=1) on fait rien
if (deps(deps.a(i))(j)==deps.y(k)) then nouveau=nouveau+1;end;
end;
if (nouveau==0) then y(1,size(y,'c')+1)=deps(deps.a(i))(j);end;
end;
end;
//si le nb de parametres du début est égal à celui de la fin alors on arrete, sinon on continue
nbArgsOut = size(deps.y,'c');
if (nbArgsOut>nbArgsIn) then findDeps(y, deps);
else if (nbArgsOut<nbArgsIn) then disp("error");end;
end;
endfunction
|