Ignore:
Timestamp:
Feb 9, 2012, 8:46:05 AM (14 years ago)
Author:
chronos
Message:
  • Modified: TGTree structure.
Location:
Generics/NativeGenerics/Units
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Generics/NativeGenerics/Units/GenericList.pas

    r326 r327  
    3333  public
    3434    constructor Create; virtual;
     35    function Add(Item: TItem): TIndex; virtual; abstract;
    3536    property Count: TIndex read GetCount write SetCount;
    3637    property Capacity: TIndex read GetCapacity write SetCapacity;
     
    5960    procedure QuickSort(L, R : TIndex; Compare: TSortCompare);
    6061  public
    61     function Add(Item: TItem): TIndex;
     62    function Add(Item: TItem): TIndex; override;
    6263    procedure AddArray(Values: array of TItem);
    6364    procedure AddList(List: TGList<TItem>);
  • Generics/NativeGenerics/Units/GenericTree.pas

    r326 r327  
    99
    1010type
     11  //TGAbstractTree<TItem> = class;
    1112
    1213  { TGAbstractTreeNode }
    1314
    1415  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;
    1623    function GetValue: TItem; virtual; abstract;
     24    procedure SetCount(AValue: TIndex); virtual; abstract;
     25    procedure SetItem(Index: TIndex; AValue: TItem); virtual; abstract;
    1726    procedure SetValue(AValue: TItem); virtual; abstract;
    1827  public
    19     type
    20       TNode = TGAbstractTreeNode<TItem>;
    21   var
    22     Childs: TGAbstractList<TNode>;
     28    Parent: TGAbstractTreeNode<TItem>;
     29    //Tree: TGAbstractTree<TItem>;
    2330    procedure Clear; virtual; abstract;
    2431    constructor Create; virtual;
    2532    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;
    2636    property Value: TItem read GetValue write SetValue;
    2737  end;
     
    3242  public
    3343    type
     44      TIndex = NativeInt;
    3445      TNode = TGAbstractTreeNode<TItem>;
    35       TIndex = NativeInt;
    3646  private
    37     function GetItem(Index: TIndex): TItem;
    38     procedure SetItem(Index: TIndex; AValue: TItem);
    39   var
     47  public
    4048    TopItem: TGAbstractTreeNode<TItem>;
    41     procedure Clear; virtual; abstract;
    4249    constructor Create; virtual;
    43     property Items[Index: TIndex]: TItem read GetItem write SetItem;
    4450  end;
    4551
     52
     53  { TGTreeNode }
    4654
    4755  TGTreeNode<TItem> = class(TGAbstractTreeNode<TItem>)
    4856  public
    4957    type
    50       TNode = TGTreeNode<TItem>;
     58      TNode = TGAbstractTreeNode<TItem>;
    5159  private
    5260    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;
    5367    function GetValue: TItem; override;
    5468    procedure SetValue(AValue: TItem); override;
    5569  public
     70    function Add(Item: TItem): TIndex; override;
    5671    procedure Clear; override;
    5772    constructor Create; override;
     
    5974  end;
    6075
    61   TGTree<TItem> = class
     76  TGTree<TItem> = class(TGAbstractTree<TItem>)
    6277  public
    63     type
    64       TNode = TGTreeNode<TItem>;
    65   private
    66     FItems: TGList<TNode>;
    67   public
    68     procedure Clear; override;
    6978    constructor Create; override;
    7079    destructor Destroy; override;
     
    7584
    7685{ TGTreeNode }
     86
     87function TGTreeNode<TItem>.GetItem(Index: TIndex): TItem;
     88begin
     89  Result := FItems[Index];
     90end;
     91
     92procedure TGTreeNode<TItem>.SetItem(Index: TIndex; AValue: TItem);
     93begin
     94  FItems[Index] := AValue;
     95end;
     96
     97function TGTreeNode<TItem>.GetCount: TIndex;
     98begin
     99  Result := FItems.Count;
     100end;
     101
     102procedure TGTreeNode<TItem>.SetCount(AValue: TIndex);
     103begin
     104  FItems.Count := AValue;
     105end;
    77106
    78107function TGTreeNode<TItem>.GetValue: TItem;
     
    86115end;
    87116
     117function TGTreeNode<TItem>.Add(Item: TItem): TIndex;
     118begin
     119  Result := FItems.Add(Item);
     120end;
     121
    88122procedure TGTreeNode<TItem>.Clear;
    89123begin
     
    91125end;
    92126
    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;
     127constructor TGTreeNode<TItem>.Create;
    101128begin
    102129  inherited;
     
    104131end;
    105132
     133destructor TGTreeNode<TItem>.Destroy;
     134begin
     135  FItems.Free;
     136  inherited;
     137end;
     138
     139{ TGTree }
     140
     141constructor TGTree<TItem>.Create;
     142begin
     143  inherited;
     144  TopItem := TGTreeNode<TItem>.Create;
     145end;
     146
    106147destructor TGTree<TItem>.Destroy;
    107148begin
    108149  inherited Destroy;
    109   FItems.Free;
     150  TopItem.Free;
    110151end;
    111152
    112153{ TGAbstractTree<TItem> }
    113154
    114 function TGAbstractTree<TItem>.GetItem(Index: TIndex): TItem;
    115 begin
    116 
    117 end;
    118 
    119 procedure TGAbstractTree<TItem>.SetItem(Index: TIndex; AValue: TItem);
    120 begin
    121 
    122 end;
    123 
    124155constructor TGAbstractTree<TItem>.Create;
    125156begin
    126 end;
    127 
    128 constructor TGTreeNode<TItem>.Create;
    129 begin
    130   inherited;
    131   Childs := TGList<TNode>.Create;
    132 end;
    133 
    134 destructor TGTreeNode<TItem>.Destroy;
    135 begin
    136   Childs.Free;
    137   inherited;
    138157end;
    139158
Note: See TracChangeset for help on using the changeset viewer.