00001 00037 #ifndef ABA_DLISTITEM_H 00038 #define ABA_DLISTITEM_H 00039 00040 #include "abacus/abacusroot.h" 00041 00042 00043 #ifdef ABACUS_NEW_TEMPLATE_SYNTAX 00044 template<class Type> 00045 class ABA_DLISTITEM; 00046 00047 template<class Type> 00048 ostream &operator<< (ostream &out, const ABA_DLISTITEM<Type> &item); 00049 #endif 00050 00051 template<class Type> class ABA_DLIST; 00052 // class ostream; 00053 00054 template<class Type> class ABA_DLISTITEM : public ABA_ABACUSROOT { 00055 friend class ABA_DLIST<Type>; 00056 public: 00057 00064 ABA_DLISTITEM (const Type &elem, 00065 ABA_DLISTITEM<Type> *pred, 00066 ABA_DLISTITEM<Type> *succ); 00067 #ifdef ABACUS_NEW_TEMPLATE_SYNTAX 00068 00076 friend ostream& operator<< <> (ostream &, const ABA_DLISTITEM<Type> &); 00077 #else 00078 00086 friend ostream& operator<< (ostream &out, const ABA_DLISTITEM<Type> &item); 00087 #endif 00088 00091 Type elem() const; 00092 00095 ABA_DLISTITEM<Type> *succ() const; 00096 00099 ABA_DLISTITEM<Type> *pred() const; 00100 00101 private: 00102 Type elem_; 00103 ABA_DLISTITEM<Type> *pred_; 00104 ABA_DLISTITEM<Type> *succ_; 00105 }; 00106 00107 #include "abacus/dlistitem.inc" 00108 00109 #endif // ABA_DLISTITEM_H 00110