Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes

ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK > Class Template Reference

Implements a common base class for iterators for a Red-Black Tree ADT. More...

#include <RB_Tree.h>

Inheritance diagram for ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 ACE_RB_Tree_Iterator_Base (const ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK > &iter)
 Copy constructor.
void operator= (const ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK > &iter)
 Assignment operator: copies both the tree reference and the position in the tree.
int done (void) const
 Returns 1 when the iteration has completed, otherwise 0.
ACE_RB_Tree_Node< EXT_ID,
INT_ID > & 
operator* (void) const
ACE_RB_Tree_Node< EXT_ID,
INT_ID > * 
operator-> (void) const
const ACE_RB_Tree< EXT_ID,
INT_ID, COMPARE_KEYS, ACE_LOCK > & 
tree (void)
 Returns a const reference to the tree over which we're iterating.
bool operator== (const ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK > &) const
 Comparison operator: returns 1 if both iterators point to the same position, otherwise 0.
bool operator!= (const ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK > &) const
 Comparison operator: returns 1 if the iterators point to different positions, otherwise 0.

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.

Protected Member Functions

 ACE_RB_Tree_Iterator_Base (void)
 ACE_RB_Tree_Iterator_Base (const ACE_RB_Tree< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK > &tree, int set_first)
 ACE_RB_Tree_Iterator_Base (const ACE_RB_Tree< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK > &tree, ACE_RB_Tree_Node< EXT_ID, INT_ID > *entry)
 ACE_RB_Tree_Iterator_Base (const EXT_ID &key, ACE_RB_Tree< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK > &tree)
 ~ACE_RB_Tree_Iterator_Base (void)
 Destructor.
int forward_i (void)
int reverse_i (void)
void dump_i (void) const
 Dump the state of an object.

Protected Attributes

const ACE_RB_Tree< EXT_ID,
INT_ID, COMPARE_KEYS, ACE_LOCK > * 
tree_
 Reference to the ACE_RB_Tree over which we're iterating.
ACE_RB_Tree_Node< EXT_ID,
INT_ID > * 
node_
 Pointer to the node currently under the iterator.

Detailed Description

template<class EXT_ID, class INT_ID, class COMPARE_KEYS, class ACE_LOCK>
class ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >

Implements a common base class for iterators for a Red-Black Tree ADT.

Definition at line 592 of file RB_Tree.h.


Constructor & Destructor Documentation

template<class EXT_ID , class INT_ID , class COMPARE_KEYS , class ACE_LOCK >
ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >::ACE_RB_Tree_Iterator_Base ( const ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK > &  iter  ) 

Copy constructor.

Definition at line 1138 of file RB_Tree.cpp.

  : tree_ (iter.tree_),
    node_ (iter.node_)
{
  ACE_TRACE ("ACE_RB_Tree_Iterator_Base<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK>::ACE_RB_Tree_Iterator_Base (ACE_RB_Tree_Iterator_Base)");
}

template<class EXT_ID , class INT_ID , class COMPARE_KEYS , class ACE_LOCK >
ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >::ACE_RB_Tree_Iterator_Base ( void   )  [protected]

Create the singular iterator. No valid iterator can be equal to it, it is illegal to dereference a singular iterator, etc. etc.

Definition at line 733 of file RB_Tree.inl.

  : tree_ (0), node_ (0)
{
  ACE_TRACE ("ACE_RB_Tree_Iterator_Base<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK>::ACE_RB_Tree_Iterator_Base (void)");
}

template<class EXT_ID , class INT_ID , class COMPARE_KEYS , class ACE_LOCK >
ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >::ACE_RB_Tree_Iterator_Base ( const ACE_RB_Tree< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK > &  tree,
int  set_first 
) [protected]

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

Definition at line 1105 of file RB_Tree.cpp.

  : tree_ (&tree), node_ (0)
{
  ACE_TRACE ("ACE_RB_Tree_Iterator_Base<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK>::ACE_RB_Tree_Iterator_Base (ACE_RB_Tree, int)");

  // Position the iterator at the first (or last) node in the tree.
  if (set_first)
    node_ = tree_->RB_tree_minimum (tree_->root_);
  else
    node_ = tree_->RB_tree_maximum (tree_->root_);
}

template<class EXT_ID , class INT_ID , class COMPARE_KEYS , class ACE_LOCK >
ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >::ACE_RB_Tree_Iterator_Base ( const ACE_RB_Tree< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK > &  tree,
ACE_RB_Tree_Node< EXT_ID, INT_ID > *  entry 
) [protected]

Constructor. Takes an ACE_RB_Tree over which to iterate, and a pointer to a node in the tree.

Definition at line 1118 of file RB_Tree.cpp.

  : tree_ (&tree), node_ (0)
{
  ACE_TRACE ("ACE_RB_Tree_Iterator_Base(const ACE_RB_Tree<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> &tree, ACE_RB_Tree_Node<EXT_ID, INT_ID>* entry)");
  node_ = entry;
}

template<class EXT_ID , class INT_ID , class COMPARE_KEYS , class ACE_LOCK >
ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >::ACE_RB_Tree_Iterator_Base ( const EXT_ID &  key,
ACE_RB_Tree< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK > &  tree 
) [protected]

Constructor. Takes an ACE_RB_Tree over which to iterate, and a key. The key must come first to distinguish the case of EXT_ID == int.

Definition at line 1126 of file RB_Tree.cpp.

   : tree_ (&tree), node_ (0)
{
  ACE_TRACE("ACE_RB_Tree_Iterator_Base (ACE_RB_Tree<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> &tree, const EXT_ID& key)");
  ACE_RB_Tree_Node<EXT_ID, INT_ID>* entry = 0;
  tree.find_i(key, entry);
  node_ = entry;
}

template<class EXT_ID , class INT_ID , class COMPARE_KEYS , class ACE_LOCK >
ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >::~ACE_RB_Tree_Iterator_Base ( void   )  [protected]

Destructor.

Definition at line 1161 of file RB_Tree.cpp.

{
  ACE_TRACE ("ACE_RB_Tree_Iterator_Base<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK>::~ACE_RB_Tree_Iterator_Base");
}


Member Function Documentation

template<class EXT_ID , class INT_ID , class COMPARE_KEYS , class ACE_LOCK >
int ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >::done ( void   )  const

Returns 1 when the iteration has completed, otherwise 0.

Definition at line 743 of file RB_Tree.inl.

{
  ACE_TRACE ("ACE_RB_Tree_Iterator_Base<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK>::done");

  return node_ ? 0 : 1;
}

template<class EXT_ID , class INT_ID , class COMPARE_KEYS , class ACE_LOCK >
void ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >::dump_i ( void   )  const [protected]

Dump the state of an object.

Definition at line 1170 of file RB_Tree.cpp.

{
  ACE_TRACE ("ACE_RB_Tree_Iterator_Base<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK>::dump_i");

  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
  ACE_DEBUG ((LM_DEBUG,  ACE_TEXT ("\nnode_ = %x\n"), this->node_));
  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
}

template<class EXT_ID , class INT_ID , class COMPARE_KEYS , class ACE_LOCK >
int ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >::forward_i ( void   )  [protected]

Move forward by one element in the tree. Returns 0 when there are no more elements in the tree, otherwise 1.

Definition at line 814 of file RB_Tree.inl.

{
  ACE_TRACE ("ACE_RB_Tree_Iterator_Base<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK>::forward_i");

  if (node_)
    {
      node_ = tree_->RB_tree_successor (node_);
    }

  return node_ ? 1 : 0;
}

template<class EXT_ID , class INT_ID , class COMPARE_KEYS , class ACE_LOCK >
bool ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >::operator!= ( const ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK > &  rbt  )  const

Comparison operator: returns 1 if the iterators point to different positions, otherwise 0.

Definition at line 802 of file RB_Tree.inl.

{
  ACE_TRACE ("ACE_RB_Tree_Iterator_Base<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK>::operator!=");
  return (this->node_ == rbt.node_) ? false : true;
}

template<class EXT_ID , class INT_ID , class COMPARE_KEYS , class ACE_LOCK >
ACE_RB_Tree_Node< EXT_ID, INT_ID > & ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >::operator* ( void   )  const

STL-like iterator dereference operator: returns a reference to the node underneath the iterator.

Definition at line 756 of file RB_Tree.inl.

{
  ACE_TRACE ("ACE_RB_Tree_Iterator_Base<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK>::operator*");
  return *(this->node_);
}

template<class EXT_ID , class INT_ID , class COMPARE_KEYS , class ACE_LOCK >
ACE_RB_Tree_Node< EXT_ID, INT_ID > * ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >::operator-> ( void   )  const

STL-like iterator dereference operator: returns a pointer to the node underneath the iterator.

Definition at line 768 of file RB_Tree.inl.

{
  ACE_TRACE ("ACE_RB_Tree_Iterator_Base<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK>::operator->");
  return this->node_;
}

template<class EXT_ID , class INT_ID , class COMPARE_KEYS , class ACE_LOCK >
void ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >::operator= ( const ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK > &  iter  ) 

Assignment operator: copies both the tree reference and the position in the tree.

Definition at line 1148 of file RB_Tree.cpp.

{
  ACE_TRACE ("ACE_RB_Tree_Iterator_Base<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK>::operator=");
  if (this != &iter)
    {
      tree_ = iter.tree_;
      node_ = iter.node_;
    }
}

template<class EXT_ID , class INT_ID , class COMPARE_KEYS , class ACE_LOCK >
bool ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >::operator== ( const ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK > &  rbt  )  const

Comparison operator: returns 1 if both iterators point to the same position, otherwise 0.

Definition at line 790 of file RB_Tree.inl.

{
  ACE_TRACE ("ACE_RB_Tree_Iterator_Base<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK>::operator==");
  return (this->node_ == rbt.node_) ? true : false;
}

template<class EXT_ID , class INT_ID , class COMPARE_KEYS , class ACE_LOCK >
int ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >::reverse_i ( void   )  [protected]

Move back by one element in the tree. Returns 0 when there are no more elements in the tree, otherwise 1.

Definition at line 832 of file RB_Tree.inl.

{
  ACE_TRACE ("ACE_RB_Tree_Iterator_Base<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK>::reverse_i");

  if (node_)
    {
      node_ = tree_->RB_tree_predecessor (node_);
    }

  return node_ ? 1 : 0;
}

template<class EXT_ID , class INT_ID , class COMPARE_KEYS , class ACE_LOCK >
const ACE_RB_Tree< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK > & ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >::tree ( void   ) 

Returns a const reference to the tree over which we're iterating.

Definition at line 778 of file RB_Tree.inl.

{
  ACE_TRACE ("ACE_RB_Tree_Iterator_Base<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK>::tree");
  return *tree_;
}


Member Data Documentation

template<class EXT_ID, class INT_ID, class COMPARE_KEYS, class ACE_LOCK>
ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >::ACE_ALLOC_HOOK_DECLARE
template<class EXT_ID, class INT_ID, class COMPARE_KEYS, class ACE_LOCK>
ACE_RB_Tree_Node<EXT_ID, INT_ID>* ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >::node_ [protected]

Pointer to the node currently under the iterator.

Definition at line 681 of file RB_Tree.h.

template<class EXT_ID, class INT_ID, class COMPARE_KEYS, class ACE_LOCK>
const ACE_RB_Tree<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK>* ACE_RB_Tree_Iterator_Base< EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK >::tree_ [protected]

Reference to the ACE_RB_Tree over which we're iterating.

Definition at line 678 of file RB_Tree.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines