Ignore:
Timestamp:
Jan 3, 2011, 3:25:24 PM (13 years ago)
Author:
george
Message:
File:
1 edited

Legend:

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

    r109 r112  
    66  TGListToStringConverter = function(Item: TGListItem): string;
    77  TGListFromStringConverter = function(Text: string): TGListItem;
     8  TGListItemArray = array of TGListItem;
    89
    910  // TGList<TGListIndex, TGListItem> = class
     
    3233    procedure DeleteItems(Index, Count: TGListIndex);
    3334    function EqualTo(List: TGList): Boolean;
     35    procedure Exchange(Index1, Index2: TGListIndex);
     36    procedure Explode(Text, Separator: string; Converter: TGListFromStringConverter; SlicesCount: Integer = -1);
    3437    function Extract(Item: TGListItem): TGListItem;
    35     procedure Exchange(Index1, Index2: TGListIndex);
    3638    property First: TGListItem read GetFirst write SetFirst;
    3739    procedure Fill(Start, Count: TGListIndex; Value: TGListItem);
     40    function GetArray: TGListItemArray;
    3841    function Implode(Separator: string; Converter: TGListToStringConverter): string;
    39     procedure Explode(Text, Separator: string; Converter: TGListFromStringConverter; SlicesCount: Integer = -1);
    4042    function IndexOf(Item: TGListItem; Start: TGListIndex = 0): TGListIndex;
    4143    function IndexOfList(List: TGList; Start: TGListIndex = 0): TGListIndex;
     
    4850    procedure Reverse;
    4951    procedure Sort(Compare: TGListSortCompare);
    50     procedure SetArray(Values: array of TGListItem);
     52    procedure SetArray(Values: TGListItemArray);
    5153    property Count: TGListIndex read FCount write SetCount;
    5254    property Capacity: TGListIndex read GetCapacity write SetCapacity;
     
    123125  FCount := AValue;
    124126  if AValue < Capacity then SetCapacityOptimized(AValue); // After FCount change
     127end;
     128
     129function TGList.GetArray: TGListItemArray;
     130var
     131  I: Integer;
     132begin
     133  SetLength(Result, Count);
     134  I := 0;
     135  while I < Count do begin
     136    Result[I] := FItems[I];
     137    I := I + 1;
     138  end;
    125139end;
    126140
     
    181195begin
    182196  Result := Start;
    183   // Use slower CompareMem instead of (FItems[Result] <> Item) to support records
    184197  while (Result < FCount) and
    185198  not CompareMem(Addr(FItems[Result]), Addr(Item), SizeOf(TGListItem)) do
     
    358371end;
    359372
    360 procedure TGList.SetArray(Values: array of TGListItem);
     373procedure TGList.SetArray(Values: TGListItemArray);
    361374var
    362375  I: TGListIndex;
Note: See TracChangeset for help on using the changeset viewer.