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