## NAME

ACE_DLList_Iterator - A double-linked list container class iterator.

## SYNOPSIS

    #include <ace/Containers.h>

    template<class T>
    class ACE_DLList_Iterator :
      public ACE_Double_Linked_List_Iterator <ACE_DLList_Node>
    {
      public:
        friend class ACE_DLList<T>;
        friend class ACE_DLList_Node;
        ACE_DLList_Iterator (ACE_DLList<T> &l);
        void reset (ACE_DLList<T> &l);
        int advance (void);
        int next (T *&);
        T *next (void) const;
        int remove (void);
        void dump (void) const;
      private:
        ACE_DLList<T> *list_;
    };

## DESCRIPTION

This implementation uses ACE_Double_Linked_List_Iterator to perform the logic behind this container class. It delegates all of its calls to ACE_Double_Linked_List_Iterator.

## Initialization method.

    ACE_DLList_Iterator (ACE_DLList<T> &l);

    void reset (ACE_DLList<T> &l);

Retasks the iterator to iterate over a new Double_Linked_List. This allows clients to reuse an iterator without incurring the constructor overhead. If you do use this, be aware that if there are more than one reference to this iterator, the other "clients" may be very bothered when their iterator changes. @@ Here be dragons. Comments?

## Iteration methods.

    int advance (void);

Move forward by one element in the set. Returns 0 when all the items in the set have been seen, else 1.

    int next (T *&);

Pass back the `next_item` that hasn't been seen in the Stack. Returns 0 when all items have been seen, else 1.

    T *next (void) const;

Delegates to ACE_Double_Linked_List_Iterator, except that whereas the Double_Linked_List version of next returns the node, this next returns the contents of the node DEPRECATED

    int remove (void);

Removes the current item (i.e., this-next()) from the list.

    void dump (void) const;

Delegates to ACE_Double_Linked_List_Iterator.

## AUTHOR

Doug Schmidt

## LIBRARY

ace