GCpp general purpose C++ library  version 1.0
GTreeBranchT.hh
Go to the documentation of this file.
1 //======================================================================
2 /*! \file GTreeBranchT.hh
3  *
4  * Include file for GTreeBranchT template class.
5  */
6 //======================================================================
7 
8 #ifndef G_TREE_BRANCH_T_HH
9 #define G_TREE_BRANCH_T_HH
10 
11 #include "GTreeNodeT.hh"
12 #include "GTreeLeafT.hh"
13 
14 //======================================================================
15 /*! \class GTreeBranchT
16  *
17  * A tree branch is a tree element itself, and a the list of tree elements
18  * that a contained in the branch.
19  */
20 template <class T> class GTreeBranchT : public GTreeNodeT<T>,
21  public GNamedListT<GTreeNodeT <T> >
22 {
23  //------------------------------------------------------------
24  /*! \object_doc */
26  //------------------------------------------------------------
27 
28  using GNamed::GetName;
29  using GNamed::SetName;
30 
31  using GNamedListT < GTreeNodeT <T> >::Null;
32  using GNamedListT < GTreeNodeT <T> >::Begin;
33  using GNamedListT < GTreeNodeT <T> >::End;
34  using GNamedListT < GTreeNodeT <T> >::Goto;
35  using GNamedListT < GTreeNodeT <T> >::Current;
36  using GNamedListT < GTreeNodeT <T> >::Previous;
37  using GNamedListT < GTreeNodeT <T> >::Next;
38  using GNamedListT < GTreeNodeT <T> >::First;
39  using GNamedListT < GTreeNodeT <T> >::Last;
40 
41  using GNamedListT < GTreeNodeT <T> >::Add;
42  using GNamedListT < GTreeNodeT <T> >::Insert;
43  using GNamedListT < GTreeNodeT <T> >::Append;
44  using GNamedListT < GTreeNodeT <T> >::Prepend;
45 
46  using GTreeNodeT <T>::parent;
47  using GTreeNodeT <T>::list_iter;
48 
49  protected:
50 
51  public:
52  //------------------------------------------------------------
53  /** @name Constructors, affectation, destructor */
54  //@{
55  GTreeBranchT ( const string & branch_name );
56  GTreeBranchT ( const GTreeBranchT<T> & original );
57  virtual ~GTreeBranchT ( );
58  //@}
59 
60  //------------------------------------------------------------
61  /** @name Element information */
62  //@{
63  virtual bool IsBranch ( ) const; //inline
64 
65  virtual u_int GetLeafCount ( ) const;
66  virtual u_int GetBranchCount ( ) const;
67  virtual u_int GetLeafTotalCount ( ) const;
68  //@}
69 
70  //------------------------------------------------------------
71  /** @name Tree structure exploration */
72  //@{
73  virtual GTreeNodeT<T> * NextNode ( );
74  //@}
75 
76 
77  //------------------------------------------------------------
78  /** @name Tree construction function */
79  //@{
80  virtual GTreeBranchT<T> * AddBranch ( const string & bname ); // inline
81  virtual GTreeLeafT<T> * AddLeaf ( T & object_ref ); // inline
82  virtual GTreeLeafT<T> * AddLeaf ( T * object_ptr ); // inline
83  //@}
84 
85  protected:
86  /** @name Internal functions redefined for list behaviour */
87  //@{
88  virtual GListIterT<GTreeNodeT <T> > __Add ( GTreeNodeT<T> * item );
89  virtual GListIterT<GTreeNodeT <T> > __Insert ( GTreeNodeT<T> * item );
90  virtual GTreeNodeT<T> * __Take ( );
91  //@}
92 
93  public:
94 
95  //------------------------------------------------------------
96  /** @name Creation of objects structures from the tree */
97  //@{
98  virtual GTreeNodeT<GItem> * CreateItemTree ( ) const;
99 
100  virtual GTreeBranchT<T> * CreateFolderTree ( ) const;
101  //@}
102 
103  //------------------------------------------------------------
104  /** @name Print out */
105  //@{
106  virtual void Print ( FILE * fp = stdout, const string & prefix = "", bool info = false ) const;
107  //@}
108 };
109 
110 //----------------------------------------------------------------------
111 // Inline functions
112 #include "icc/GTreeBranchT.icc"
113 
114 //======================================================================
115 #endif
116 
virtual string GetName() const
Definition: GNamed.icc:89
GTreeBranchT< T > * parent
Parent element of the tree.
Definition: GTreeNodeT.hh:52
virtual GTreeNodeT< GItem > * CreateItemTree() const
Definition: GTreeBranchT.icc:212
virtual void SetName(const string &object_name)
Definition: GNamed.icc:108
virtual GListIterT< GTreeNodeT< T > > End() const
virtual GListIterT< GTreeNodeT< T > > Append(GTreeNodeT< T > *obj_ptr)
Definition: GNamed.hh:21
Definition: GListIterT.hh:21
GListIterT< GTreeNodeT< T > > Current() const
Definition: GTreeLeafT.hh:23
virtual GListIterT< GTreeNodeT< T > > __Insert(GTreeNodeT< T > *item)
Definition: GTreeBranchT.icc:170
virtual GListIterT< GTreeNodeT< T > > Add(GTreeNodeT< T > *obj_ptr)
virtual GTreeBranchT< T > * AddBranch(const string &bname)
Definition: GTreeBranchT.icc:120
virtual GTreeNodeT< T > * NextNode()
Definition: GTreeBranchT.icc:95
Definition: GTreeBranchT.hh:20
virtual GListIterT< GTreeNodeT< T > > Prepend(GTreeNodeT< T > *obj_ptr)
Definition: GNamedListT.hh:23
virtual GListIterT< GTreeNodeT< T > > __Add(GTreeNodeT< T > *item)
Definition: GTreeBranchT.icc:151
virtual GListIterT< GTreeNodeT< T > > Insert(GTreeNodeT< T > *obj_ptr)
virtual GListIterT< GTreeNodeT< T > > Begin() const
GListIterT< GTreeNodeT< T > > * list_iter
Pointer to the iterator in parent list.
Definition: GTreeNodeT.hh:53
virtual u_int GetLeafCount() const
Definition: GTreeBranchT.icc:41
virtual GTreeNodeT< T > * __Take()
Definition: GTreeBranchT.icc:189
#define GObject(T)
Definition: GClassDefine.hh:65
virtual void Print(FILE *fp=stdout, const string &prefix="", bool info=false) const
Definition: GTreeBranchT.icc:265
virtual bool IsBranch() const
Definition: GTreeBranchT.icc:84
GListIterT< GTreeNodeT< T > > First() const
GListIterT< GTreeNodeT< T > > Goto(u_int n=0) const
GListIterT< GTreeNodeT< T > > Previous() const
virtual u_int GetLeafTotalCount() const
Definition: GTreeBranchT.icc:72
virtual u_int GetBranchCount() const
Definition: GTreeBranchT.icc:56
static GListIterT< GTreeNodeT< T > > Null()
virtual GTreeLeafT< T > * AddLeaf(T &object_ref)
Definition: GTreeBranchT.icc:129
GListIterT< GTreeNodeT< T > > Last() const
Definition: GItem.hh:24
Definition: GTreeNodeT.hh:44
virtual GTreeBranchT< T > * CreateFolderTree() const
Definition: GTreeBranchT.icc:232
unsigned int u_int
Definition: GTypes.hh:38
GListIterT< GTreeNodeT< T > > Next() const