codetools: TStringToStringTree: enumerator

git-svn-id: trunk@32252 -
This commit is contained in:
mattias 2011-09-10 12:04:40 +00:00
parent 79085afc25
commit 4fe0ba4296

View File

@ -104,6 +104,21 @@ type
end;
PStringToStringTreeItem = ^TStringToStringTreeItem;
TStringToStringTree = class;
{ TStringToStringTreeEnumerator }
TStringToStringTreeEnumerator = class
private
FTree: TStringToStringTree;
FCurrent: TAVLTreeNode;
function GetCurrent: PStringToStringTreeItem;
public
constructor Create(Tree: TStringToStringTree);
function MoveNext: boolean;
property Current: PStringToStringTreeItem read GetCurrent;
end;
{ TStringToStringTree }
TStringToStringTree = class
@ -138,6 +153,7 @@ type
property CompareKeyItemFunc: TListSortCompare read FCompareKeyItemFunc;
procedure SetCompareFuncs(
const NewCompareItemsFunc, NewCompareKeyItemFunc: TListSortCompare);
function GetEnumerator: TStringToStringTreeEnumerator;
end;
{ TFilenameToStringTree }
@ -328,6 +344,27 @@ begin
Result:=CompareStr(AnsiString(Data1),AnsiString(Data2));
end;
{ TStringToStringTreeEnumerator }
function TStringToStringTreeEnumerator.GetCurrent: PStringToStringTreeItem;
begin
Result:=PStringToStringTreeItem(FCurrent.Data);
end;
constructor TStringToStringTreeEnumerator.Create(Tree: TStringToStringTree);
begin
FTree:=Tree;
end;
function TStringToStringTreeEnumerator.MoveNext: boolean;
begin
if FCurrent=nil then
FCurrent:=FTree.Tree.FindLowest
else
FCurrent:=FTree.Tree.FindSuccessor(FCurrent);
Result:=FCurrent<>nil;
end;
{ TStringTreeEnumerator }
function TStringTreeEnumerator.GetCurrent: string;
@ -741,6 +778,11 @@ begin
Tree.OnCompare:=NewCompareItemsFunc;
end;
function TStringToStringTree.GetEnumerator: TStringToStringTreeEnumerator;
begin
Result:=TStringToStringTreeEnumerator.Create(Self);
end;
{ TFilenameToStringTree }
constructor TFilenameToStringTree.Create(CaseInsensitive: boolean);