00001 00037 #ifndef ABA_LISTITEM_H 00038 #define ABA_LISTITEM_H 00039 00040 #include <iostream> 00041 using namespace std; 00042 00043 #include "abacus/abacusroot.h" 00044 00045 #ifdef ABACUS_NEW_TEMPLATE_SYNTAX 00046 template <class Type> 00047 class ABA_LISTITEM; 00048 00049 template <class Type> 00050 ostream &operator<< (ostream &out, const ABA_LISTITEM<Type> &item); 00051 #endif 00052 00053 template<class Type> class ABA_LIST; 00054 00055 template<class Type> class ABA_LISTITEM : public ABA_ABACUSROOT { 00056 friend class ABA_LIST<Type>; 00057 public: 00058 00064 ABA_LISTITEM (const Type &elem, ABA_LISTITEM<Type> *succ); 00065 #ifdef ABACUS_NEW_TEMPLATE_SYNTAX 00066 00074 friend ostream& operator<< <> (ostream &, const ABA_LISTITEM<Type> &); 00075 #else 00076 00084 friend ostream& operator<< (ostream &out, const ABA_LISTITEM<Type> &item); 00085 #endif 00086 00089 Type elem() const; 00090 00093 ABA_LISTITEM<Type> *succ() const; 00094 private: 00095 Type elem_; 00096 ABA_LISTITEM<Type> *succ_; 00097 }; 00098 00099 #include "abacus/listitem.inc" 00100 00101 #endif // ABA_LISTITEM_H 00102