Changeset 112 for Generics


Ignore:
Timestamp:
Jan 3, 2011, 3:25:24 PM (13 years ago)
Author:
george
Message:
Location:
Generics/TemplateGenerics
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • Generics/TemplateGenerics/Demo/Demo.lpi

    r111 r112  
    312312      <Unit32>
    313313        <Filename Value="../Generic/GenericList.inc"/>
     314        <IsVisibleTab Value="True"/>
    314315        <EditorIndex Value="6"/>
    315316        <WindowIndex Value="0"/>
    316317        <TopLine Value="462"/>
    317         <CursorPos X="30" Y="470"/>
     318        <CursorPos X="40" Y="470"/>
    318319        <UsageCount Value="107"/>
    319320        <Loaded Value="True"/>
     
    520521      <Unit59>
    521522        <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/>
    522         <IsVisibleTab Value="True"/>
    523523        <EditorIndex Value="1"/>
    524524        <WindowIndex Value="0"/>
    525525        <TopLine Value="649"/>
    526         <CursorPos X="23" Y="661"/>
     526        <CursorPos X="38" Y="671"/>
    527527        <UsageCount Value="10"/>
    528528        <Loaded Value="True"/>
  • Generics/TemplateGenerics/Generic/GenericDictionary.inc

    r91 r112  
    1414{$DEFINE TGListToStringConverter := TDictionaryToStringConverter}
    1515{$DEFINE TGListFromStringConverter := TDictionaryFromStringConverter}
     16{$DEFINE TGListItemArray := TDictionaryItemArray}
    1617{$DEFINE INTERFACE}
    1718{$I 'GenericList.inc'}
     
    4849{$DEFINE TGListToStringConverter := TDictionaryToStringConverter}
    4950{$DEFINE TGListFromStringConverter := TDictionaryFromStringConverter}
     51{$DEFINE TGListItemArray := TDictionaryItemArray}
    5052{$DEFINE IMPLEMENTATION}
    5153{$I 'GenericList.inc'}
  • 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;
  • Generics/TemplateGenerics/Generic/GenericListObject.inc

    r101 r112  
    77{$DEFINE TGListToStringConverter := TGListObjectToStringConverter}
    88{$DEFINE TGListFromStringConverter := TGListObjectFromStringConverter}
     9{$DEFINE TGListItemArray := TGListObjectItemArray}
    910{$DEFINE INTERFACE}
    1011{$I 'GenericList.inc'}
     
    4243{$DEFINE TGListToStringConverter := TGListObjectToStringConverter}
    4344{$DEFINE TGListFromStringConverter := TGListObjectFromStringConverter}
     45{$DEFINE TGListItemArray := TGListObjectItemArray}
    4446{$DEFINE IMPLEMENTATION}
    4547{$I 'GenericList.inc'}
  • Generics/TemplateGenerics/Generic/GenericListString.inc

    r101 r112  
    77{$DEFINE TGListToStringConverter := TGListStringToStringConverter}
    88{$DEFINE TGListFromStringConverter := TGListStringFromStringConverter}
     9{$DEFINE TGListItemArray := TGListStringItemArray}
    910{$DEFINE INTERFACE}
    1011{$I 'GenericList.inc'}
     
    4041{$DEFINE TGListToStringConverter := TGListStringToStringConverter}
    4142{$DEFINE TGListFromStringConverter := TGListStringFromStringConverter}
     43{$DEFINE TGListItemArray := TGListStringItemArray}
    4244{$DEFINE IMPLEMENTATION}
    4345{$I 'GenericList.inc'}
  • Generics/TemplateGenerics/Generic/GenericQueue.inc

    r91 r112  
    77{$DEFINE TGListToStringConverter := TGQueueToStringConverter}
    88{$DEFINE TGListFromStringConverter := TGQueueFromStringConverter}
     9{$DEFINE TGListItemArray := TGQueueItemArray}
    910{$DEFINE INTERFACE}
    1011{$I 'GenericList.inc'}
     
    4243{$DEFINE TGListToStringConverter := TGQueueToStringConverter}
    4344{$DEFINE TGListFromStringConverter := TGQueueFromStringConverter}
     45{$DEFINE TGListItemArray := TGQueueItemArray}
    4446{$DEFINE IMPLEMENTATION}
    4547{$I 'GenericList.inc'}
  • Generics/TemplateGenerics/Generic/GenericSet.inc

    r91 r112  
    77{$DEFINE TGListToStringConverter := TGSetToStringConverter}
    88{$DEFINE TGListFromStringConverter := TGSetFromStringConverter}
     9{$DEFINE TGListItemArray := TGSetItemArray}
    910{$DEFINE INTERFACE}
    1011{$I 'GenericList.inc'}
     
    4041{$DEFINE TGListToStringConverter := TGSetToStringConverter}
    4142{$DEFINE TGListFromStringConverter := TGSetFromStringConverter}
     43{$DEFINE TGListItemArray := TGSetItemArray}
    4244{$DEFINE IMPLEMENTATION}
    4345{$I 'GenericList.inc'}
  • Generics/TemplateGenerics/Generic/GenericStack.inc

    r91 r112  
    77{$DEFINE TGListToStringConverter := TGStackToStringConverter}
    88{$DEFINE TGListFromStringConverter := TGStackFromStringConverter}
     9{$DEFINE TGListItemArray := TGStackItemArray}
    910{$DEFINE INTERFACE}
    1011{$I 'GenericList.inc'}
     
    4142{$DEFINE TGListToStringConverter := TGStackToStringConverter}
    4243{$DEFINE TGListFromStringConverter := TGStackFromStringConverter}
     44{$DEFINE TGListItemArray := TGStackItemArray}
    4345{$DEFINE IMPLEMENTATION}
    4446{$I 'GenericList.inc'}
  • Generics/TemplateGenerics/Generic/GenericTree.inc

    r91 r112  
    99{$DEFINE TGListToStringConverter := TGTreeToStringConverter}
    1010{$DEFINE TGListFromStringConverter := TGTreeFromStringConverter}
     11{$DEFINE TGListItemArray := TGTreeItemArray}
    1112{$DEFINE INTERFACE}
    1213{$I 'GenericList.inc'}
     
    4647{$DEFINE TGListToStringConverter := TGTreeToStringConverter}
    4748{$DEFINE TGListFromStringConverter := TGTreeFromStringConverter}
     49{$DEFINE TGListItemArray := TGTreeItemArray}
    4850{$DEFINE IMPLEMENTATION}
    4951{$I 'GenericList.inc'}
  • Generics/TemplateGenerics/Specialized/SpecializedDictionary.pas

    r91 r112  
    2121{$DEFINE TGDictionaryToStringConverter := TDictionaryToStringConverterInteger}
    2222{$DEFINE TGDictionaryFromStringConverter := TDictionaryFromStringConverterInteger}
     23{$DEFINE TGDictionaryItemArray := TDictionaryStringItemArray}
    2324{$DEFINE INTERFACE}
    2425{$I 'GenericDictionary.inc'}
     
    3637{$DEFINE TGDictionaryToStringConverter := TDictionaryToStringConverterInteger}
    3738{$DEFINE TGDictionaryFromStringConverter := TDictionaryFromStringConverterInteger}
     39{$DEFINE TGDictionaryItemArray := TDictionaryStringItemArray}
    3840{$DEFINE IMPLEMENTATION}
    3941{$I 'GenericDictionary.inc'}
  • Generics/TemplateGenerics/Specialized/SpecializedList.pas

    r102 r112  
    1818{$DEFINE TGListToStringConverter := TListIntegerToStringConverter}
    1919{$DEFINE TGListFromStringConverter := TListIntegerFromStringConverter}
     20{$DEFINE TGListItemArray := TListIntegerItemArray}
    2021{$DEFINE INTERFACE}
    2122{$I 'GenericList.inc'}
     
    2829{$DEFINE TGListToStringConverter := TListSmallIntToStringConverter}
    2930{$DEFINE TGListFromStringConverter := TListSmallIntFromStringConverter}
     31{$DEFINE TGListItemArray := TListSmallIntItemArray}
    3032{$DEFINE INTERFACE}
    3133{$I 'GenericList.inc'}
     
    3840{$DEFINE TGListToStringConverter := TListDoubleToStringConverter}
    3941{$DEFINE TGListFromStringConverter := TListDoubleFromStringConverter}
     42{$DEFINE TGListItemArray := TListDoubleItemArray}
    4043{$DEFINE INTERFACE}
    4144{$INCLUDE '..\Generic\GenericList.inc'}
     
    4851{$DEFINE TGListToStringConverter := TListPointerToStringConverter}
    4952{$DEFINE TGListFromStringConverter := TListPointerFromStringConverter}
     53{$DEFINE TGListItemArray := TListPointerItemArray}
    5054{$DEFINE INTERFACE}
    5155{$I 'GenericList.inc'}
     
    5862{$DEFINE TGListStringToStringConverter := TListStringToStringConverter}
    5963{$DEFINE TGListStringFromStringConverter := TListStringFromStringConverter}
     64{$DEFINE TGListItemArray := TListStringItemArray}
    6065{$DEFINE INTERFACE}
    6166{$I 'GenericListString.inc'}
     
    6873{$DEFINE TGListToStringConverter := TListByteToStringConverter}
    6974{$DEFINE TGListFromStringConverter := TListByteFromStringConverter}
     75{$DEFINE TGListItemArray := TListByteItemArray}
    7076{$DEFINE INTERFACE}
    7177{$I 'GenericList.inc'}
     
    7884{$DEFINE TGListToStringConverter := TListToStringConverterChar}
    7985{$DEFINE TGListFromStringConverter := TListFromStringConverterChar}
     86{$DEFINE TGListItemArray := TListStringItemArray}
    8087{$DEFINE INTERFACE}
    8188{$I 'GenericList.inc'}
     
    8996{$DEFINE TGListObjectToStringConverter := TListObjectToStringConverter}
    9097{$DEFINE TGListObjectFromStringConverter := TListObjectFromStringConverter}
     98{$DEFINE TGListItemArray := TListObjectItemArray}
    9199{$DEFINE INTERFACE}
    92100{$I 'GenericListObject.inc'}
     
    111119{$DEFINE TGListToStringConverter := TListMethodToStringConverter}
    112120{$DEFINE TGListFromStringConverter := TListMethodFromStringConverter}
     121{$DEFINE TGListItemArray := TListMethodItemArray}
    113122{$DEFINE INTERFACE}
    114123{$I 'GenericList.inc'}
     
    128137
    129138// TListInteger<Integer, Integer>
    130 {$DEFINE TGListIndex:=Integer}
    131 {$DEFINE TGListItem:=Integer}
    132 {$DEFINE TGList:=TListInteger}
    133 {$DEFINE TGListSortCompare:=TListIntegerSortCompare}
    134 {$DEFINE TGListToStringConverter:=TListIntegerToStringConverter}
    135 {$DEFINE TGListFromStringConverter:=TListIntegerFromStringConverter}
     139{$DEFINE TGListIndex := Integer}
     140{$DEFINE TGListItem := Integer}
     141{$DEFINE TGList := TListInteger}
     142{$DEFINE TGListSortCompare := TListIntegerSortCompare}
     143{$DEFINE TGListToStringConverter := TListIntegerToStringConverter}
     144{$DEFINE TGListFromStringConverter := TListIntegerFromStringConverter}
     145{$DEFINE TGListItemArray := TListIntegerItemArray}
    136146{$DEFINE IMPLEMENTATION}
    137147{$I 'GenericList.inc'}
     
    144154{$DEFINE TGListToStringConverter:=TListSmallIntToStringConverter}
    145155{$DEFINE TGListFromStringConverter:=TListSmallIntFromStringConverter}
     156{$DEFINE TGListItemArray := TListSmallIntItemArray}
    146157{$DEFINE IMPLEMENTATION}
    147158{$I 'GenericList.inc'}
     
    154165{$DEFINE TGListToStringConverter := TListDoubleToStringConverter}
    155166{$DEFINE TGListFromStringConverter := TListDoubleFromStringConverter}
     167{$DEFINE TGListItemArray := TListDoubleItemArray}
    156168{$DEFINE IMPLEMENTATION}
    157169{$I 'GenericList.inc'}
     
    164176{$DEFINE TGListToStringConverter := TListPointerToStringConverter}
    165177{$DEFINE TGListFromStringConverter := TListPointerFromStringConverter}
     178{$DEFINE TGListItemArray := TListPointerItemArray}
    166179{$DEFINE IMPLEMENTATION}
    167180{$I 'GenericList.inc'}
     
    174187{$DEFINE TGListStringToStringConverter := TListStringToStringConverter}
    175188{$DEFINE TGListStringFromStringConverter := TListStringFromStringConverter}
     189{$DEFINE TGListItemArray := TListStringItemArray}
    176190{$DEFINE IMPLEMENTATION}
    177191{$I 'GenericListString.inc'}
     
    184198{$DEFINE TGListToStringConverter := TListByteToStringConverter}
    185199{$DEFINE TGListFromStringConverter := TListByteFromStringConverter}
     200{$DEFINE TGListItemArray := TListByteItemArray}
    186201{$DEFINE IMPLEMENTATION}
    187202{$I 'GenericList.inc'}
     
    194209{$DEFINE TGListToStringConverter := TListToStringConverterChar}
    195210{$DEFINE TGListFromStringConverter := TListFromStringConverterChar}
     211{$DEFINE TGListItemArray := TListStringItemArray}
    196212{$DEFINE IMPLEMENTATION}
    197213{$I 'GenericList.inc'}
     
    205221{$DEFINE TGListObjectToStringConverter := TListObjectToStringConverter}
    206222{$DEFINE TGListObjectFromStringConverter := TListObjectFromStringConverter}
     223{$DEFINE TGListItemArray := TListObjectItemArray}
    207224{$DEFINE IMPLEMENTATION}
    208225{$I 'GenericListObject.inc'}
     
    215232{$DEFINE TGListToStringConverter := TListMethodToStringConverter}
    216233{$DEFINE TGListFromStringConverter := TListMethodFromStringConverter}
     234{$DEFINE TGListItemArray := TListMethodItemArray}
    217235{$DEFINE IMPLEMENTATION}
    218236{$I 'GenericList.inc'}
  • Generics/TemplateGenerics/Specialized/SpecializedQueue.pas

    r91 r112  
    1919{$DEFINE TGQueueToStringConverter := TQueueToStringConverterInteger}
    2020{$DEFINE TGQueueFromStringConverter := TQueueFromStringConverterInteger}
     21{$DEFINE TGQueueItemArray := TQueueIntegerItemArray}
    2122{$DEFINE INTERFACE}
    2223{$I 'GenericQueue.inc'}
     
    3031{$DEFINE TGQueueToStringConverter := TQueueToStringConverterPointer}
    3132{$DEFINE TGQueueFromStringConverter := TQueueFromStringConverterPointer}
     33{$DEFINE TGQueueItemArray := TQueuePointerItemArray}
    3234{$DEFINE INTERFACE}
    3335{$I 'GenericQueue.inc'}
     
    4143{$DEFINE TGQueueToStringConverter := TQueueToStringConverterByte}
    4244{$DEFINE TGQueueFromStringConverter := TQueueFromStringConverterByte}
     45{$DEFINE TGQueueItemArray := TQueueByteItemArray}
    4346{$DEFINE INTERFACE}
    4447{$I 'GenericQueue.inc'}
     
    5760{$DEFINE TGQueueToStringConverter := TQueueToStringConverterInteger}
    5861{$DEFINE TGQueueFromStringConverter := TQueueFromStringConverterInteger}
     62{$DEFINE TGQueueItemArray := TQueueIntegerItemArray}
    5963{$DEFINE IMPLEMENTATION}
    6064{$I '..\Generic\GenericQueue.inc'}
     
    6872{$DEFINE TGQueueToStringConverter := TQueueToStringConverterPointer}
    6973{$DEFINE TGQueueFromStringConverter := TQueueFromStringConverterPointer}
     74{$DEFINE TGQueueItemArray := TQueuePointerItemArray}
    7075{$DEFINE IMPLEMENTATION}
    7176{$I 'GenericQueue.inc'}
     
    7984{$DEFINE TGQueueToStringConverter := TQueueToStringConverterByte}
    8085{$DEFINE TGQueueFromStringConverter := TQueueFromStringConverterByte}
     86{$DEFINE TGQueueItemArray := TQueueByteItemArray}
    8187{$DEFINE IMPLEMENTATION}
    8288{$I 'GenericQueue.inc'}
  • Generics/TemplateGenerics/Specialized/SpecializedSet.pas

    r91 r112  
    1919{$DEFINE TGSetToStringConverter := TSetToStringConverterInteger}
    2020{$DEFINE TGSetFromStringConverter := TSetFromStringConverterInteger}
     21{$DEFINE TGSetItemArray := TSetIntegerItemArray}
    2122{$DEFINE INTERFACE}
    2223{$I 'GenericSet.inc'}
     
    3031{$DEFINE TGSetToStringConverter := TSetToStringConverterPointer}
    3132{$DEFINE TGSetFromStringConverter := TSetFromStringConverterPointer}
     33{$DEFINE TGSetItemArray := TSetPointerItemArray}
    3234{$DEFINE INTERFACE}
    3335{$I 'GenericSet.inc'}
     
    4648{$DEFINE TGSetToStringConverter := TSetToStringConverterInteger}
    4749{$DEFINE TGSetFromStringConverter := TSetFromStringConverterInteger}
     50{$DEFINE TGSetItemArray := TSetIntegerItemArray}
    4851{$DEFINE IMPLEMENTATION}
    4952{$I 'GenericSet.inc'}
     
    5760{$DEFINE TGSetToStringConverter := TSetToStringConverterPointer}
    5861{$DEFINE TGSetFromStringConverter := TSetFromStringConverterPointer}
     62{$DEFINE TGSetItemArray := TSetPointerItemArray}
    5963{$DEFINE IMPLEMENTATION}
    6064{$I 'GenericSet.inc'}
  • Generics/TemplateGenerics/Specialized/SpecializedStack.pas

    r91 r112  
    1919{$DEFINE TGStackToStringConverter := TStackToStringConverterInteger}
    2020{$DEFINE TGStackFromStringConverter := TStackFromStringConverterInteger}
     21{$DEFINE TGStackItemArray := TStackIntegerItemArray}
    2122{$DEFINE INTERFACE}
    2223{$I 'GenericStack.inc'}
     
    3031{$DEFINE TGStackToStringConverter := TStackToStringConverterPointer}
    3132{$DEFINE TGStackFromStringConverter := TStackFromStringConverterPointer}
     33{$DEFINE TGStackItemArray := TStackStringItemArray}
    3234{$DEFINE INTERFACE}
    3335{$I 'GenericStack.inc'}
     
    4749{$DEFINE TGStackToStringConverter := TStackToStringConverterInteger}
    4850{$DEFINE TGStackFromStringConverter := TStackFromStringConverterInteger}
     51{$DEFINE TGStackItemArray := TStackIntegerItemArray}
    4952{$DEFINE IMPLEMENTATION}
    5053{$I 'GenericStack.inc'}
     
    5861{$DEFINE TGStackToStringConverter := TStackToStringConverterPointer}
    5962{$DEFINE TGStackFromStringConverter := TStackFromStringConverterPointer}
     63{$DEFINE TGStackItemArray := TStackStringItemArray}
    6064{$DEFINE IMPLEMENTATION}
    6165{$I 'GenericStack.inc'}
  • Generics/TemplateGenerics/Specialized/SpecializedTree.pas

    r91 r112  
    1919{$DEFINE TGTreeToStringConverter := TTreeToStringConverterInteger}
    2020{$DEFINE TGTreeFromStringConverter := TTreeFromStringConverterInteger}
     21{$DEFINE TGTreeItemArray := TTreeIntegerItemArray}
    2122{$DEFINE INTERFACE}
    2223{$I 'GenericTree.inc'}
     
    3132{$DEFINE TGTreeToStringConverter := TTreeToStringConverterString}
    3233{$DEFINE TGTreeFromStringConverter := TTreeFromStringConverterString}
     34{$DEFINE TGTreeItemArray := TTreeStringItemArray}
    3335{$DEFINE INTERFACE}
    3436{$I 'GenericTree.inc'}
     
    4345{$DEFINE TGTreeToStringConverter := TTreeToStringConverterPointer}
    4446{$DEFINE TGTreeFromStringConverter := TTreeFromStringConverterPointer}
     47{$DEFINE TGTreeItemArray := TTreePointerItemArray}
    4548{$DEFINE INTERFACE}
    4649{$I 'GenericTree.inc'}
     
    6063{$DEFINE TGTreeToStringConverter := TTreeToStringConverterInteger}
    6164{$DEFINE TGTreeFromStringConverter := TTreeFromStringConverterInteger}
     65{$DEFINE TGTreeItemArray := TTreeIntegerItemArray}
    6266{$DEFINE IMPLEMENTATION}
    6367{$I 'GenericTree.inc'}
     
    7276{$DEFINE TGTreeToStringConverter := TTreeToStringConverterString}
    7377{$DEFINE TGTreeFromStringConverter := TTreeFromStringConverterString}
     78{$DEFINE TGTreeItemArray := TTreeStringItemArray}
    7479{$DEFINE IMPLEMENTATION}
    7580{$I 'GenericTree.inc'}
     
    8489{$DEFINE TGTreeToStringConverter := TTreeToStringConverterPointer}
    8590{$DEFINE TGTreeFromStringConverter := TTreeFromStringConverterPointer}
     91{$DEFINE TGTreeItemArray := TTreePointerItemArray}
    8692{$DEFINE IMPLEMENTATION}
    8793{$I 'GenericTree.inc'}
Note: See TracChangeset for help on using the changeset viewer.