mirror of
https://github.com/vishapoberon/vipak.git
synced 2026-04-05 20:42:26 +00:00
comparing pointers instead of strings.
This commit is contained in:
parent
42f574ad95
commit
f1b478f4ac
2 changed files with 32 additions and 15 deletions
|
|
@ -13,20 +13,17 @@ VAR
|
||||||
i: INTEGER;
|
i: INTEGER;
|
||||||
d2: Tdep;
|
d2: Tdep;
|
||||||
BEGIN
|
BEGIN
|
||||||
Out.String("entered treeContains, tree count is "); Out.Int(depTree.Count, 0); Out.Ln;
|
|
||||||
res := FALSE;
|
res := FALSE;
|
||||||
i := 0;
|
i := 0;
|
||||||
REPEAT
|
REPEAT
|
||||||
Out.Int(i, 0); Out.Ln;
|
Out.Int(i, 0); Out.Ln;
|
||||||
d2 := depTree.Get(depTree, i);
|
d2 := depTree.Get(depTree, i);
|
||||||
IF d2 # NIL THEN
|
IF d2 # NIL THEN
|
||||||
Out.String("comparing, "); Out.String(d.name^); Out.String(" & "); Out.String(d2.name^); Out.Ln;
|
IF d = d2 THEN res := TRUE END;
|
||||||
IF d = d2 THEN (*res := TRUE*) Out.String("TR") ELSE Out.String("FL") END;Out.Ln;(* TODO: understand why this doesnt work *)
|
(*IF d.name^ = d2.name^ THEN res := TRUE END *)
|
||||||
IF d.name^ = d2.name^ THEN res := TRUE; Out.String("TR") ELSE Out.String("FL") END; Out.Ln;
|
|
||||||
END;
|
END;
|
||||||
INC(i)
|
INC(i)
|
||||||
UNTIL res OR (i >= depTree.Count);
|
UNTIL res OR (i >= depTree.Count);
|
||||||
IF res THEN Out.String("yes!") ELSE Out.String("no!"); Out.Ln END;
|
|
||||||
RETURN res;
|
RETURN res;
|
||||||
END treeContains;
|
END treeContains;
|
||||||
|
|
||||||
|
|
@ -38,25 +35,23 @@ VAR
|
||||||
e: StringList.Node;
|
e: StringList.Node;
|
||||||
i: INTEGER;
|
i: INTEGER;
|
||||||
BEGIN
|
BEGIN
|
||||||
Out.String("processing dep: "); Out.String(d.name^); Out.Ln;
|
|
||||||
met.Add(met, d);
|
met.Add(met, d);
|
||||||
|
|
||||||
depStrs := vpkRetriever.getDeps(d.name^);
|
depStrs := vpkRetriever.getDeps(d.name^);
|
||||||
IF depStrs # NIL THEN
|
IF depStrs # NIL THEN
|
||||||
Out.String("it has "); Out.Int(depStrs.Count, 0); Out.String(" deps"); Out.Ln;
|
|
||||||
NEW (deps, depStrs.Count);
|
NEW (deps, depStrs.Count);
|
||||||
d.deps := deps;
|
d.deps := deps;
|
||||||
i := 0;
|
i := 0;
|
||||||
REPEAT
|
REPEAT
|
||||||
e := depStrs.Get(depStrs, i);
|
e := depStrs.Get(depStrs, i);
|
||||||
IF e # NIL THEN
|
IF e # NIL THEN
|
||||||
(*Out.String (e.obj(StringList.TString).str^); Out.Ln;*)
|
t := met.GetByName(met, e.obj(StringList.TString).str^);
|
||||||
NEW(t); NEW(t.name, Strings.Length(e.obj(StringList.TString).str^)+1);
|
IF t = NIL THEN
|
||||||
COPY (e.obj(StringList.TString).str^, t.name^);
|
NEW(t); NEW(t.name, Strings.Length(e.obj(StringList.TString).str^)+1);
|
||||||
|
COPY (e.obj(StringList.TString).str^, t.name^);
|
||||||
|
END;
|
||||||
deps[i] := t;
|
deps[i] := t;
|
||||||
Out.String("checking if "); Out.String(t.name^); Out.String(" resolved"); Out.Ln;
|
|
||||||
IF ~treeContains(t, depTree) THEN
|
IF ~treeContains(t, depTree) THEN
|
||||||
Out.String("checking if "); Out.String(t.name^); Out.String(" met"); Out.Ln;
|
|
||||||
IF treeContains(t, met) THEN
|
IF treeContains(t, met) THEN
|
||||||
Out.String("curcular dependency!"); Out.Ln;
|
Out.String("curcular dependency!"); Out.Ln;
|
||||||
Out.String(d.name^); Out.String(" requires "); Out.String(t.name^); Out.Ln;
|
Out.String(d.name^); Out.String(" requires "); Out.String(t.name^); Out.Ln;
|
||||||
|
|
@ -68,10 +63,8 @@ BEGIN
|
||||||
END;
|
END;
|
||||||
INC(i)
|
INC(i)
|
||||||
UNTIL i = depStrs.Count - 1;
|
UNTIL i = depStrs.Count - 1;
|
||||||
ELSE
|
|
||||||
Out.String("has no deps"); Out.Ln;
|
|
||||||
END;
|
END;
|
||||||
depTree.Add(depTree, d);
|
depTree.Add(depTree, d);
|
||||||
END mkDepTree;
|
END mkDepTree;
|
||||||
|
|
||||||
PROCEDURE resolve*(first: ARRAY OF CHAR): TdepTree;
|
PROCEDURE resolve*(first: ARRAY OF CHAR): TdepTree;
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ TYPE
|
||||||
Clear* : PROCEDURE (VAR l : TdepTree);
|
Clear* : PROCEDURE (VAR l : TdepTree);
|
||||||
Add* : PROCEDURE (VAR l : TdepTree; VAR s : Tdep);
|
Add* : PROCEDURE (VAR l : TdepTree; VAR s : Tdep);
|
||||||
Get* : PROCEDURE (VAR l : TdepTree; i : LONGINT): Tdep;
|
Get* : PROCEDURE (VAR l : TdepTree; i : LONGINT): Tdep;
|
||||||
|
GetByName* : PROCEDURE (VAR l : TdepTree; VAR name : ARRAY OF CHAR): Tdep;
|
||||||
Empty* : PROCEDURE (VAR l : TdepTree) : BOOLEAN;
|
Empty* : PROCEDURE (VAR l : TdepTree) : BOOLEAN;
|
||||||
Count* : LONGINT;
|
Count* : LONGINT;
|
||||||
END;
|
END;
|
||||||
|
|
@ -87,6 +88,28 @@ BEGIN
|
||||||
RETURN d;
|
RETURN d;
|
||||||
END Get;
|
END Get;
|
||||||
|
|
||||||
|
PROCEDURE GetByName*(VAR l: TdepTree; VAR name: ARRAY OF CHAR): Tdep;
|
||||||
|
VAR
|
||||||
|
i: LONGINT;
|
||||||
|
d: Tdep;
|
||||||
|
fnd: BOOLEAN;
|
||||||
|
BEGIN
|
||||||
|
fnd := FALSE;
|
||||||
|
i := 0;
|
||||||
|
d := l.First;
|
||||||
|
REPEAT
|
||||||
|
IF d # NIL THEN
|
||||||
|
IF d.name^ = name THEN
|
||||||
|
fnd := TRUE
|
||||||
|
ELSE
|
||||||
|
d := d.next
|
||||||
|
END
|
||||||
|
END;
|
||||||
|
INC(i);
|
||||||
|
UNTIL fnd OR (i >= l.Count);
|
||||||
|
RETURN d;
|
||||||
|
END GetByName;
|
||||||
|
|
||||||
PROCEDURE Create* () : TdepTree;
|
PROCEDURE Create* () : TdepTree;
|
||||||
VAR l : TdepTree;
|
VAR l : TdepTree;
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
@ -96,6 +119,7 @@ PROCEDURE Create* () : TdepTree;
|
||||||
l.Count := 0;
|
l.Count := 0;
|
||||||
l.Add := Add;
|
l.Add := Add;
|
||||||
l.Get := Get;
|
l.Get := Get;
|
||||||
|
l.GetByName := GetByName;
|
||||||
l.Clear := Clear;
|
l.Clear := Clear;
|
||||||
l.Free := Free;
|
l.Free := Free;
|
||||||
l.Empty := Empty;
|
l.Empty := Empty;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue