// DLNode.H
// Extracted from LinList.H  10/17/95

#ifndef DLNODE_H
#define DLNODE_H

template <class T>
class LinList;
template <class T>
class LinListIterator;
template <class T>
class LinListBrowser;
template <class T>
class LinListReverseIterator;
template <class T>
class LinListReverseBrowser;

template <class T>
class CircList;
template <class T>
class CircListBrowser;
template <class T>
class CircListIterator;


template <class T>
class DLNode            // 9/23/95:
                        // Tried to nest this within CircList<T>,
                        // but SGI compiler appears not to permit 
                        // nested classes in templates.
{
   private:
      DLNode<T>* next;
      DLNode<T>* prev;
      T data;

      DLNode()
      {}
      DLNode(const T& s)
         : data(s)
      {}
     ~DLNode()
      {}

      friend class LinList<T>;
      friend class LinListBrowser<T>;
      friend class LinListIterator<T>;
      friend class LinListReverseBrowser<T>;
      friend class LinListReverseIterator<T>;
      friend class CircList<T>;
      friend class CircListBrowser<T>;
      friend class CircListIterator<T>;
};

#endif
