Ignore:
Timestamp:
Sep 24, 2012, 1:47:39 PM (12 years ago)
Author:
chronos
Message:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Generics/TemplateGenerics/Generic/GenericList.inc

    r414 r426  
    1212  // - all items operations (Clear, Reverse, Sort)
    1313
    14   TGList = class;
    15 
    16   TGListSortCompare = function(Item1, Item2: TGListItem): Integer of object;
    17   TGListToStringConverter = function(Item: TGListItem): string;
    18   TGListFromStringConverter = function(Text: string): TGListItem;
    19   TGListItemArray = array of TGListItem;
     14  TGAbstractList = class
     15
     16  end;
    2017
    2118  // TGList<TGListIndex, TGListItem> = class
    22   TGList = class
     19  TGList = class(TGAbstractList)
     20  public
     21    type
     22      PItem = ^TGListItem;
     23      TSortCompare = function(Item1, Item2: TGListItem): Integer of object;
     24      TToStringConverter = function(Item: TGListItem): string;
     25      TFromStringConverter = function(Text: string): TGListItem;
     26      TItemArray = array of TGListItem;
    2327  private
    2428    FItems: array of TGListItem;
     
    3438    procedure SetLast(AValue: TGListItem);
    3539    procedure SetFirst(AValue: TGListItem);
    36     procedure QuickSort(L, R : TGListIndex; Compare: TGListSortCompare);
     40    procedure QuickSort(L, R : TGListIndex; Compare: TSortCompare);
    3741  protected
    3842    procedure Put(Index: TGListIndex; const AValue: TGListItem); virtual;
    3943    procedure SetCount(const AValue: TGListIndex); virtual;
    4044  public
    41     type
    42       PItem = ^TGListItem;
    4345    function CompareMem(P1, P2: Pointer; Length: cardinal): Boolean; inline;
    4446    function Add(Item: TGListItem): TGListIndex;
     
    5355    function EqualTo(List: TGList): Boolean;
    5456    procedure Exchange(Index1, Index2: TGListIndex);
    55     procedure Explode(Text, Separator: string; Converter: TGListFromStringConverter; SlicesCount: Integer = -1);
     57    procedure Explode(Text, Separator: string; Converter: TFromStringConverter; SlicesCount: Integer = -1);
    5658    function Extract(Item: TGListItem): TGListItem;
    5759    property First: TGListItem read GetFirst write SetFirst;
    5860    procedure Fill(Start, Count: TGListIndex; Value: TGListItem);
    59     function GetArray(Index, ACount: TGListIndex): TGListItemArray;
     61    function GetArray(Index, ACount: TGListIndex): TItemArray;
    6062    procedure GetList(List: TGList; Index, ACount: TGListIndex);
    6163    procedure GetBuffer(Index: TGListIndex; var Buffer; Count: TGListIndex);
    62     function Implode(Separator: string; Converter: TGListToStringConverter): string;
     64    function Implode(Separator: string; Converter: TToStringConverter): string;
    6365    function IndexOf(Item: TGListItem; Start: TGListIndex = 0): TGListIndex; virtual;
    6466    function IndexOfList(List: TGList; Start: TGListIndex = 0): TGListIndex;
     
    7779      SourceIndex, SourceCount: TGListIndex);
    7880    procedure ReplaceBuffer(Index: TGListIndex; var Buffer; Count: TGListIndex);
    79     procedure Sort(Compare: TGListSortCompare);
     81    procedure Sort(Compare: TSortCompare);
    8082    procedure SetArray(Values: array of TGListItem);
    8183    procedure BeginUpdate;
     
    8890    property OnUpdate: TNotifyEvent read FOnUpdate write FOnUpdate;
    8991  end;
    90  
     92
    9193{$UNDEF INTERFACE}
    9294{$ENDIF}
     
    237239end;
    238240
    239 function TGList.GetArray(Index, ACount: TGListIndex): TGListItemArray;
     241function TGList.GetArray(Index, ACount: TGListIndex): TItemArray;
    240242var
    241243  I: Integer;
     
    255257end;
    256258
    257 procedure TGList.QuickSort(L, R: TGListIndex; Compare: TGListSortCompare);
     259procedure TGList.QuickSort(L, R: TGListIndex; Compare: TSortCompare);
    258260var
    259261  I, J: TGListIndex;
     
    524526end;
    525527
    526 procedure TGList.Sort(Compare: TGListSortCompare);
     528procedure TGList.Sort(Compare: TSortCompare);
    527529begin
    528530  if FCount > 1 then
     
    571573end;
    572574
    573 function TGList.Implode(Separator: string; Converter: TGListToStringConverter): string;
     575function TGList.Implode(Separator: string; Converter: TToStringConverter): string;
    574576var
    575577  I: TGListIndex;
     
    585587end;
    586588
    587 procedure TGList.Explode(Text, Separator: string; Converter: TGListFromStringConverter; SlicesCount: Integer = -1);
     589procedure TGList.Explode(Text, Separator: string; Converter: TFromStringConverter; SlicesCount: Integer = -1);
    588590begin
    589591  Clear;
Note: See TracChangeset for help on using the changeset viewer.