Changeset 327 for Generics/NativeGenerics/Units
- Timestamp:
- Feb 9, 2012, 8:46:05 AM (14 years ago)
- Location:
- Generics/NativeGenerics/Units
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
Generics/NativeGenerics/Units/GenericList.pas
r326 r327 33 33 public 34 34 constructor Create; virtual; 35 function Add(Item: TItem): TIndex; virtual; abstract; 35 36 property Count: TIndex read GetCount write SetCount; 36 37 property Capacity: TIndex read GetCapacity write SetCapacity; … … 59 60 procedure QuickSort(L, R : TIndex; Compare: TSortCompare); 60 61 public 61 function Add(Item: TItem): TIndex; 62 function Add(Item: TItem): TIndex; override; 62 63 procedure AddArray(Values: array of TItem); 63 64 procedure AddList(List: TGList<TItem>); -
Generics/NativeGenerics/Units/GenericTree.pas
r326 r327 9 9 10 10 type 11 //TGAbstractTree<TItem> = class; 11 12 12 13 { TGAbstractTreeNode } 13 14 14 15 TGAbstractTreeNode<TItem> = class 15 private 16 public 17 type 18 TIndex = NativeInt; 19 TNode = TGAbstractTreeNode<TItem>; 20 protected 21 function GetCount: TIndex; virtual; abstract; 22 function GetItem(Index: TIndex): TItem; virtual; abstract; 16 23 function GetValue: TItem; virtual; abstract; 24 procedure SetCount(AValue: TIndex); virtual; abstract; 25 procedure SetItem(Index: TIndex; AValue: TItem); virtual; abstract; 17 26 procedure SetValue(AValue: TItem); virtual; abstract; 18 27 public 19 type 20 TNode = TGAbstractTreeNode<TItem>; 21 var 22 Childs: TGAbstractList<TNode>; 28 Parent: TGAbstractTreeNode<TItem>; 29 //Tree: TGAbstractTree<TItem>; 23 30 procedure Clear; virtual; abstract; 24 31 constructor Create; virtual; 25 32 destructor Destroy; override; 33 function Add(Item: TItem): TIndex; virtual; abstract; 34 property Count: TIndex read GetCount write SetCount; 35 property Items[Index: TIndex]: TItem read GetItem write SetItem; 26 36 property Value: TItem read GetValue write SetValue; 27 37 end; … … 32 42 public 33 43 type 44 TIndex = NativeInt; 34 45 TNode = TGAbstractTreeNode<TItem>; 35 TIndex = NativeInt;36 46 private 37 function GetItem(Index: TIndex): TItem; 38 procedure SetItem(Index: TIndex; AValue: TItem); 39 var 47 public 40 48 TopItem: TGAbstractTreeNode<TItem>; 41 procedure Clear; virtual; abstract;42 49 constructor Create; virtual; 43 property Items[Index: TIndex]: TItem read GetItem write SetItem;44 50 end; 45 51 52 53 { TGTreeNode } 46 54 47 55 TGTreeNode<TItem> = class(TGAbstractTreeNode<TItem>) 48 56 public 49 57 type 50 TNode = TG TreeNode<TItem>;58 TNode = TGAbstractTreeNode<TItem>; 51 59 private 52 60 FValue: TItem; 61 FItems: TGAbstractList<TNode>; 62 protected 63 function GetItem(Index: TIndex): TItem; override; 64 procedure SetItem(Index: TIndex; AValue: TItem); override; 65 function GetCount: TIndex; override; 66 procedure SetCount(AValue: TIndex); override; 53 67 function GetValue: TItem; override; 54 68 procedure SetValue(AValue: TItem); override; 55 69 public 70 function Add(Item: TItem): TIndex; override; 56 71 procedure Clear; override; 57 72 constructor Create; override; … … 59 74 end; 60 75 61 TGTree<TItem> = class 76 TGTree<TItem> = class(TGAbstractTree<TItem>) 62 77 public 63 type64 TNode = TGTreeNode<TItem>;65 private66 FItems: TGList<TNode>;67 public68 procedure Clear; override;69 78 constructor Create; override; 70 79 destructor Destroy; override; … … 75 84 76 85 { TGTreeNode } 86 87 function TGTreeNode<TItem>.GetItem(Index: TIndex): TItem; 88 begin 89 Result := FItems[Index]; 90 end; 91 92 procedure TGTreeNode<TItem>.SetItem(Index: TIndex; AValue: TItem); 93 begin 94 FItems[Index] := AValue; 95 end; 96 97 function TGTreeNode<TItem>.GetCount: TIndex; 98 begin 99 Result := FItems.Count; 100 end; 101 102 procedure TGTreeNode<TItem>.SetCount(AValue: TIndex); 103 begin 104 FItems.Count := AValue; 105 end; 77 106 78 107 function TGTreeNode<TItem>.GetValue: TItem; … … 86 115 end; 87 116 117 function TGTreeNode<TItem>.Add(Item: TItem): TIndex; 118 begin 119 Result := FItems.Add(Item); 120 end; 121 88 122 procedure TGTreeNode<TItem>.Clear; 89 123 begin … … 91 125 end; 92 126 93 { TGTree } 94 95 procedure TGTree<TItem>.Clear; 96 begin 97 //if Assigned(TopItem) then TopItem.Clear; 98 end; 99 100 constructor TGTree<TItem>.Create; 127 constructor TGTreeNode<TItem>.Create; 101 128 begin 102 129 inherited; … … 104 131 end; 105 132 133 destructor TGTreeNode<TItem>.Destroy; 134 begin 135 FItems.Free; 136 inherited; 137 end; 138 139 { TGTree } 140 141 constructor TGTree<TItem>.Create; 142 begin 143 inherited; 144 TopItem := TGTreeNode<TItem>.Create; 145 end; 146 106 147 destructor TGTree<TItem>.Destroy; 107 148 begin 108 149 inherited Destroy; 109 FItems.Free;150 TopItem.Free; 110 151 end; 111 152 112 153 { TGAbstractTree<TItem> } 113 154 114 function TGAbstractTree<TItem>.GetItem(Index: TIndex): TItem;115 begin116 117 end;118 119 procedure TGAbstractTree<TItem>.SetItem(Index: TIndex; AValue: TItem);120 begin121 122 end;123 124 155 constructor TGAbstractTree<TItem>.Create; 125 156 begin 126 end;127 128 constructor TGTreeNode<TItem>.Create;129 begin130 inherited;131 Childs := TGList<TNode>.Create;132 end;133 134 destructor TGTreeNode<TItem>.Destroy;135 begin136 Childs.Free;137 inherited;138 157 end; 139 158
Note:
See TracChangeset
for help on using the changeset viewer.