1#ifndef BYTE_VIEW_HPP_TXN2ISMB
2#define BYTE_VIEW_HPP_TXN2ISMB
4#include <vanetza/common/byte_buffer.hpp>
5#include <boost/range/iterator_range.hpp>
13class ByteBufferConvertible;
18 using iterator_category = std::random_access_iterator_tag;
19 using difference_type = std::ptrdiff_t;
20 using value_type = std::uint8_t;
21 using pointer =
const value_type*;
22 using reference =
const value_type&;
26 explicit byte_view_iterator(
const ByteBuffer::const_iterator& it) : m_iterator(&*it) {}
28 constexpr value_type operator*()
const
73 return m_iterator - o.m_iterator;
76 constexpr reference operator[](difference_type n)
83 return m_iterator == o.m_iterator;
88 return m_iterator != o.m_iterator;
93 return m_iterator > o.m_iterator;
98 return m_iterator < o.m_iterator;
103 return m_iterator >= o.m_iterator;
108 return m_iterator <= o.m_iterator;
111 constexpr pointer raw()
const
117 pointer m_iterator =
nullptr;
125constexpr byte_view_iterator operator+(byte_view_iterator it, byte_view_iterator::difference_type n)
136 using range_type = boost::iterator_range<byte_view_iterator>;
139 using value_type = byte_view_iterator::value_type;
140 using pointer = byte_view_iterator::pointer;
148 byte_view_range(
const ByteBuffer::const_iterator&,
const ByteBuffer::const_iterator&);
162 ByteBuffer::const_pointer
data()
const;
173 using range_type::size;
174 using range_type::begin;
175 using range_type::end;
value_type operator[](size_type) const
ByteBuffer::const_pointer data() const