Public Member Functions | Public Attributes | Private Attributes | Friends

ACE_Ordered_MultiSet_Iterator< T > Class Template Reference

Implement a bidirectional iterator over an ordered multiset. This class template requires that < operator semantics be defined for the parameterized type {T}, but does not impose any restriction on how that ordering operator is implemented. More...

#include <Containers_T.h>

List of all members.

Public Member Functions

 ACE_Ordered_MultiSet_Iterator (ACE_Ordered_MultiSet< T > &s)
int next (T *&next_item) const
int first (void)
int last (void)
int advance (void)
int retreat (void)
int done (void) const
 Returns 1 when all items have been seen, else 0.
void dump (void) const
 Dump the state of an object.
T & operator* (void)
 Returns a reference to the internal element {this} is pointing to.

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.

Private Attributes

ACE_DNode< T > * current_
 Pointer to the current node in the iteration.
ACE_Ordered_MultiSet< T > & set_
 Pointer to the set we're iterating over.

Friends

class ACE_Ordered_MultiSet< T >

Detailed Description

template<class T>
class ACE_Ordered_MultiSet_Iterator< T >

Implement a bidirectional iterator over an ordered multiset. This class template requires that < operator semantics be defined for the parameterized type {T}, but does not impose any restriction on how that ordering operator is implemented.

Definition at line 1728 of file Containers_T.h.


Constructor & Destructor Documentation

Definition at line 1827 of file Containers_T.cpp.

  : current_ (s.head_),
    set_ (s)
{
  // ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::ACE_Ordered_MultiSet_Iterator");
}


Member Function Documentation

template<class T >
int ACE_Ordered_MultiSet_Iterator< T >::advance ( void   )  [inline]

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

Definition at line 216 of file Containers_T.inl.

{
  ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::advance");

  current_ = current_ ? current_->next_ : 0;

  return (current_ ? 1 : 0);
}

template<class T >
int ACE_Ordered_MultiSet_Iterator< T >::done ( void   )  const [inline]

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

Definition at line 236 of file Containers_T.inl.

{
  ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::done");

  return (current_ ? 0 : 1);
}

template<class T >
void ACE_Ordered_MultiSet_Iterator< T >::dump ( void   )  const [inline]

Dump the state of an object.

Definition at line 244 of file Containers_T.inl.

{
#if defined (ACE_HAS_DUMP)
// ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::dump");
#endif /* ACE_HAS_DUMP */
}

template<class T >
int ACE_Ordered_MultiSet_Iterator< T >::first ( void   )  [inline]

Repositions the iterator at the first item in the ordered multiset Returns 0 if the list is empty else 1.

Definition at line 198 of file Containers_T.inl.

{
  ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::first");
  current_ = set_.head_;

  return (current_ ? 1 : 0);
}

template<class T >
int ACE_Ordered_MultiSet_Iterator< T >::last ( void   )  [inline]

Repositions the iterator at the last item in the ordered multiset Returns 0 if the list is empty else 1.

Definition at line 207 of file Containers_T.inl.

{
  ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::last");
  current_ = set_.tail_;

  return (current_ ? 1 : 0);
}

template<class T >
int ACE_Ordered_MultiSet_Iterator< T >::next ( T *&  next_item  )  const

Pass back the {next_item} that hasn't been seen in the ordered multiset. Returns 0 when all items have been seen, else 1.

Definition at line 1835 of file Containers_T.cpp.

{
  // ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::next");
  if (this->current_)
    {
      item = &this->current_->item_;
      return 1;
    }

  return 0;
}

template<class T >
T & ACE_Ordered_MultiSet_Iterator< T >::operator* ( void   ) 

Returns a reference to the internal element {this} is pointing to.

Definition at line 1848 of file Containers_T.cpp.

{
  //ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::operator*");
  T *retv = 0;

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

  return *retv;
}

template<class T >
int ACE_Ordered_MultiSet_Iterator< T >::retreat ( void   )  [inline]

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

Definition at line 226 of file Containers_T.inl.

{
  ACE_TRACE ("ACE_Ordered_MultiSet_Iterator<T>::retreat");

  current_ = current_ ? current_->prev_ : 0;

  return (current_ ? 1 : 0);
}


Friends And Related Function Documentation

template<class T >
friend class ACE_Ordered_MultiSet< T > [friend]

Definition at line 1731 of file Containers_T.h.


Member Data Documentation

Declare the dynamic allocation hooks.

Definition at line 1768 of file Containers_T.h.

template<class T >
ACE_DNode<T>* ACE_Ordered_MultiSet_Iterator< T >::current_ [private]

Pointer to the current node in the iteration.

Definition at line 1773 of file Containers_T.h.

template<class T >
ACE_Ordered_MultiSet<T>& ACE_Ordered_MultiSet_Iterator< T >::set_ [private]

Pointer to the set we're iterating over.

Definition at line 1776 of file Containers_T.h.


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