Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages   Examples  

CTBtreeList.hxx

Go to the documentation of this file.
00001 #ifndef _CTBtreeList_HXX
00002 #define _CTBtreeList_HXX 1
00003 
00008 /*----------------------------------------------------------------------------*/
00009 /* C Tool Box: Designed and implemented by:                                   */
00010 /*    Walter F.J. Mueller   Gesellschaft fuer Schwerionenforschung (GSI)      */
00011 /*                          Planckstrasse 1, D-64291 Darmstadt, Germany       */
00012 /*                  Email:  W.F.J.Mueller@gsi.de                              */
00013 /*                  WWW:    http://www-kp3.gsi.de/www/kp3/people/mueller.html */
00014 /*------------------------------------------+---------------------------------*/
00015  
00016 template <class TP, class TC>
00017 class CTBtreeListHead;
00018 
00019 template <class TP, class TC>
00020 class CTBtreeListLink {
00021 
00022   public: 
00023 
00024                     CTBtreeListLink();
00025                     ~CTBtreeListLink();
00026 
00027     TP*             Parent() const;
00028     TC*             Prev() const;
00029     TC*             Next() const;
00030 
00031     void            InsertHead(TC* p_this,
00032                                CTBtreeListLink<TP,TC> TC::* o_link,
00033                                TP& parent,
00034                                CTBtreeListHead<TP,TC> TP::* o_head);
00035     void            InsertTail(TC* p_this,
00036                                CTBtreeListLink<TP,TC> TC::* o_link,
00037                                TP& parent,
00038                                CTBtreeListHead<TP,TC> TP::* o_head);
00039 
00040     void            InsertBefore(TC* p_this,
00041                                  CTBtreeListLink<TP,TC> TC::* o_link,
00042                                  CTBtreeListHead<TP,TC> TP::* o_head,
00043                                  TC& elem);
00044     void            InsertAfter(TC* p_this,
00045                                 CTBtreeListLink<TP,TC> TC::* o_link,
00046                                 CTBtreeListHead<TP,TC> TP::* o_head,
00047                                 TC& elem);
00048 
00049     void            Remove(CTBtreeListLink<TP,TC> TC::* o_link,
00050                            CTBtreeListHead<TP,TC> TP::* o_head);
00051 
00052     bool            operator! () const;
00053 
00054                     operator bool() const;
00055 
00056   private:
00057 
00058                     CTBtreeListLink(        // copy constructor DUMMY
00059                       const CTBtreeListLink<TP,TC>& rhs);
00060     CTBtreeListLink<TP,TC>& operator=(      // assignment operator DUMMY  
00061                       const CTBtreeListLink<TP,TC>& rhs);
00062 
00063   private:
00064 
00065     TP* mp_parent;
00066     TC* mp_prev;
00067     TC* mp_next;  
00068 };
00069 
00070 //------------------------------------------+-----------------------------------
00071 template <class TP, class TC>
00072 class CTBtreeListHead {
00073 
00074   friend class CTBtreeListLink<TP,TC>;
00075 
00076   public: 
00077 
00078                     CTBtreeListHead();
00079                     ~CTBtreeListHead();
00080 
00081     TC*             First() const;
00082     TC*             Last() const;
00083 
00084     bool            operator! () const;
00085 
00086                     operator bool() const;
00087 
00088   private:
00089 
00090                     CTBtreeListHead(        // copy constructor DUMMY
00091                       const CTBtreeListHead<TP,TC>& rhs);
00092     CTBtreeListHead<TP,TC>& operator=(      // assignment operator DUMMY  
00093                       const CTBtreeListHead<TP,TC>& rhs);
00094 
00095   private:
00096 
00097     TC* mp_first;
00098     TC* mp_last;  
00099 };
00100 
00101 // implementation is all inline !!
00102 #include "CTBtreeList.icc"
00103 
00104 #endif
00105 
00106 
00107 
00108 
00109 
00110 

Generated at Fri Oct 24 18:11:30 2003 for CTBbase by doxygen1.2.9-20010812 written by Dimitri van Heesch, © 1997-2001