ACE_Message_Queue_Reverse_Iterator<> Class Template Reference

Reverse Iterator for the ACE_Message_Queue. More...

#include <Message_Queue_T.h>

Collaboration diagram for ACE_Message_Queue_Reverse_Iterator<>:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 ACE_Message_Queue_Reverse_Iterator (ACE_Message_Queue< ACE_SYNCH_USE > &queue)
int next (ACE_Message_Block *&entry)
int done (void) const
 Returns 1 when all items have been seen, else 0.
int advance (void)
void dump (void) const
 Dump the state of an object.

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.

Private Attributes

ACE_Message_Queue< ACE_SYNCH_USE > & queue_
 Message_Queue we are iterating over.
ACE_Message_Blockcurr_
 Keeps track of how far we've advanced...

Detailed Description

template<ACE_SYNCH_DECL>
class ACE_Message_Queue_Reverse_Iterator<>

Reverse Iterator for the ACE_Message_Queue.

Definition at line 667 of file Message_Queue_T.h.


Constructor & Destructor Documentation

template<ACE_SYNCH_DECL >
ACE_Message_Queue_Reverse_Iterator<>::ACE_Message_Queue_Reverse_Iterator ( ACE_Message_Queue< ACE_SYNCH_USE > &  queue  ) 

Definition at line 645 of file Message_Queue_T.cpp.

00646   : queue_ (q),
00647     curr_ (queue_.tail_)
00648 {
00649 }


Member Function Documentation

template<ACE_SYNCH_DECL >
int ACE_Message_Queue_Reverse_Iterator<>::advance ( void   ) 

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

Definition at line 674 of file Message_Queue_T.cpp.

References ACE_READ_GUARD_RETURN, ACE_SYNCH_MUTEX_T, ACE_Message_Queue_Reverse_Iterator<>::curr_, and ACE_Message_Block::prev().

00675 {
00676   ACE_READ_GUARD_RETURN (ACE_SYNCH_MUTEX_T, m, this->queue_.lock_, -1)
00677 
00678   if (this->curr_)
00679     this->curr_ = this->curr_->prev ();
00680   return this->curr_ != 0;
00681 }

template<ACE_SYNCH_DECL >
int ACE_Message_Queue_Reverse_Iterator<>::done ( void   )  const

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

Definition at line 666 of file Message_Queue_T.cpp.

References ACE_READ_GUARD_RETURN, ACE_SYNCH_MUTEX_T, and ACE_Message_Queue_Reverse_Iterator<>::curr_.

00667 {
00668   ACE_READ_GUARD_RETURN (ACE_SYNCH_MUTEX_T, m, this->queue_.lock_, -1)
00669 
00670   return this->curr_ == 0;
00671 }

template<ACE_SYNCH_DECL >
void ACE_Message_Queue_Reverse_Iterator<>::dump ( void   )  const

Dump the state of an object.

Definition at line 684 of file Message_Queue_T.cpp.

00685 {
00686 #if defined (ACE_HAS_DUMP)
00687 #endif /* ACE_HAS_DUMP */
00688 }

template<ACE_SYNCH_DECL >
int ACE_Message_Queue_Reverse_Iterator<>::next ( ACE_Message_Block *&  entry  ) 

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

Definition at line 652 of file Message_Queue_T.cpp.

References ACE_READ_GUARD_RETURN, ACE_SYNCH_MUTEX_T, and ACE_Message_Queue_Reverse_Iterator<>::curr_.

00653 {
00654   ACE_READ_GUARD_RETURN (ACE_SYNCH_MUTEX_T, m, this->queue_.lock_, -1)
00655 
00656   if (this->curr_ != 0)
00657     {
00658       entry = this->curr_;
00659       return 1;
00660     }
00661 
00662   return 0;
00663 }


Member Data Documentation

template<ACE_SYNCH_DECL >
ACE_Message_Queue_Reverse_Iterator<>::ACE_ALLOC_HOOK_DECLARE

Declare the dynamic allocation hooks.

Definition at line 689 of file Message_Queue_T.h.

template<ACE_SYNCH_DECL >
ACE_Message_Block* ACE_Message_Queue_Reverse_Iterator<>::curr_ [private]

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

Definition at line 696 of file Message_Queue_T.h.

Referenced by ACE_Message_Queue_Reverse_Iterator<>::advance(), ACE_Message_Queue_Reverse_Iterator<>::done(), and ACE_Message_Queue_Reverse_Iterator<>::next().

template<ACE_SYNCH_DECL >
ACE_Message_Queue<ACE_SYNCH_USE>& ACE_Message_Queue_Reverse_Iterator<>::queue_ [private]

Message_Queue we are iterating over.

Definition at line 693 of file Message_Queue_T.h.


The documentation for this class was generated from the following files:
Generated on Tue Feb 2 17:35:20 2010 for ACE by  doxygen 1.4.7