Can someone suggest a better way to do that?
Now Im using:
THashedInterfaceList = class(TInterfacedObject, IHashedInterfaceList)
private
FList: THashedStringList;
protected
function Add(const Name: string; const Item: IInterface): Integer;
function GetCount: Integer;
function GetItem(const Name: string): IInterface;
function GetItems(const Index: Integer): IInterface;
function IndexOf(const Name: string): Integer;
function IndexOfItem(const Item: IInterface): Integer;
procedure Clear;
procedure Delete(const Index: Integer);
property Item[const Name: string]: IInterface read GetItem;
property Items[const Index: Integer]: IInterface read GetItems; default;
property Count: Integer read GetCount;
public
constructor Create(const SortList: boolean = False); virtual;
destructor Destroy; override;
end;
function THashedInterfaceList.Add(const Name: string;
const Item: IInterface): Integer;
begin
Result:= FList.AddObject(Name, Pointer(Item));
end;
procedure THashedInterfaceList.Clear;
begin
FList.Clear;
end;
constructor THashedInterfaceList.Create(const SortList: boolean);
begin
inherited Create;
FList:= THashedStringList.Create;
FList.Duplicates:= dupError;
FList.Sorted:= SortList;
end;
procedure THashedInterfaceList.Delete(const Index: Integer);
begin
FList.Delete(Index);
end;
destructor THashedInterfaceList.Destroy;
begin
FList.Free;
inherited;
end;
function THashedInterfaceList.GetCount: Integer;
begin
Result:= FList.Count;
end;
function THashedInterfaceList.GetItem(const Name: string): IInterface;
begin
Result:= Items[IndexOf(Name)];
end;
function THashedInterfaceList.GetItems(const Index: Integer): IInterface;
var
LItem: Pointer;
begin
if (Index <> NotFound) and (Index < Count) then
LItem:= FList.Objects[Index]
else
LItem:= nil;
Result:= IInterface(LItem);
end;
function THashedInterfaceList.IndexOf(const Name: string): Integer;
begin
Result:= FList.IndexOf(Name);
end;
function THashedInterfaceList.IndexOfItem(const Item: IInterface): Integer;
begin
Result:= FList.IndexOfObject(Pointer(Item));
end;
_________________________________________________________________
To unsubscribe: mail [EMAIL PROTECTED] with
"unsubscribe" as the Subject
archives at http://www.lazarus.freepascal.org/mailarchives