Fawkes API  Fawkes Development Version
fawkes::MessageQueue::MessageIterator Class Reference

Message iterator. More...

#include <interface/message_queue.h>

Public Member Functions

 MessageIterator ()
 Constructor. More...
 
 MessageIterator (const MessageIterator &it)
 Copy constructor. More...
 
MessageIteratoroperator++ ()
 Increment iterator. More...
 
MessageIterator operator++ (int inc)
 Increment iterator. More...
 
MessageIteratoroperator+ (unsigned int i)
 Advance by a certain amount. More...
 
MessageIteratoroperator+= (unsigned int i)
 Advance by a certain amount. More...
 
bool operator== (const MessageIterator &c) const
 Check equality of two iterators. More...
 
bool operator!= (const MessageIterator &c) const
 Check inequality of two iterators. More...
 
Messageoperator* () const
 Get memory pointer of chunk. More...
 
Messageoperator-> () const
 Act on current message. More...
 
MessageIteratoroperator= (const MessageIterator &c)
 Assign iterator. More...
 
unsigned int id () const
 Get ID of current element or 0 if element is end. More...
 
template<class MessageType >
bool is () const
 Check if message is of given type. More...
 
template<class MessageType >
MessageType * get () const
 Get current message of given type. More...
 

Friends

class MessageQueue
 

Detailed Description

Message iterator.

Use this iterator to iterate over messages in a message queue. Use MessageQueue::begin() to get the iterator.

Author
Tim Niemueller

Definition at line 58 of file message_queue.h.

Constructor & Destructor Documentation

◆ MessageIterator() [1/2]

fawkes::MessageQueue::MessageIterator::MessageIterator ( )

Constructor.

Definition at line 372 of file message_queue.cpp.

Referenced by fawkes::MessageQueue::end().

◆ MessageIterator() [2/2]

fawkes::MessageQueue::MessageIterator::MessageIterator ( const MessageIterator it)

Copy constructor.

Parameters
itIterator to copy

Definition at line 381 of file message_queue.cpp.

Member Function Documentation

◆ get()

template<class MessageType >
MessageType * fawkes::MessageQueue::MessageIterator::get ( ) const

Get current message of given type.

This will return the current message of the given template type. An TypeMismatchException is thrown if the current message is not of the requested type.

Exceptions
TypeMismatchExceptionthrown, if current message is not of requested type.
Returns
current message of requested type

Definition at line 140 of file message_queue.h.

◆ id()

unsigned int fawkes::MessageQueue::MessageIterator::id ( ) const

Get ID of current element or 0 if element is end.

Returns
ID of current element or 0 if element is end.

Definition at line 531 of file message_queue.cpp.

◆ is()

template<class MessageType >
bool fawkes::MessageQueue::MessageIterator::is ( ) const

Check if message is of given type.

The current message is checked if it is of the type that the template parameter determines. Use non-pointer template arguments!

Returns
true, if the current message is of the given type, false otherwise

Definition at line 125 of file message_queue.h.

◆ operator!=()

bool fawkes::MessageQueue::MessageIterator::operator!= ( const MessageIterator c) const

Check inequality of two iterators.

Can be used to determine if two iterators point to different chunks.

Parameters
citerator to compare current instance to
Returns
true, if iterators point to different chunks of memory, false otherwise

Definition at line 485 of file message_queue.cpp.

◆ operator*()

Message * fawkes::MessageQueue::MessageIterator::operator* ( ) const

Get memory pointer of chunk.

Use this operator to get the pointer to the chunk of memory that this iterator points to.

Returns
pointer to memory

Definition at line 497 of file message_queue.cpp.

◆ operator+()

MessageQueue::MessageIterator & fawkes::MessageQueue::MessageIterator::operator+ ( unsigned int  i)

Advance by a certain amount.

Can be used to add an integer to the iterator to advance many steps in one go. This operation takes linear time depending on i.

Parameters
isteps to advance in list. If i is bigger than the number of remaining elements in the list will stop beyond list.
Returns
reference to current instance after advancing i steps or after reaching end of list.

Definition at line 442 of file message_queue.cpp.

◆ operator++() [1/2]

MessageQueue::MessageIterator & fawkes::MessageQueue::MessageIterator::operator++ ( )

Increment iterator.

Advances to the next element. This is the infix-operator. It may be used like this:

for (MessageIterator cit = msgq->begin(); cit != msgq->end(); ++cit) {
// your code here
}
Returns
Reference to instance itself after advancing to the next element.

Definition at line 398 of file message_queue.cpp.

◆ operator++() [2/2]

MessageQueue::MessageIterator fawkes::MessageQueue::MessageIterator::operator++ ( int  inc)

Increment iterator.

Advances to the next element in allocated chunk list. This is the postfix-operator. It may be used like this:

for (MessageIterator cit = memmgr->begin(); cit != memmgr->end(); cit++) {
// your code here
}

Note that since a copy of the original iterator has to be created an returned it the postfix operation takes both, more CPU time and more memory. If possible (especially if used in a for loop like the example) use the prefix operator!

See also
operator++()
Parameters
incignored
Returns
copy of the current instance before advancing to the next element.

Definition at line 423 of file message_queue.cpp.

◆ operator+=()

MessageQueue::MessageIterator & fawkes::MessageQueue::MessageIterator::operator+= ( unsigned int  i)

Advance by a certain amount.

Works like operator+(unsigned int i), provided for convenience.

Parameters
isteps to advance in list
Returns
reference to current instance after advancing i steps or after reaching end of list.

Definition at line 458 of file message_queue.cpp.

◆ operator->()

Message * fawkes::MessageQueue::MessageIterator::operator-> ( ) const

Act on current message.

Node that you have to make sure that this is not called on the end node!

Returns
current message

Definition at line 508 of file message_queue.cpp.

◆ operator=()

MessageQueue::MessageIterator & fawkes::MessageQueue::MessageIterator::operator= ( const MessageIterator c)

Assign iterator.

Makes the current instance to point to the same memory element as c.

Parameters
cassign value
Returns
reference to current instance

Definition at line 520 of file message_queue.cpp.

◆ operator==()

bool fawkes::MessageQueue::MessageIterator::operator== ( const MessageIterator c) const

Check equality of two iterators.

Can be used to determine if two iterators point to the same chunk.

Parameters
citerator to compare current instance to
Returns
true, if iterators point to the same chunk, false otherwise

Definition at line 473 of file message_queue.cpp.


The documentation for this class was generated from the following files: