Vanetza
 
Loading...
Searching...
No Matches
byte_view.cpp
1#include <vanetza/common/byte_view.hpp>
2#include <vanetza/common/byte_buffer_convertible.hpp>
3#include <cassert>
4#include <limits>
5
6namespace vanetza
7{
8
10 const ByteBuffer::const_iterator& begin,
11 const ByteBuffer::const_iterator& end) :
12 iterator_range(begin, end)
13{
14}
15
17 iterator_range(begin, end)
18{
19}
20
21byte_view_range::byte_view_range(ByteBuffer&& _buffer) :
22 iterator_range(_buffer.begin(), _buffer.end()), buffer(std::move(_buffer))
23{
24}
25
26ByteBuffer::const_pointer byte_view_range::data() const
27{
28 auto begin = this->begin();
29 return begin != this->end() ? begin.raw() : nullptr;
30}
31
32ByteBuffer::value_type byte_view_range::operator[](size_type pos) const
33{
34 assert(!std::numeric_limits<size_type>::is_signed || pos >= 0);
35 assert(pos < size());
36 return begin()[pos];
37}
38
39byte_view_range create_byte_view(ByteBuffer&& buffer)
40{
41 return byte_view_range { std::move(buffer) };
42}
43
44byte_view_range create_byte_view(const ByteBuffer& buffer)
45{
46 return byte_view_range { buffer.begin(), buffer.end() };
47}
48
49byte_view_range create_byte_view(const ByteBufferConvertible& convertible)
50{
51 ByteBuffer buffer;
52 convertible.convert(buffer);
53 return byte_view_range { std::move(buffer) };
54}
55
56} // namespace vanetza
value_type operator[](size_type) const
Definition: byte_view.cpp:32
byte_view_range(const ByteBuffer::const_iterator &, const ByteBuffer::const_iterator &)
Definition: byte_view.cpp:9
ByteBuffer::const_pointer data() const
Definition: byte_view.cpp:26
STL namespace.