Ignore:
Timestamp:
Nov 8, 2010, 12:29:19 PM (14 years ago)
Author:
george
Message:
  • Modified: Last and First functions of TGList changed to properties.
File:
1 edited

Legend:

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

    r84 r90  
    1414    function Get(Index: TGListIndex): TGListItem;
    1515    function GetCapacity: TGListIndex;
     16    function GetLast: TGListItem;
     17    function GetFirst: TGListItem;
    1618    procedure SetCapacity(const AValue: TGListIndex);
     19    procedure SetLast(AValue: TGListItem);
     20    procedure SetFirst(AValue: TGListItem);
    1721    procedure Put(Index: TGListIndex; const AValue: TGListItem); virtual;
    1822    procedure SetCount(const AValue: TGListIndex);
    1923    procedure QuickSort(L, R : TGListIndex; Compare: TGListSortCompare);
    2024  public
    21     // All items
    22     procedure Reverse;
     25    function Add(Item: TGListItem): TGListIndex;
     26    procedure AddArray(Values: array of TGListItem);
     27    procedure AddList(List: TGList);
     28    procedure Assign(List: TGList);
    2329    procedure Clear; virtual;
     30    procedure Contract;
     31    procedure Delete(Index: TGListIndex); virtual;
     32    procedure DeleteItems(Index, Count: TGListIndex);
     33    function Equals(List: TGList): Boolean;
    2434    procedure Expand;
    25     procedure Contract;
    26     procedure Sort(Compare: TGListSortCompare);
    27     function Implode(Separator: string; Converter: TGListStringConverter): string;
    28     // Many items
    29     procedure MoveItems(CurIndex, NewIndex, Count: TGListIndex);
    30     procedure DeleteItems(Index, Count: TGListIndex);
    31     procedure Fill(Start, Count: TGListIndex; Value: TGListItem);
    32     // One item
    33     function Add(Item: TGListItem): TGListIndex;
    34     procedure Delete(Index: TGListIndex); virtual;
    3535    function Extract(Item: TGListItem): TGListItem;
    3636    procedure Exchange(Index1, Index2: TGListIndex);
    37     function First: TGListItem;
     37    property First: TGListItem read GetFirst write SetFirst;
     38    procedure Fill(Start, Count: TGListIndex; Value: TGListItem);
     39    function Implode(Separator: string; Converter: TGListStringConverter): string;
    3840    function IndexOf(Item: TGListItem; Start: TGListIndex = 0): TGListIndex;
     41    function IndexOfList(List: TGList; Start: TGListIndex = 0): TGListIndex;
    3942    procedure Insert(Index: TGListIndex; Item: TGListItem);
    40     function Last: TGListItem;
     43    procedure InsertList(Index: TGListIndex; List: TGList);
     44    procedure InsertArray(Index: TGListIndex; Values: array of TGListItem);
    4145    procedure Move(CurIndex, NewIndex: TGListIndex);
     46    procedure MoveItems(CurIndex, NewIndex, Count: TGListIndex);
    4247    function Remove(Item: TGListItem): TGListIndex;
    43     property Items[Index: TGListIndex]: TGListItem read Get write Put; default;
    44     // List
    45     procedure AddList(List: TGList);
    46     procedure Assign(List: TGList);
    47     function Equals(List: TGList): Boolean;
    48     procedure InsertList(Index: TGListIndex; List: TGList);
    49     function IndexOfList(List: TGList; Start: TGListIndex = 0): TGListIndex;
    50     // Other
     48    procedure Reverse;
     49    procedure Sort(Compare: TGListSortCompare);
     50    procedure SetArray(Values: array of TGListItem);
    5151    property Count: TGListIndex read FCount write SetCount;
    5252    property Capacity: TGListIndex read GetCapacity write SetCapacity;
    53     // Array
    54     procedure AddArray(Values: array of TGListItem);
    55     procedure SetArray(Values: array of TGListItem);
    56     procedure InsertArray(Index: TGListIndex; Values: array of TGListItem);
     53    property Items[Index: TGListIndex]: TGListItem read Get write Put; default;
     54    property Last: TGListItem read GetLast write SetLast;
    5755  end;
    5856 
     
    172170end;
    173171
    174 function TGList.First: TGListItem;
    175 begin
    176   if FCount = 0 then
    177     raise EListError.CreateFmt(SListIndexError, [0])
    178   else
    179     Result := Items[0];
    180 end;
    181 
    182172function TGList.IndexOf(Item: TGListItem; Start: TGListIndex): TGListIndex;
    183173begin
     
    230220end;
    231221
    232 function TGList.Last: TGListItem;
     222function TGList.GetLast: TGListItem;
    233223begin
    234224  if FCount = 0 then
     
    236226  else
    237227    Result := Items[FCount - 1];
     228end;
     229
     230procedure TGList.SetLast(AValue: TGListItem);
     231begin
     232  if FCount = 0 then
     233    raise EListError.CreateFmt(SListIndexError, [0])
     234  else
     235    Items[FCount - 1] := AValue;
     236end;
     237
     238function TGList.GetFirst: TGListItem;
     239begin
     240  if FCount = 0 then
     241    raise EListError.CreateFmt(SListIndexError, [0])
     242  else
     243    Result := Items[0];
     244end;
     245
     246procedure TGList.SetFirst(AValue: TGListItem);
     247begin
     248  if FCount = 0 then
     249    raise EListError.CreateFmt(SListIndexError, [0])
     250  else
     251    Items[0] := AValue;
    238252end;
    239253
Note: See TracChangeset for help on using the changeset viewer.