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