#include <Aggregate.h>
Public Member Functions | |
TraceIterator (Trace *trc, int idx) | |
TraceIterator (const TraceIterator &toCopy) | |
TraceIterator & | operator= (const TraceIterator &rhs) |
TraceIterator * | clone (void) const |
TraceIterator | operator+ (int increment) const |
TraceIterator & | operator++ (void) |
TraceIterator | operator- (int decrement) const |
TraceIterator & | operator-- (void) |
bool | operator== (const TraceIterator &rhs) const |
bool | operator!= (const TraceIterator &rhs) const |
Packet & | operator * (void) throw ( std::runtime_error, IndexOutOfBoundsException ) |
Packet * | operator-> (void) throw ( std::runtime_error, IndexOutOfBoundsException ) |
const Packet & | operator * (void) const throw ( std::runtime_error, IndexOutOfBoundsException ) |
const Packet * | operator-> (void) const throw ( std::runtime_error, IndexOutOfBoundsException ) |
const StreamKey & | getStreamKey (void) const throw ( std::runtime_error ) |
bool | isValid (void) const |
Protected Attributes | |
Trace * | trace |
int | index |
Friends | |
class | Trace |
Not yet compliant with STL iterators; will have to do that if this is eventually to be used in STL algorithms. For the time being, however, it's just going to do what I need it to do, and not much more.
The interface is a bit wonky, unfortunately. To avoid having to maintain a seperate wrapper class, the iterator is not dereferenced like a pointer, and instead contains member functions that direct requests through the aggregate.
TraceIterator should behave as a const_iterator; that is, it should not modify the aggregate to which it refers.
TraceIterator is monomorphic to allow things like low-headache copying.
|
|
check if the TraceIterator is valid; i.e. refers to a valid location in a Trace |
|
preincrement |
|
Request the value of a PacketAttribute for the packet pointed to by the iterator |