30 #ifndef TINS_PDU_ITERATOR_H 31 #define TINS_PDU_ITERATOR_H 43 template <
typename Concrete>
61 return static_cast<Concrete&
>(*this);
68 Concrete output =
static_cast<Concrete&
>(*this);
78 return static_cast<Concrete&
>(*this);
85 Concrete output =
static_cast<Concrete&
>(*this);
91 Concrete&
self =
static_cast<Concrete&
>(*this);
92 self = Concrete(self->inner_pdu());
96 Concrete&
self =
static_cast<Concrete&
>(*this);
97 self = Concrete(self->parent_pdu());
107 template <
typename Concrete>
109 const PDU* lhs_pdu =
static_cast<const Concrete&
>(lhs).operator->();
110 const PDU* rhs_pdu =
static_cast<const Concrete&
>(rhs).operator->();
111 return lhs_pdu == rhs_pdu;
120 template <
typename Concrete>
122 return !(lhs == rhs);
155 pointer operator->();
160 pointer operator->()
const;
170 const PDU& operator*()
const;
210 pointer operator->()
const;
215 value_type operator*()
const;
228 template <
typename Iterator>
238 : start_(start), end_(end) {
242 template <
typename OtherIterator>
244 : start_(other.begin().operator->()), end_(other.end().operator->()) {
258 Iterator begin()
const {
272 Iterator end()
const {
312 #endif // TINS_PDU_ITERATOR_H bool operator==(const PDUIteratorBase< Concrete > &lhs, const PDUIteratorBase< Concrete > &rhs)
Definition: pdu_iterator.h:108
std::ptrdiff_t difference_type
Definition: pdu_iterator.h:54
Concrete operator++(int)
Definition: pdu_iterator.h:67
const PDU & reference
Definition: pdu_iterator.h:188
PDU & value_type
Definition: pdu_iterator.h:143
const PDU & value_type
Definition: pdu_iterator.h:193
Concrete & operator--()
Definition: pdu_iterator.h:76
PDUIteratorRange< PDUIterator > iterate_pdus(PDU *pdu)
Definition: pdu_iterator.cpp:80
std::bidirectional_iterator_tag iterator_category
Definition: pdu_iterator.h:49
PDU & reference
Definition: pdu_iterator.h:138
Definition: pdu_iterator.h:229
Definition: pdu_iterator.h:44
PDUIteratorRange(Iterator start, Iterator end)
Definition: pdu_iterator.h:237
The Tins namespace.
Definition: address_range.h:38
bool operator!=(const PDUIteratorBase< Concrete > &lhs, const PDUIteratorBase< Concrete > &rhs)
Definition: pdu_iterator.h:121
const PDU * pointer
Definition: pdu_iterator.h:183
Base class for protocol data units.
Definition: pdu.h:107
Definition: pdu_iterator.h:178
Definition: pdu_iterator.h:128
Concrete & operator++()
Definition: pdu_iterator.h:59
Concrete operator--(int)
Definition: pdu_iterator.h:84
PDU * pointer
Definition: pdu_iterator.h:133