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

ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK > Class Template Reference

Const iterator for the ACE_Map_Manager. More...

#include <Map_Manager.h>

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

List of all members.

Public Member Functions

 ACE_Map_Const_Iterator_Base (const ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK > &mm)
int next (ACE_Map_Entry< EXT_ID, INT_ID > *&next_entry) const
int done (void) const
 Returns 1 when all items have been seen, else 0.
ACE_Map_Entry< EXT_ID, INT_ID > & operator* (void) const
 Returns a reference to the interal element this is pointing to.
const ACE_Map_Manager< EXT_ID,
INT_ID, ACE_LOCK > & 
map (void) const
bool operator== (const ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK > &) const
 Check if two iterators point to the same position.
bool operator!= (const ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK > &) const

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.

Protected Member Functions

int forward_i (void)
int reverse_i (void)
void dump_i (void) const
 Dump the state of an object.

Protected Attributes

const ACE_Map_Manager< EXT_ID,
INT_ID, ACE_LOCK > * 
map_man_
 Map we are iterating over.
ACE_UINT32 next_
 Keeps track of how far we've advanced...

Detailed Description

template<class EXT_ID, class INT_ID, class ACE_LOCK>
class ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >

Const iterator for the ACE_Map_Manager.

This class factors out common code from its templatized subclasses.

Definition at line 513 of file Map_Manager.h.


Constructor & Destructor Documentation

template<class EXT_ID , class INT_ID , class ACE_LOCK >
ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::ACE_Map_Const_Iterator_Base ( const ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK > &  mm  )  [inline]

Contructor. If head != 0, the iterator constructed is positioned at the head of the map, it is positioned at the end otherwise.

Definition at line 389 of file Map_Manager.inl.

  : map_man_ (&mm),
    next_ (this->map_man_->occupied_list_id ())
{
}


Member Function Documentation

template<class EXT_ID , class INT_ID , class ACE_LOCK >
int ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::done ( void   )  const [inline]

Returns 1 when all items have been seen, else 0.

Definition at line 408 of file Map_Manager.inl.

{
  return this->next_ == this->map_man_->occupied_list_id ();
}

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

Dump the state of an object.

Definition at line 634 of file Map_Manager.cpp.

{
#if defined (ACE_HAS_DUMP)
  ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
  ACE_DEBUG ((LM_DEBUG,  ACE_TEXT ("next_ = %d"), this->next_));
  ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
#endif /* ACE_HAS_DUMP */
}

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

Move forward by one element in the set. Returns 0 when there's no more item in the set after the current items, else 1.

Definition at line 414 of file Map_Manager.inl.

{

#if defined (ACE_HAS_LAZY_MAP_MANAGER)

  while (1)
    {
      // Go to the next item in the list.
      this->next_ = this->map_man_->search_structure_[this->next_].next ();

      // Stop if we reach the end.
      if (this->done ())
        break;

      // Break if we find a non-free slot.
      if (!this->map_man_->search_structure_[this->next_].free_)
        {
          break;
        }
    }

#else

  this->next_ = this->map_man_->search_structure_[this->next_].next ();

#endif /* ACE_HAS_LAZY_MAP_MANAGER */

  return this->next_ != this->map_man_->occupied_list_id ();
}

template<class EXT_ID , class INT_ID , class ACE_LOCK >
const ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK > & ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::map ( void   )  const [inline]

Returns reference the Map_Manager that is being iterated over.

Definition at line 477 of file Map_Manager.inl.

{
  return *this->map_man_;
}

template<class EXT_ID , class INT_ID , class ACE_LOCK >
int ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::next ( ACE_Map_Entry< EXT_ID, INT_ID > *&  next_entry  )  const [inline]

Pass back the next <entry> that hasn't been seen in the Set. Returns 0 when all items have been seen, else 1.

Definition at line 396 of file Map_Manager.inl.

{
  if (this->next_ != this->map_man_->occupied_list_id ())
    {
      mm = &this->map_man_->search_structure_[this->next_];
      return 1;
    }
  else
    return 0;
}

template<class EXT_ID , class INT_ID , class ACE_LOCK >
bool ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::operator!= ( const ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK > &  rhs  )  const [inline]

Definition at line 490 of file Map_Manager.inl.

{
  return !this->operator== (rhs);
}

template<class EXT_ID , class INT_ID , class ACE_LOCK >
ACE_Map_Entry< EXT_ID, INT_ID > & ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::operator* ( void   )  const

Returns a reference to the interal element this is pointing to.

Definition at line 661 of file Map_Manager.cpp.

{
  // @@ This function should be inlined.  We moved it here to avoid a
  // compiler bug in SunCC 4.2.  Once we know the correct patch to fix
  // the compiler problem, it should be moved back to .i file again.
  ACE_Map_Entry<EXT_ID, INT_ID> *retv = 0;

  int result = this->next (retv);
  ACE_ASSERT (result != 0);
  ACE_UNUSED_ARG (result);

  return *retv;
}

template<class EXT_ID , class INT_ID , class ACE_LOCK >
bool ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::operator== ( const ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK > &  rhs  )  const [inline]

Check if two iterators point to the same position.

Definition at line 483 of file Map_Manager.inl.

{
  return (this->map_man_ == rhs.map_man_ &&
          this->next_ == rhs.next_);
}

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

Move backware by one element in the set. Returns 0 when there's no more item in the set before the current item, else 1.

Definition at line 445 of file Map_Manager.inl.

{

#if defined (ACE_HAS_LAZY_MAP_MANAGER)

  while (1)
    {
      // Go to the prev item in the list.
      this->next_ = this->map_man_->search_structure_[this->next_].prev ();

      // Stop if we reach the end.
      if (this->done ())
        break;

      // Break if we find a non-free slot.
      if (!this->map_man_->search_structure_[this->next_].free_)
        {
          break;
        }
    }

#else

  this->next_ = this->map_man_->search_structure_[this->next_].prev ();

#endif /* ACE_HAS_LAZY_MAP_MANAGER */

  return this->next_ != this->map_man_->occupied_list_id ();
}


Member Data Documentation

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::ACE_ALLOC_HOOK_DECLARE

Declare the dynamic allocation hooks.

Reimplemented in ACE_Map_Const_Iterator< EXT_ID, INT_ID, ACE_LOCK >.

Definition at line 542 of file Map_Manager.h.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
const ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>* ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::map_man_ [protected]

Map we are iterating over.

Definition at line 557 of file Map_Manager.h.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_UINT32 ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::next_ [protected]

Keeps track of how far we've advanced...

Definition at line 560 of file Map_Manager.h.


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