Changeset 324 for Generics/NativeGenerics/Units
- Timestamp:
- Feb 8, 2012, 1:04:21 PM (14 years ago)
- Location:
- Generics/NativeGenerics/Units
- Files:
-
- 2 added
- 1 deleted
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
Generics/NativeGenerics/Units/GenericList.pas
r322 r324 10 10 type 11 11 12 { TG List }13 14 TG List<TItem> = class12 { TGAbstractList } 13 14 TGAbstractList<TItem> = class 15 15 public 16 16 type … … 21 21 TItemArray = array of TItem; 22 22 private 23 function GetLast: TItem; virtual; abstract; 24 procedure SetLast(AValue: TItem); virtual; abstract; 25 function GetFirst: TItem; virtual; abstract; 26 procedure SetFirst(AValue: TItem); virtual; abstract; 27 function GetCount: TIndex; virtual; abstract; 28 procedure SetCount(const AValue: TIndex); virtual; abstract; 29 procedure SetCapacity(const AValue: TIndex); virtual; abstract; 30 function GetCapacity: TIndex; virtual; abstract; 31 function Get(Index: TIndex): TItem; virtual; abstract; 32 procedure Put(Index: TIndex; const AValue: TItem); virtual; abstract; 33 public 34 constructor Create; virtual; 35 property Count: TIndex read GetCount write SetCount; 36 property Capacity: TIndex read GetCapacity write SetCapacity; 37 property Items[Index: TIndex]: TItem read Get write Put; default; 38 property First: TItem read GetFirst write SetFirst; 39 property Last: TItem read GetLast write SetLast; 40 end; 41 42 { TGList } 43 44 TGList<TItem> = class(TGAbstractList<TItem>) 45 private 23 46 FCount: TIndex; 24 47 FItems: array of TItem; 25 function Get(Index: TIndex): TItem; 26 function GetCapacity: TIndex; 27 function GetFirst: TItem; 28 function GetLast: TItem; 29 procedure SetCapacity(const AValue: TIndex); 48 function Get(Index: TIndex): TItem; override; 49 function GetCapacity: TIndex; override; 50 function GetFirst: TItem; override; 51 function GetLast: TItem; override; 52 function GetCount: TIndex; override; 53 procedure SetCapacity(const AValue: TIndex); override; 30 54 procedure SetCapacityOptimized(const NewCapacity: TIndex); 31 procedure SetCount(const AValue: TIndex); 32 procedure SetFirst(AValue: TItem); 33 procedure SetLast(AValue: TItem); 34 procedure Put(Index: TIndex; const AValue: TItem); virtual;55 procedure SetCount(const AValue: TIndex); override; 56 procedure SetFirst(AValue: TItem); override; 57 procedure SetLast(AValue: TItem); override; 58 procedure Put(Index: TIndex; const AValue: TItem); override; 35 59 procedure QuickSort(L, R : TIndex; Compare: TSortCompare); 36 60 public … … 47 71 procedure Explode(Text, Separator: string; Converter: TFromStringConverter; SlicesCount: Integer = -1); 48 72 function Extract(Item: TItem): TItem; 49 property First: TItem read GetFirst write SetFirst;50 73 procedure Fill(Start, Count: TIndex; Value: TItem); 51 74 function GetArray(Index, ACount: TIndex): TItemArray; … … 68 91 procedure Sort(Compare: TSortCompare); 69 92 procedure SetArray(Values: array of TItem); 70 property Count: TIndex read FCount write SetCount;71 property Capacity: TIndex read GetCapacity write SetCapacity;72 property Items[Index: TIndex]: TItem read Get write Put; default;73 property Last: TItem read GetLast write SetLast;74 93 end; 75 94 … … 82 101 procedure Clear; override; 83 102 procedure Assign(Source: TGList<TItem>); override; 84 constructor Create; 103 constructor Create; override; 85 104 destructor Destroy; override; 86 105 end; … … 286 305 end; 287 306 307 function TGList<TItem>.GetCount: TIndex; 308 begin 309 Result := FCount; 310 end; 311 288 312 procedure TGList<TItem>.SetLast(AValue: TItem); 289 313 begin … … 663 687 end; 664 688 689 { TGAbstractList<TItem> } 690 691 constructor TGAbstractList<TItem>.Create; 692 begin 693 end; 694 665 695 end. -
Generics/NativeGenerics/Units/GenericMatrix.pas
r321 r324 9 9 10 10 type 11 TG Matrix<TItem> = class11 TGAbstractMatrix<TItem> = class 12 12 public 13 13 type … … 24 24 Y: TIndexY; 25 25 end; 26 protected 27 function GetItemXY(X: TIndexX; Y: TIndexY): TItem; virtual; abstract; 28 procedure PutItemXY(X: TIndexX; Y: TIndexY; const AValue: TItem); virtual; abstract; 29 function GetItem(Index: TIndex): TItem; virtual; abstract; 30 function GetCapacity: TIndex; virtual; abstract; 31 function GetLast: TItem; virtual; abstract; 32 function GetFirst: TItem; virtual; abstract; 33 function GetCount: TIndex; virtual; abstract; 34 procedure SetLast(AValue: TItem); virtual; abstract; 35 procedure SetFirst(AValue: TItem); virtual; abstract; 36 procedure PutItem(Index: TIndex; const AValue: TItem); virtual; abstract; 37 procedure SetCount(const AValue: TIndex); virtual; abstract; 38 public 39 property Count: TIndex read GetCount write SetCount; 40 property ItemsXY[X: TIndexX; Y: TIndexY]: TItem 41 read GetItemXY write PutItemXY; default; 42 property Items[Index: TIndex]: TItem 43 read GetItem write PutItem; 44 property Last: TItem read GetLast write SetLast; 45 end; 46 47 TGMatrix<TItem> = class(TGAbstractMatrix<TItem>) 48 public 49 type 50 TIndex = TGAbstractMatrix<TItem>.TIndex; 51 protected 52 function GetItemXY(X: TIndexX; Y: TIndexY): TItem; override; 53 procedure PutItemXY(X: TIndexX; Y: TIndexY; const AValue: TItem); override; 54 function GetItem(Index: TIndex): TItem; override; 55 function GetLast: TItem; override; 56 function GetFirst: TItem; override; 57 function GetCount: TIndex; override; 58 procedure SetLast(AValue: TItem); override; 59 procedure SetFirst(AValue: TItem); override; 60 procedure PutItem(Index: TIndex; const AValue: TItem); override; 61 procedure SetCount(const AValue: TIndex); override; 26 62 private 27 63 FItems: array of array of TItem; 28 64 FCount: TIndex; 29 function GetItemXY(X: TIndexX; Y: TIndexY): TItem; 30 function GetItem(Index: TIndex): TItem; 31 function GetCapacity: TIndex; 32 function GetLast: TItem; 33 function GetFirst: TItem; 65 function GetCapacity: TIndex; override; 34 66 procedure SetCapacity(const AValue: TIndex); 35 procedure SetLast(AValue: TItem);36 procedure SetFirst(AValue: TItem);37 procedure PutItemXY(X: TIndexX; Y: TIndexY; const AValue: TItem); virtual;38 procedure PutItem(Index: TIndex; const AValue: TItem); virtual;39 procedure SetCount(const AValue: TIndex);40 67 public 41 68 function Add(Item: TItem): TIndex; … … 72 99 procedure Sort(Compare: TSortCompare); 73 100 procedure SetArray(Values: array of TItem); 74 property Count: TIndex read FCount write SetCount;75 101 property Capacity: TIndex read GetCapacity write SetCapacity; 76 property ItemsXY[X: TIndexX; Y: TIndexY]: TItem 77 read GetItemXY write PutItemXY; default; 78 property Items[Index: TIndex]: TItem 79 read GetItem write PutItem; 80 property Last: TItem read GetLast write SetLast; 102 end; 103 104 TGRawMatrix<TItem> = class(TGAbstractMatrix<TItem>) 105 public 106 type 107 TIndex = TGAbstractMatrix<TItem>.TIndex; 108 private 109 FData: Pointer; 110 FCount: TIndex; 81 111 end; 82 112 … … 620 650 end; 621 651 652 function TGMatrix<TItem>.GetCount: TIndex; 653 begin 654 Result := FCount; 655 end; 656 657 622 658 end.
Note:
See TracChangeset
for help on using the changeset viewer.