1#ifndef BYTE_BUFFER_HPP_7NOEQO4F
2#define BYTE_BUFFER_HPP_7NOEQO4F
11typedef std::vector<uint8_t> ByteBuffer;
18template<
typename MASK>
19MASK* buffer_cast(ByteBuffer& buffer)
21 static_assert(std::is_pod<MASK>::value,
"MASK has to be POD data type");
22 static_assert(std::is_object<MASK>::value,
"MASK has to be an object");
25 if (
sizeof(MASK) <= buffer.size()) {
26 mask =
reinterpret_cast<MASK*
>(&buffer[0]);
31template<
typename MASK>
32const MASK* buffer_cast(
const ByteBuffer& buffer)
35 return buffer_cast<MASK>(
const_cast<ByteBuffer&
>(buffer));
44ByteBuffer buffer_copy(
const T&
object)
46 static_assert(std::is_pod<T>::value,
"T has to be POD data type");
47 auto ptr =
reinterpret_cast<const uint8_t*
>(&object);
48 return ByteBuffer(ptr, ptr +
sizeof(T));