* Fix working of fpdocclasstree in case of multiple files

git-svn-id: trunk@31367 -
This commit is contained in:
michael 2015-08-22 13:49:25 +00:00
parent 5227a35d05
commit cb05e1dbf4
2 changed files with 9 additions and 13 deletions

View File

@ -520,28 +520,29 @@ Var
begin
Result:='';
ACount:=0;
XML:=TXMLDocument.Create;
Try
//XML.
XML.AppendChild(XML.CreateElement(ObjKindNames[AObjectKind]));
XML.AppendChild(XML.CreateElement('TObject'));
For I:=0 to MergeFiles.Count-1 do
begin
XMl2:=TXMLDocument.Create;
ReadXMLFile(XML2,MergeFiles[i]);
try
ACount:=MergeTrees(XML,XML2);
ACount:=ACount+MergeTrees(XML,XML2);
WriteLn(StdErr,Format(SMergedFile,[ACount,MergeFiles[i]]));
Finally
FreeAndNil(XML2);
end;
end;
ACount:=0;
For I:=0 to InputFiles.Count-1 do
begin
Engine := TClassTreeEngine.Create(XML,AObjectKind);
Try
ParseSource(Engine,InputFiles[I],OSTarget,CPUTarget);
ACount:=ACount+Engine.Ftree.BuildTree(Engine.FObjects);
Engine.Ftree.BuildTree(Engine.FObjects);
ACount:=ACount+MergeTrees(XML,Engine.FTree.ClassTree);
Finally
FreeAndNil(Engine);
end;

View File

@ -81,7 +81,7 @@ begin
S:=N.NodeName;
if NoPath then
Begin
Result:= (CompareText(S,AElement.Name)=0);
Result:=(CompareText(S,AElement.Name)=0);
end
else
begin
@ -131,10 +131,11 @@ Var
N : TDomNode;
begin
//Writeln('Enter TClassTreeBuilder.AddToClassTree');
// Writeln('Enter TClassTreeBuilder.AddToClassTree');
//if Assigned(AElement) then
//Writeln('Addtoclasstree : ',aElement.Name);
Result:=Nil; N:=Nil;PE:=NIL;
Result:=Nil; M:=Nil; N:=Nil;PE:=NIL;PC:=Nil;
If (AElement=Nil) then
begin
Result:=FTreeStart;
@ -144,9 +145,7 @@ begin
begin
N:=LookForElement(FTreeStart,AElement,True);
If (N=Nil) then
begin
PE:=FTreeStart;
end
end
else If (AElement is TPasClassType) then
begin
@ -163,8 +162,6 @@ begin
end;
If (N<>Nil) then
begin
// if Assigned(PC) then
// Writeln(PC.Name,' already in tree');
Result:=N as TDomElement
end
else
@ -179,10 +176,8 @@ begin
end;
if PE=Nil then
begin
//Writeln('PE = nil detected for ',AElement.PathName);
PE:=FTreeStart
end;
//Writeln('Appending to ',PE.NodeName);
// if not assigned, probably needs to be assigned to something else.
if assigned(PE) then
PE.AppendChild(Result);