1#ifndef BYTE_BUFFER_CONVERTIBLE_HPP_CFOQNR35
2#define BYTE_BUFFER_CONVERTIBLE_HPP_CFOQNR35
4#include <vanetza/common/byte_buffer.hpp>
17 virtual void convert(ByteBuffer&)
const = 0;
18 virtual std::size_t size()
const = 0;
19 virtual std::unique_ptr<byte_buffer> duplicate()
const;
30 void convert(ByteBuffer& buf)
const override { buf = m_buffer; }
31 std::size_t size()
const override {
return m_buffer.size(); }
40 m_buffer(
std::move(buf)) {}
41 void convert(ByteBuffer& buf)
const override { buf = *m_buffer; }
42 std::size_t size()
const override {
return m_buffer->size(); }
44 std::unique_ptr<ByteBuffer> m_buffer;
48struct byte_buffer_impl<
std::string> :
public byte_buffer
50 byte_buffer_impl(
const std::string& str);
51 byte_buffer_impl(std::string&& str);
52 void convert(ByteBuffer& buffer)
const override;
53 std::size_t size()
const override;
59struct byte_buffer_impl<
std::nullptr_t> :
public byte_buffer
61 void convert(ByteBuffer& buffer)
const override { buffer.clear(); }
62 std::size_t size()
const override {
return 0; }
63 std::unique_ptr<byte_buffer> duplicate()
const override;
84 m_wrapper(std::move(ptr)) {}
96 void convert(ByteBuffer& destination)
const { m_wrapper->convert(destination); }
97 std::size_t size()
const {
return m_wrapper->size(); }
103 std::unique_ptr<convertible::byte_buffer> m_wrapper;