1 // Copyright (C) 2014-2017 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
2 // This Source Code Form is subject to the terms of the Mozilla Public
3 // License, v. 2.0. If a copy of the MPL was not distributed with this
4 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
5 
6 #ifndef VSOMEIP_V3_E2E_BUFFER_HPP
7 #define VSOMEIP_V3_E2E_BUFFER_HPP
8 
9 #include <stdexcept>
10 #include <cstdint>
11 #include <ostream>
12 #include <vector>
13 
14 namespace vsomeip_v3 {
15 
16 using e2e_buffer = std::vector<uint8_t>;
17 
18 class buffer_view {
19   public:
buffer_view(const uint8_t * _data_ptr,size_t _data_length)20     buffer_view(const uint8_t *_data_ptr, size_t _data_length)
21         : data_ptr_(_data_ptr), data_length_(_data_length) {
22     }
23 
buffer_view(const e2e_buffer & _buffer)24     buffer_view(const e2e_buffer &_buffer)
25         : data_ptr_(_buffer.data()), data_length_(_buffer.size()) {}
26 
buffer_view(const e2e_buffer & _buffer,size_t _length)27     buffer_view(const e2e_buffer &_buffer, size_t _length)
28         : data_ptr_(_buffer.data()), data_length_(_length) {
29     }
30 
buffer_view(const e2e_buffer & _buffer,size_t _begin,size_t _end)31      buffer_view(const e2e_buffer &_buffer, size_t _begin, size_t _end)
32         : data_ptr_(_buffer.data() + _begin), data_length_(_end - _begin) {
33     }
34 
begin(void) const35     const uint8_t *begin(void) const { return data_ptr_; }
36 
end(void) const37     const uint8_t *end(void) const { return data_ptr_ + data_length_; }
38 
39 private:
40     const uint8_t *data_ptr_;
41     size_t data_length_;
42 };
43 
44 std::ostream &operator<<(std::ostream &_os, const e2e_buffer &_buffer);
45 
46 } // namespace vsomeip_v3
47 
48 #endif // VSOMEIP_V3_E2E_BUFFER_HPP
49