Ignore:
Timestamp:
Feb 8, 2012, 2:13:08 PM (13 years ago)
Author:
chronos
Message:
  • Modified: TGTree structure.
File:
1 edited

Legend:

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

    r132 r326  
    99
    1010type
    11 //  TGTreeNode<TItem> = class;
    1211
    13 //  TGTreeNodeList = TGList<TGTreeNode>;
     12  { TGAbstractTreeNode }
    1413
    15   TGTreeNode<TItem> = class
    16 //    Childs: ;
    17     Value: TItem;
    18     procedure Clear;
     14  TGAbstractTreeNode<TItem> = class
     15  private
     16    function GetValue: TItem; virtual; abstract;
     17    procedure SetValue(AValue: TItem); virtual; abstract;
     18  public
     19    type
     20      TNode = TGAbstractTreeNode<TItem>;
     21  var
     22    Childs: TGAbstractList<TNode>;
     23    procedure Clear; virtual; abstract;
     24    constructor Create; virtual;
     25    destructor Destroy; override;
     26    property Value: TItem read GetValue write SetValue;
     27  end;
     28
     29  { TGAbstractTree }
     30
     31  TGAbstractTree<TItem> = class
     32  public
     33    type
     34      TNode = TGAbstractTreeNode<TItem>;
     35      TIndex = NativeInt;
     36  private
     37    function GetItem(Index: TIndex): TItem;
     38    procedure SetItem(Index: TIndex; AValue: TItem);
     39  var
     40    TopItem: TGAbstractTreeNode<TItem>;
     41    procedure Clear; virtual; abstract;
     42    constructor Create; virtual;
     43    property Items[Index: TIndex]: TItem read GetItem write SetItem;
     44  end;
     45
     46
     47  TGTreeNode<TItem> = class(TGAbstractTreeNode<TItem>)
     48  public
     49    type
     50      TNode = TGTreeNode<TItem>;
     51  private
     52    FValue: TItem;
     53    function GetValue: TItem; override;
     54    procedure SetValue(AValue: TItem); override;
     55  public
     56    procedure Clear; override;
     57    constructor Create; override;
     58    destructor Destroy; override;
    1959  end;
    2060
    2161  TGTree<TItem> = class
    22   //  TopItem: TGTreeNode;
    23     procedure Clear;
     62  public
     63    type
     64      TNode = TGTreeNode<TItem>;
     65  private
     66    FItems: TGList<TNode>;
     67  public
     68    procedure Clear; override;
     69    constructor Create; override;
     70    destructor Destroy; override;
    2471  end;
     72
    2573
    2674implementation
    2775
    2876{ TGTreeNode }
     77
     78function TGTreeNode<TItem>.GetValue: TItem;
     79begin
     80  Result := FValue;
     81end;
     82
     83procedure TGTreeNode<TItem>.SetValue(AValue: TItem);
     84begin
     85  FValue := AValue;
     86end;
    2987
    3088procedure TGTreeNode<TItem>.Clear;
     
    4098end;
    4199
     100constructor TGTree<TItem>.Create;
     101begin
     102  inherited;
     103  FItems := TGList<TNode>.Create;
     104end;
     105
     106destructor TGTree<TItem>.Destroy;
     107begin
     108  inherited Destroy;
     109  FItems.Free;
     110end;
     111
     112{ TGAbstractTree<TItem> }
     113
     114function TGAbstractTree<TItem>.GetItem(Index: TIndex): TItem;
     115begin
     116
     117end;
     118
     119procedure TGAbstractTree<TItem>.SetItem(Index: TIndex; AValue: TItem);
     120begin
     121
     122end;
     123
     124constructor TGAbstractTree<TItem>.Create;
     125begin
     126end;
     127
     128constructor TGTreeNode<TItem>.Create;
     129begin
     130  inherited;
     131  Childs := TGList<TNode>.Create;
     132end;
     133
     134destructor TGTreeNode<TItem>.Destroy;
     135begin
     136  Childs.Free;
     137  inherited;
     138end;
     139
     140{ TGAbstractTreeNode<TItem> }
     141
     142constructor TGAbstractTreeNode<TItem>.Create;
     143begin
     144end;
     145
     146destructor TGAbstractTreeNode<TItem>.Destroy;
     147begin
     148  inherited Destroy;
     149end;
     150
     151
    42152end.
Note: See TracChangeset for help on using the changeset viewer.