## NAME

ACE_RB_Tree_Reverse_Iterator - Implements a reverse iterator for a Red-Black Tree ADT.

## SYNOPSIS

    #include <ace/RB_Tree.h>

    template<class EXT_ID, class INT_ID, class COMPARE_KEYS, class ACE_LOCK>
    class ACE_RB_Tree_Reverse_Iterator :
      public ACE_RB_Tree_Iterator_Base<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK>
    {
      public:
        ACE_RB_Tree_Reverse_Iterator (
            const ACE_RB_Tree<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> &tree,
            int set_last = 1
            );
        ~ACE_RB_Tree_Reverse_Iterator (void);
        int advance (void);
        void dump (void) const;
        ACE_RB_Tree_Reverse_Iterator<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> & operator++ (
            void
            );
        ACE_RB_Tree_Reverse_Iterator<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> operator++ (
            int
            );
        ACE_RB_Tree_Reverse_Iterator<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> & operator-- (
            void
            );
        ACE_RB_Tree_Reverse_Iterator<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> operator-- (
            int
            );
        ACE_ALLOC_HOOK_DECLARE;
        int next (ACE_RB_Tree_Node<EXT_ID, INT_ID> *&next_entry) const;
    };

## Initialization and termination methods.

    ACE_RB_Tree_Reverse_Iterator (
        const ACE_RB_Tree<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> &tree,
        int set_last = 1
        );

Constructor. Takes an ACE_RB_Tree over which to iterate, and an integer indicating (if non-zero) to position the iterator at the last element in the tree (if this integer is 0, the iterator is positioned at the first element in the tree).

    ~ACE_RB_Tree_Reverse_Iterator (void);

Destructor.

## ACE-style iteration methods.

    int advance (void);

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

    void dump (void) const;

Dump the state of an object.

## STL-style iteration methods.

    ACE_RB_Tree_Reverse_Iterator<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> & operator++ (
        void
        );

Prefix advance.

    ACE_RB_Tree_Reverse_Iterator<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> operator++ (
        int
        );

Postfix advance.

    ACE_RB_Tree_Reverse_Iterator<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> & operator-- (
        void
        );

Prefix reverse.

    ACE_RB_Tree_Reverse_Iterator<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> operator-- (
        int
        );

Postfix reverse.

    ACE_ALLOC_HOOK_DECLARE;

Declare the dynamic allocation hooks.

    int next (ACE_RB_Tree_Node<EXT_ID, INT_ID> *&next_entry) const;

Passes back the `entry` under the iterator. Returns 0 if the iteration has completed, otherwise 1. This method must be declared and defined in both the derived forward and reverse iterator classes rather than in the base iterator class because of a method signature resolution problem caused by the existence of the deprecated next (void) method in the derived forward iterator class. When that deprecated method is removed, this method should be removed from the derived classes and placed in the base class.

## AUTHOR

Chris Gill

## LIBRARY

ace