#include <senf/Packets/SafeIterator.hh>
This class is a wrapper around a PacketData::iterator instance. It will revalidate the iterator on every access. This keeps the iterator valid even when the data container is resized and thereby possibly relocated. The iterator will always point to the byte at the same offset from the packets beginning. If data is inserted before this iterators position, the data pointed to will of course change.
For this to work, the safe_data_iterator must be initialized with the container to which the iterator belongs. After this initialization it can be used like any other iterator.
Definition at line 52 of file SafeIterator.hh.
Public Types |
|
typedef PacketData::size_type | size_type |
Public Member Functions |
|
safe_data_iterator () | |
Make uninitialized iterator. |
|
safe_data_iterator (PacketData &data) | |
Construct iterator only setting the data container. |
|
safe_data_iterator (PacketData &data, PacketData::iterator i) | |
Initialize iterator to given position. |
|
safe_data_iterator (PacketParserBase const &parser) | |
Initialize iterator from parser. |
|
safe_data_iterator & | operator= (PacketData::iterator i) |
Assign iterator. |
|
safe_data_iterator & | operator= (PacketParserBase const &parser) |
Assign iterator from parser. |
|
operator PacketData::iterator () const | |
Convert to iterator. |
|
bool | boolean_test () const |
Check, if iterator is initialized. |
|
PacketData & | data () const |
Access data container. |
typedef PacketData::size_type senf::safe_data_iterator:: | ||||
size_type | ||||
Definition at line 59 of file SafeIterator.hh.
senf::safe_data_iterator:: | ||||
safe_data_iterator | () | |||
Make uninitialized iterator.
Definition at line 36 of file SafeIterator.cci.
senf::safe_data_iterator:: | ||||
safe_data_iterator | ( | PacketData & | data | ) |
Construct iterator only setting the data container.
Definition at line 40 of file SafeIterator.cci.
senf::safe_data_iterator:: | ||||
safe_data_iterator | ( | PacketData & | data, | |
PacketData::iterator | i | ) | ||
Initialize iterator to given position.
Definition at line 44 of file SafeIterator.cci.
senf::safe_data_iterator:: | ||||
safe_data_iterator | ( | PacketParserBase const & | parser | ) |
Initialize iterator from parser.
The iterator will point to the parsers start position.
Definition at line 48 of file SafeIterator.cci.
bool senf::safe_data_iterator:: | ||||
boolean_test | () | |||
Check, if iterator is initialized.
Definition at line 80 of file SafeIterator.cci.
senf::PacketData & senf::safe_data_iterator:: | ||||
data | () | |||
Access data container.
Definition at line 86 of file SafeIterator.cci.
senf::safe_data_iterator::operator PacketData:: | ||||
iterator | () | |||
Convert to iterator.
senf::safe_data_iterator & senf::safe_data_iterator:: | ||||
operator= | ( | PacketParserBase const & | parser | ) |
Assign iterator from parser.
The iterator will point to the parser start position.
Definition at line 67 of file SafeIterator.cci.
senf::safe_data_iterator & senf::safe_data_iterator:: | ||||
operator= | ( | PacketData::iterator | i | ) |
Assign iterator.
The iterator i must be from the container which this
iterator has been initialized.
Definition at line 59 of file SafeIterator.cci.