- Timestamp:
- Jan 3, 2011, 3:25:24 PM (14 years ago)
- Location:
- Generics/TemplateGenerics
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
Generics/TemplateGenerics/Demo/Demo.lpi
r111 r112 312 312 <Unit32> 313 313 <Filename Value="../Generic/GenericList.inc"/> 314 <IsVisibleTab Value="True"/> 314 315 <EditorIndex Value="6"/> 315 316 <WindowIndex Value="0"/> 316 317 <TopLine Value="462"/> 317 <CursorPos X=" 30" Y="470"/>318 <CursorPos X="40" Y="470"/> 318 319 <UsageCount Value="107"/> 319 320 <Loaded Value="True"/> … … 520 521 <Unit59> 521 522 <Filename Value="../../../../../Programy/Lazarus/fpc/2.4.3/source/rtl/objpas/classes/classesh.inc"/> 522 <IsVisibleTab Value="True"/>523 523 <EditorIndex Value="1"/> 524 524 <WindowIndex Value="0"/> 525 525 <TopLine Value="649"/> 526 <CursorPos X=" 23" Y="661"/>526 <CursorPos X="38" Y="671"/> 527 527 <UsageCount Value="10"/> 528 528 <Loaded Value="True"/> -
Generics/TemplateGenerics/Generic/GenericDictionary.inc
r91 r112 14 14 {$DEFINE TGListToStringConverter := TDictionaryToStringConverter} 15 15 {$DEFINE TGListFromStringConverter := TDictionaryFromStringConverter} 16 {$DEFINE TGListItemArray := TDictionaryItemArray} 16 17 {$DEFINE INTERFACE} 17 18 {$I 'GenericList.inc'} … … 48 49 {$DEFINE TGListToStringConverter := TDictionaryToStringConverter} 49 50 {$DEFINE TGListFromStringConverter := TDictionaryFromStringConverter} 51 {$DEFINE TGListItemArray := TDictionaryItemArray} 50 52 {$DEFINE IMPLEMENTATION} 51 53 {$I 'GenericList.inc'} -
Generics/TemplateGenerics/Generic/GenericList.inc
r109 r112 6 6 TGListToStringConverter = function(Item: TGListItem): string; 7 7 TGListFromStringConverter = function(Text: string): TGListItem; 8 TGListItemArray = array of TGListItem; 8 9 9 10 // TGList<TGListIndex, TGListItem> = class … … 32 33 procedure DeleteItems(Index, Count: TGListIndex); 33 34 function EqualTo(List: TGList): Boolean; 35 procedure Exchange(Index1, Index2: TGListIndex); 36 procedure Explode(Text, Separator: string; Converter: TGListFromStringConverter; SlicesCount: Integer = -1); 34 37 function Extract(Item: TGListItem): TGListItem; 35 procedure Exchange(Index1, Index2: TGListIndex);36 38 property First: TGListItem read GetFirst write SetFirst; 37 39 procedure Fill(Start, Count: TGListIndex; Value: TGListItem); 40 function GetArray: TGListItemArray; 38 41 function Implode(Separator: string; Converter: TGListToStringConverter): string; 39 procedure Explode(Text, Separator: string; Converter: TGListFromStringConverter; SlicesCount: Integer = -1);40 42 function IndexOf(Item: TGListItem; Start: TGListIndex = 0): TGListIndex; 41 43 function IndexOfList(List: TGList; Start: TGListIndex = 0): TGListIndex; … … 48 50 procedure Reverse; 49 51 procedure Sort(Compare: TGListSortCompare); 50 procedure SetArray(Values: array of TGListItem);52 procedure SetArray(Values: TGListItemArray); 51 53 property Count: TGListIndex read FCount write SetCount; 52 54 property Capacity: TGListIndex read GetCapacity write SetCapacity; … … 123 125 FCount := AValue; 124 126 if AValue < Capacity then SetCapacityOptimized(AValue); // After FCount change 127 end; 128 129 function TGList.GetArray: TGListItemArray; 130 var 131 I: Integer; 132 begin 133 SetLength(Result, Count); 134 I := 0; 135 while I < Count do begin 136 Result[I] := FItems[I]; 137 I := I + 1; 138 end; 125 139 end; 126 140 … … 181 195 begin 182 196 Result := Start; 183 // Use slower CompareMem instead of (FItems[Result] <> Item) to support records184 197 while (Result < FCount) and 185 198 not CompareMem(Addr(FItems[Result]), Addr(Item), SizeOf(TGListItem)) do … … 358 371 end; 359 372 360 procedure TGList.SetArray(Values: array of TGListItem);373 procedure TGList.SetArray(Values: TGListItemArray); 361 374 var 362 375 I: TGListIndex; -
Generics/TemplateGenerics/Generic/GenericListObject.inc
r101 r112 7 7 {$DEFINE TGListToStringConverter := TGListObjectToStringConverter} 8 8 {$DEFINE TGListFromStringConverter := TGListObjectFromStringConverter} 9 {$DEFINE TGListItemArray := TGListObjectItemArray} 9 10 {$DEFINE INTERFACE} 10 11 {$I 'GenericList.inc'} … … 42 43 {$DEFINE TGListToStringConverter := TGListObjectToStringConverter} 43 44 {$DEFINE TGListFromStringConverter := TGListObjectFromStringConverter} 45 {$DEFINE TGListItemArray := TGListObjectItemArray} 44 46 {$DEFINE IMPLEMENTATION} 45 47 {$I 'GenericList.inc'} -
Generics/TemplateGenerics/Generic/GenericListString.inc
r101 r112 7 7 {$DEFINE TGListToStringConverter := TGListStringToStringConverter} 8 8 {$DEFINE TGListFromStringConverter := TGListStringFromStringConverter} 9 {$DEFINE TGListItemArray := TGListStringItemArray} 9 10 {$DEFINE INTERFACE} 10 11 {$I 'GenericList.inc'} … … 40 41 {$DEFINE TGListToStringConverter := TGListStringToStringConverter} 41 42 {$DEFINE TGListFromStringConverter := TGListStringFromStringConverter} 43 {$DEFINE TGListItemArray := TGListStringItemArray} 42 44 {$DEFINE IMPLEMENTATION} 43 45 {$I 'GenericList.inc'} -
Generics/TemplateGenerics/Generic/GenericQueue.inc
r91 r112 7 7 {$DEFINE TGListToStringConverter := TGQueueToStringConverter} 8 8 {$DEFINE TGListFromStringConverter := TGQueueFromStringConverter} 9 {$DEFINE TGListItemArray := TGQueueItemArray} 9 10 {$DEFINE INTERFACE} 10 11 {$I 'GenericList.inc'} … … 42 43 {$DEFINE TGListToStringConverter := TGQueueToStringConverter} 43 44 {$DEFINE TGListFromStringConverter := TGQueueFromStringConverter} 45 {$DEFINE TGListItemArray := TGQueueItemArray} 44 46 {$DEFINE IMPLEMENTATION} 45 47 {$I 'GenericList.inc'} -
Generics/TemplateGenerics/Generic/GenericSet.inc
r91 r112 7 7 {$DEFINE TGListToStringConverter := TGSetToStringConverter} 8 8 {$DEFINE TGListFromStringConverter := TGSetFromStringConverter} 9 {$DEFINE TGListItemArray := TGSetItemArray} 9 10 {$DEFINE INTERFACE} 10 11 {$I 'GenericList.inc'} … … 40 41 {$DEFINE TGListToStringConverter := TGSetToStringConverter} 41 42 {$DEFINE TGListFromStringConverter := TGSetFromStringConverter} 43 {$DEFINE TGListItemArray := TGSetItemArray} 42 44 {$DEFINE IMPLEMENTATION} 43 45 {$I 'GenericList.inc'} -
Generics/TemplateGenerics/Generic/GenericStack.inc
r91 r112 7 7 {$DEFINE TGListToStringConverter := TGStackToStringConverter} 8 8 {$DEFINE TGListFromStringConverter := TGStackFromStringConverter} 9 {$DEFINE TGListItemArray := TGStackItemArray} 9 10 {$DEFINE INTERFACE} 10 11 {$I 'GenericList.inc'} … … 41 42 {$DEFINE TGListToStringConverter := TGStackToStringConverter} 42 43 {$DEFINE TGListFromStringConverter := TGStackFromStringConverter} 44 {$DEFINE TGListItemArray := TGStackItemArray} 43 45 {$DEFINE IMPLEMENTATION} 44 46 {$I 'GenericList.inc'} -
Generics/TemplateGenerics/Generic/GenericTree.inc
r91 r112 9 9 {$DEFINE TGListToStringConverter := TGTreeToStringConverter} 10 10 {$DEFINE TGListFromStringConverter := TGTreeFromStringConverter} 11 {$DEFINE TGListItemArray := TGTreeItemArray} 11 12 {$DEFINE INTERFACE} 12 13 {$I 'GenericList.inc'} … … 46 47 {$DEFINE TGListToStringConverter := TGTreeToStringConverter} 47 48 {$DEFINE TGListFromStringConverter := TGTreeFromStringConverter} 49 {$DEFINE TGListItemArray := TGTreeItemArray} 48 50 {$DEFINE IMPLEMENTATION} 49 51 {$I 'GenericList.inc'} -
Generics/TemplateGenerics/Specialized/SpecializedDictionary.pas
r91 r112 21 21 {$DEFINE TGDictionaryToStringConverter := TDictionaryToStringConverterInteger} 22 22 {$DEFINE TGDictionaryFromStringConverter := TDictionaryFromStringConverterInteger} 23 {$DEFINE TGDictionaryItemArray := TDictionaryStringItemArray} 23 24 {$DEFINE INTERFACE} 24 25 {$I 'GenericDictionary.inc'} … … 36 37 {$DEFINE TGDictionaryToStringConverter := TDictionaryToStringConverterInteger} 37 38 {$DEFINE TGDictionaryFromStringConverter := TDictionaryFromStringConverterInteger} 39 {$DEFINE TGDictionaryItemArray := TDictionaryStringItemArray} 38 40 {$DEFINE IMPLEMENTATION} 39 41 {$I 'GenericDictionary.inc'} -
Generics/TemplateGenerics/Specialized/SpecializedList.pas
r102 r112 18 18 {$DEFINE TGListToStringConverter := TListIntegerToStringConverter} 19 19 {$DEFINE TGListFromStringConverter := TListIntegerFromStringConverter} 20 {$DEFINE TGListItemArray := TListIntegerItemArray} 20 21 {$DEFINE INTERFACE} 21 22 {$I 'GenericList.inc'} … … 28 29 {$DEFINE TGListToStringConverter := TListSmallIntToStringConverter} 29 30 {$DEFINE TGListFromStringConverter := TListSmallIntFromStringConverter} 31 {$DEFINE TGListItemArray := TListSmallIntItemArray} 30 32 {$DEFINE INTERFACE} 31 33 {$I 'GenericList.inc'} … … 38 40 {$DEFINE TGListToStringConverter := TListDoubleToStringConverter} 39 41 {$DEFINE TGListFromStringConverter := TListDoubleFromStringConverter} 42 {$DEFINE TGListItemArray := TListDoubleItemArray} 40 43 {$DEFINE INTERFACE} 41 44 {$INCLUDE '..\Generic\GenericList.inc'} … … 48 51 {$DEFINE TGListToStringConverter := TListPointerToStringConverter} 49 52 {$DEFINE TGListFromStringConverter := TListPointerFromStringConverter} 53 {$DEFINE TGListItemArray := TListPointerItemArray} 50 54 {$DEFINE INTERFACE} 51 55 {$I 'GenericList.inc'} … … 58 62 {$DEFINE TGListStringToStringConverter := TListStringToStringConverter} 59 63 {$DEFINE TGListStringFromStringConverter := TListStringFromStringConverter} 64 {$DEFINE TGListItemArray := TListStringItemArray} 60 65 {$DEFINE INTERFACE} 61 66 {$I 'GenericListString.inc'} … … 68 73 {$DEFINE TGListToStringConverter := TListByteToStringConverter} 69 74 {$DEFINE TGListFromStringConverter := TListByteFromStringConverter} 75 {$DEFINE TGListItemArray := TListByteItemArray} 70 76 {$DEFINE INTERFACE} 71 77 {$I 'GenericList.inc'} … … 78 84 {$DEFINE TGListToStringConverter := TListToStringConverterChar} 79 85 {$DEFINE TGListFromStringConverter := TListFromStringConverterChar} 86 {$DEFINE TGListItemArray := TListStringItemArray} 80 87 {$DEFINE INTERFACE} 81 88 {$I 'GenericList.inc'} … … 89 96 {$DEFINE TGListObjectToStringConverter := TListObjectToStringConverter} 90 97 {$DEFINE TGListObjectFromStringConverter := TListObjectFromStringConverter} 98 {$DEFINE TGListItemArray := TListObjectItemArray} 91 99 {$DEFINE INTERFACE} 92 100 {$I 'GenericListObject.inc'} … … 111 119 {$DEFINE TGListToStringConverter := TListMethodToStringConverter} 112 120 {$DEFINE TGListFromStringConverter := TListMethodFromStringConverter} 121 {$DEFINE TGListItemArray := TListMethodItemArray} 113 122 {$DEFINE INTERFACE} 114 123 {$I 'GenericList.inc'} … … 128 137 129 138 // 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} 136 146 {$DEFINE IMPLEMENTATION} 137 147 {$I 'GenericList.inc'} … … 144 154 {$DEFINE TGListToStringConverter:=TListSmallIntToStringConverter} 145 155 {$DEFINE TGListFromStringConverter:=TListSmallIntFromStringConverter} 156 {$DEFINE TGListItemArray := TListSmallIntItemArray} 146 157 {$DEFINE IMPLEMENTATION} 147 158 {$I 'GenericList.inc'} … … 154 165 {$DEFINE TGListToStringConverter := TListDoubleToStringConverter} 155 166 {$DEFINE TGListFromStringConverter := TListDoubleFromStringConverter} 167 {$DEFINE TGListItemArray := TListDoubleItemArray} 156 168 {$DEFINE IMPLEMENTATION} 157 169 {$I 'GenericList.inc'} … … 164 176 {$DEFINE TGListToStringConverter := TListPointerToStringConverter} 165 177 {$DEFINE TGListFromStringConverter := TListPointerFromStringConverter} 178 {$DEFINE TGListItemArray := TListPointerItemArray} 166 179 {$DEFINE IMPLEMENTATION} 167 180 {$I 'GenericList.inc'} … … 174 187 {$DEFINE TGListStringToStringConverter := TListStringToStringConverter} 175 188 {$DEFINE TGListStringFromStringConverter := TListStringFromStringConverter} 189 {$DEFINE TGListItemArray := TListStringItemArray} 176 190 {$DEFINE IMPLEMENTATION} 177 191 {$I 'GenericListString.inc'} … … 184 198 {$DEFINE TGListToStringConverter := TListByteToStringConverter} 185 199 {$DEFINE TGListFromStringConverter := TListByteFromStringConverter} 200 {$DEFINE TGListItemArray := TListByteItemArray} 186 201 {$DEFINE IMPLEMENTATION} 187 202 {$I 'GenericList.inc'} … … 194 209 {$DEFINE TGListToStringConverter := TListToStringConverterChar} 195 210 {$DEFINE TGListFromStringConverter := TListFromStringConverterChar} 211 {$DEFINE TGListItemArray := TListStringItemArray} 196 212 {$DEFINE IMPLEMENTATION} 197 213 {$I 'GenericList.inc'} … … 205 221 {$DEFINE TGListObjectToStringConverter := TListObjectToStringConverter} 206 222 {$DEFINE TGListObjectFromStringConverter := TListObjectFromStringConverter} 223 {$DEFINE TGListItemArray := TListObjectItemArray} 207 224 {$DEFINE IMPLEMENTATION} 208 225 {$I 'GenericListObject.inc'} … … 215 232 {$DEFINE TGListToStringConverter := TListMethodToStringConverter} 216 233 {$DEFINE TGListFromStringConverter := TListMethodFromStringConverter} 234 {$DEFINE TGListItemArray := TListMethodItemArray} 217 235 {$DEFINE IMPLEMENTATION} 218 236 {$I 'GenericList.inc'} -
Generics/TemplateGenerics/Specialized/SpecializedQueue.pas
r91 r112 19 19 {$DEFINE TGQueueToStringConverter := TQueueToStringConverterInteger} 20 20 {$DEFINE TGQueueFromStringConverter := TQueueFromStringConverterInteger} 21 {$DEFINE TGQueueItemArray := TQueueIntegerItemArray} 21 22 {$DEFINE INTERFACE} 22 23 {$I 'GenericQueue.inc'} … … 30 31 {$DEFINE TGQueueToStringConverter := TQueueToStringConverterPointer} 31 32 {$DEFINE TGQueueFromStringConverter := TQueueFromStringConverterPointer} 33 {$DEFINE TGQueueItemArray := TQueuePointerItemArray} 32 34 {$DEFINE INTERFACE} 33 35 {$I 'GenericQueue.inc'} … … 41 43 {$DEFINE TGQueueToStringConverter := TQueueToStringConverterByte} 42 44 {$DEFINE TGQueueFromStringConverter := TQueueFromStringConverterByte} 45 {$DEFINE TGQueueItemArray := TQueueByteItemArray} 43 46 {$DEFINE INTERFACE} 44 47 {$I 'GenericQueue.inc'} … … 57 60 {$DEFINE TGQueueToStringConverter := TQueueToStringConverterInteger} 58 61 {$DEFINE TGQueueFromStringConverter := TQueueFromStringConverterInteger} 62 {$DEFINE TGQueueItemArray := TQueueIntegerItemArray} 59 63 {$DEFINE IMPLEMENTATION} 60 64 {$I '..\Generic\GenericQueue.inc'} … … 68 72 {$DEFINE TGQueueToStringConverter := TQueueToStringConverterPointer} 69 73 {$DEFINE TGQueueFromStringConverter := TQueueFromStringConverterPointer} 74 {$DEFINE TGQueueItemArray := TQueuePointerItemArray} 70 75 {$DEFINE IMPLEMENTATION} 71 76 {$I 'GenericQueue.inc'} … … 79 84 {$DEFINE TGQueueToStringConverter := TQueueToStringConverterByte} 80 85 {$DEFINE TGQueueFromStringConverter := TQueueFromStringConverterByte} 86 {$DEFINE TGQueueItemArray := TQueueByteItemArray} 81 87 {$DEFINE IMPLEMENTATION} 82 88 {$I 'GenericQueue.inc'} -
Generics/TemplateGenerics/Specialized/SpecializedSet.pas
r91 r112 19 19 {$DEFINE TGSetToStringConverter := TSetToStringConverterInteger} 20 20 {$DEFINE TGSetFromStringConverter := TSetFromStringConverterInteger} 21 {$DEFINE TGSetItemArray := TSetIntegerItemArray} 21 22 {$DEFINE INTERFACE} 22 23 {$I 'GenericSet.inc'} … … 30 31 {$DEFINE TGSetToStringConverter := TSetToStringConverterPointer} 31 32 {$DEFINE TGSetFromStringConverter := TSetFromStringConverterPointer} 33 {$DEFINE TGSetItemArray := TSetPointerItemArray} 32 34 {$DEFINE INTERFACE} 33 35 {$I 'GenericSet.inc'} … … 46 48 {$DEFINE TGSetToStringConverter := TSetToStringConverterInteger} 47 49 {$DEFINE TGSetFromStringConverter := TSetFromStringConverterInteger} 50 {$DEFINE TGSetItemArray := TSetIntegerItemArray} 48 51 {$DEFINE IMPLEMENTATION} 49 52 {$I 'GenericSet.inc'} … … 57 60 {$DEFINE TGSetToStringConverter := TSetToStringConverterPointer} 58 61 {$DEFINE TGSetFromStringConverter := TSetFromStringConverterPointer} 62 {$DEFINE TGSetItemArray := TSetPointerItemArray} 59 63 {$DEFINE IMPLEMENTATION} 60 64 {$I 'GenericSet.inc'} -
Generics/TemplateGenerics/Specialized/SpecializedStack.pas
r91 r112 19 19 {$DEFINE TGStackToStringConverter := TStackToStringConverterInteger} 20 20 {$DEFINE TGStackFromStringConverter := TStackFromStringConverterInteger} 21 {$DEFINE TGStackItemArray := TStackIntegerItemArray} 21 22 {$DEFINE INTERFACE} 22 23 {$I 'GenericStack.inc'} … … 30 31 {$DEFINE TGStackToStringConverter := TStackToStringConverterPointer} 31 32 {$DEFINE TGStackFromStringConverter := TStackFromStringConverterPointer} 33 {$DEFINE TGStackItemArray := TStackStringItemArray} 32 34 {$DEFINE INTERFACE} 33 35 {$I 'GenericStack.inc'} … … 47 49 {$DEFINE TGStackToStringConverter := TStackToStringConverterInteger} 48 50 {$DEFINE TGStackFromStringConverter := TStackFromStringConverterInteger} 51 {$DEFINE TGStackItemArray := TStackIntegerItemArray} 49 52 {$DEFINE IMPLEMENTATION} 50 53 {$I 'GenericStack.inc'} … … 58 61 {$DEFINE TGStackToStringConverter := TStackToStringConverterPointer} 59 62 {$DEFINE TGStackFromStringConverter := TStackFromStringConverterPointer} 63 {$DEFINE TGStackItemArray := TStackStringItemArray} 60 64 {$DEFINE IMPLEMENTATION} 61 65 {$I 'GenericStack.inc'} -
Generics/TemplateGenerics/Specialized/SpecializedTree.pas
r91 r112 19 19 {$DEFINE TGTreeToStringConverter := TTreeToStringConverterInteger} 20 20 {$DEFINE TGTreeFromStringConverter := TTreeFromStringConverterInteger} 21 {$DEFINE TGTreeItemArray := TTreeIntegerItemArray} 21 22 {$DEFINE INTERFACE} 22 23 {$I 'GenericTree.inc'} … … 31 32 {$DEFINE TGTreeToStringConverter := TTreeToStringConverterString} 32 33 {$DEFINE TGTreeFromStringConverter := TTreeFromStringConverterString} 34 {$DEFINE TGTreeItemArray := TTreeStringItemArray} 33 35 {$DEFINE INTERFACE} 34 36 {$I 'GenericTree.inc'} … … 43 45 {$DEFINE TGTreeToStringConverter := TTreeToStringConverterPointer} 44 46 {$DEFINE TGTreeFromStringConverter := TTreeFromStringConverterPointer} 47 {$DEFINE TGTreeItemArray := TTreePointerItemArray} 45 48 {$DEFINE INTERFACE} 46 49 {$I 'GenericTree.inc'} … … 60 63 {$DEFINE TGTreeToStringConverter := TTreeToStringConverterInteger} 61 64 {$DEFINE TGTreeFromStringConverter := TTreeFromStringConverterInteger} 65 {$DEFINE TGTreeItemArray := TTreeIntegerItemArray} 62 66 {$DEFINE IMPLEMENTATION} 63 67 {$I 'GenericTree.inc'} … … 72 76 {$DEFINE TGTreeToStringConverter := TTreeToStringConverterString} 73 77 {$DEFINE TGTreeFromStringConverter := TTreeFromStringConverterString} 78 {$DEFINE TGTreeItemArray := TTreeStringItemArray} 74 79 {$DEFINE IMPLEMENTATION} 75 80 {$I 'GenericTree.inc'} … … 84 89 {$DEFINE TGTreeToStringConverter := TTreeToStringConverterPointer} 85 90 {$DEFINE TGTreeFromStringConverter := TTreeFromStringConverterPointer} 91 {$DEFINE TGTreeItemArray := TTreePointerItemArray} 86 92 {$DEFINE IMPLEMENTATION} 87 93 {$I 'GenericTree.inc'}
Note:
See TracChangeset
for help on using the changeset viewer.