mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-04 08:00:32 +02:00
avglvltree: nicer report
git-svn-id: trunk@36122 -
This commit is contained in:
parent
9f6e6a8186
commit
44af0bd032
@ -1615,32 +1615,59 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAvgLvlTree.WriteReportToStream(s: TStream);
|
procedure TAvgLvlTree.WriteReportToStream(s: TStream);
|
||||||
var h: string;
|
|
||||||
|
|
||||||
procedure WriteStr(const Txt: string);
|
procedure WriteStr(const Txt: string);
|
||||||
begin
|
begin
|
||||||
if s<>nil then
|
if Txt='' then exit;
|
||||||
s.Write(Txt[1],length(Txt));
|
s.Write(Txt[1],length(Txt));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure WriteTreeNode(ANode: TAvgLvlTreeNode; const Prefix: string);
|
procedure WriteTreeNode(ANode: TAvgLvlTreeNode);
|
||||||
var b: string;
|
var
|
||||||
|
b: String;
|
||||||
|
IsLeft: boolean;
|
||||||
|
AParent: TAvgLvlTreeNode;
|
||||||
|
WasLeft: Boolean;
|
||||||
begin
|
begin
|
||||||
if ANode=nil then exit;
|
if ANode=nil then exit;
|
||||||
WriteTreeNode(ANode.Right,Prefix+' ');
|
WriteTreeNode(ANode.Right);
|
||||||
b:=Prefix+Format('%p Self=%p Parent=%p Balance=%d#13#10', [
|
AParent:=ANode;
|
||||||
|
WasLeft:=false;
|
||||||
|
b:='';
|
||||||
|
while AParent<>nil do begin
|
||||||
|
if AParent.Parent=nil then begin
|
||||||
|
if AParent=ANode then
|
||||||
|
b:='--'+b
|
||||||
|
else
|
||||||
|
b:=' '+b;
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
IsLeft:=AParent.Parent.Left=AParent;
|
||||||
|
if AParent=ANode then begin
|
||||||
|
if IsLeft then
|
||||||
|
b:='\-'
|
||||||
|
else
|
||||||
|
b:='/-';
|
||||||
|
end else begin
|
||||||
|
if WasLeft=IsLeft then
|
||||||
|
b:=' '+b
|
||||||
|
else
|
||||||
|
b:='| '+b;
|
||||||
|
end;
|
||||||
|
WasLeft:=IsLeft;
|
||||||
|
AParent:=AParent.Parent;
|
||||||
|
end;
|
||||||
|
b+=Format('%p Self=%p Parent=%p Balance=%d'+LineEnding, [
|
||||||
ANode.Data, Pointer(ANode),Pointer(ANode.Parent), ANode.Balance]);
|
ANode.Data, Pointer(ANode),Pointer(ANode.Parent), ANode.Balance]);
|
||||||
WriteStr(b);
|
WriteStr(b);
|
||||||
WriteTreeNode(ANode.Left,Prefix+' ');
|
WriteTreeNode(ANode.Left);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// TAvgLvlTree.WriteReportToStream
|
// TAvgLvlTree.WriteReportToStream
|
||||||
begin
|
begin
|
||||||
h:='Consistency: '+IntToStr(ConsistencyCheck)+' ---------------------'+#13#10;
|
WriteStr('-Start-of-AVL-Tree-------------------'+LineEnding);
|
||||||
WriteStr(h);
|
WriteTreeNode(Root);
|
||||||
WriteTreeNode(Root,' ');
|
WriteStr('-End-Of-AVL-Tree---------------------'+LineEnding);
|
||||||
h:='-End-Of-AVL-Tree---------------------'+#13#10;
|
|
||||||
WriteStr(h);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAvgLvlTree.ReportAsString: string;
|
function TAvgLvlTree.ReportAsString: string;
|
||||||
|
Loading…
Reference in New Issue
Block a user