codetools: TStringTree: enumerator

git-svn-id: trunk@32237 -
This commit is contained in:
mattias 2011-09-08 17:58:44 +00:00
parent 160132b781
commit bfe2e33e1a

View File

@ -147,6 +147,21 @@ type
constructor Create(CaseInsensitive: boolean); // false = system default
end;
TStringTree = class;
{ TStringTreeEnumerator }
TStringTreeEnumerator = class
private
FTree: TStringTree;
FCurrent: TAVLTreeNode;
function GetCurrent: string;
public
constructor Create(Tree: TStringTree);
function MoveNext: boolean;
property Current: string read GetCurrent;
end;
{ TStringTree }
TStringTree = class
@ -158,6 +173,7 @@ type
function FindNode(const s: string): TAVLTreeNode; inline;
procedure ReplaceString(var s: string);
function CalcMemSize: PtrUInt;
function GetEnumerator: TStringTreeEnumerator;
end;
type
@ -312,6 +328,27 @@ begin
Result:=CompareStr(AnsiString(Data1),AnsiString(Data2));
end;
{ TStringTreeEnumerator }
function TStringTreeEnumerator.GetCurrent: string;
begin
Result:=AnsiString(FCurrent.Data);
end;
constructor TStringTreeEnumerator.Create(Tree: TStringTree);
begin
FTree:=Tree;
end;
function TStringTreeEnumerator.MoveNext: boolean;
begin
if FCurrent=nil then
FCurrent:=FTree.Tree.FindLowest
else
FCurrent:=FTree.Tree.FindSuccessor(FCurrent);
Result:=FCurrent<>nil;
end;
{ TCodeXYPositions }
function TCodeXYPositions.GetItems(Index: integer): PCodeXYPosition;
@ -784,6 +821,11 @@ begin
end;
end;
function TStringTree.GetEnumerator: TStringTreeEnumerator;
begin
Result:=TStringTreeEnumerator.Create(Self);
end;
{ TComponentChildCollector }
procedure TComponentChildCollector.AddChildComponent(Child: TComponent);