30#ifndef TINS_PDU_ITERATOR_H
31#define TINS_PDU_ITERATOR_H
43template <
typename Concrete>
61 return static_cast<Concrete&
>(*this);
78 return static_cast<Concrete&
>(*this);
96 Concrete& self =
static_cast<Concrete&
>(*this);
97 self = Concrete(self->parent_pdu());
107template <
typename Concrete>
120template <
typename Concrete>
228template <
typename Iterator>
238 : start_(
start), end_(end) {
242 template <
typename OtherIterator>
258 Iterator begin()
const {
272 Iterator end()
const {
293PDUIteratorRange<PDUIterator>
iterate_pdus(Packet& packet);
298PDUIteratorRange<ConstPDUIterator>
iterate_pdus(
const PDU* pdu);
303PDUIteratorRange<ConstPDUIterator>
iterate_pdus(
const PDU& pdu);
308PDUIteratorRange<ConstPDUIterator>
iterate_pdus(
const Packet& packet);
Represents a range of addresses.
Definition address_range.h:167
Definition pdu_iterator.h:178
const PDU & value_type
Definition pdu_iterator.h:193
const PDU & reference
Definition pdu_iterator.h:188
value_type operator*() const
Definition pdu_iterator.cpp:74
const PDU * pointer
Definition pdu_iterator.h:183
pointer operator->() const
Definition pdu_iterator.cpp:70
Definition pdu_iterator.h:44
Concrete operator--(int)
Definition pdu_iterator.h:84
std::ptrdiff_t difference_type
Definition pdu_iterator.h:54
Concrete & operator++()
Definition pdu_iterator.h:59
Concrete operator++(int)
Definition pdu_iterator.h:67
Concrete & operator--()
Definition pdu_iterator.h:76
std::bidirectional_iterator_tag iterator_category
Definition pdu_iterator.h:49
Definition pdu_iterator.h:229
PDUIteratorRange(Iterator start, Iterator end)
Definition pdu_iterator.h:237
Definition pdu_iterator.h:128
PDU & value_type
Definition pdu_iterator.h:143
PDU & operator*()
Definition pdu_iterator.cpp:50
PDU & reference
Definition pdu_iterator.h:138
PDU * pointer
Definition pdu_iterator.h:133
pointer operator->()
Definition pdu_iterator.cpp:42
Base class for protocol data units.
Definition pdu.h:107
The Tins namespace.
Definition address_range.h:38
bool operator==(const PDUIteratorBase< Concrete > &lhs, const PDUIteratorBase< Concrete > &rhs)
Definition pdu_iterator.h:108
PDUIteratorRange< PDUIterator > iterate_pdus(PDU *pdu)
Definition pdu_iterator.cpp:80
bool operator!=(const PDUIteratorBase< Concrete > &lhs, const PDUIteratorBase< Concrete > &rhs)
Definition pdu_iterator.h:121