#include "byte_buffer_convertible.hpp" #include #include namespace vanetza { namespace convertible { std::unique_ptr byte_buffer::duplicate() const { ByteBuffer duplicate; this->convert(duplicate); std::unique_ptr result { new byte_buffer_impl(std::move(duplicate)) }; return result; } byte_buffer_impl::byte_buffer_impl(const std::string& str) : m_buffer(str) {} byte_buffer_impl::byte_buffer_impl(std::string&& str) : m_buffer(std::move(str)) {} void byte_buffer_impl::convert(ByteBuffer& buffer) const { buffer.clear(); std::copy(m_buffer.begin(), m_buffer.end(), std::back_inserter(buffer)); } std::size_t byte_buffer_impl::size() const { return m_buffer.size(); } std::unique_ptr byte_buffer_impl::duplicate() const { return std::unique_ptr { new byte_buffer_impl() }; } } // namespace convertible ByteBufferConvertible::ByteBufferConvertible(const ByteBufferConvertible& other) : m_wrapper(other.m_wrapper->duplicate()) { } ByteBufferConvertible& ByteBufferConvertible::operator=(const ByteBufferConvertible& other) { m_wrapper = other.m_wrapper->duplicate(); return *this; } } // namespace vanetza