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));