Vanetza
 
Loading...
Searching...
No Matches
byte_buffer_convertible.cpp
1#include "byte_buffer_convertible.hpp"
2#include <algorithm>
3#include <iterator>
4
5namespace vanetza
6{
7namespace convertible
8{
9
10std::unique_ptr<byte_buffer> byte_buffer::duplicate() const
11{
12 ByteBuffer duplicate;
13 this->convert(duplicate);
14 std::unique_ptr<byte_buffer> result {
15 new byte_buffer_impl<ByteBuffer>(std::move(duplicate))
16 };
17 return result;
18}
19
20byte_buffer_impl<std::string>::byte_buffer_impl(const std::string& str) : m_buffer(str) {}
21byte_buffer_impl<std::string>::byte_buffer_impl(std::string&& str) : m_buffer(std::move(str)) {}
22
23void byte_buffer_impl<std::string>::convert(ByteBuffer& buffer) const
24{
25 buffer.clear();
26 std::copy(m_buffer.begin(), m_buffer.end(), std::back_inserter(buffer));
27}
28
29std::size_t byte_buffer_impl<std::string>::size() const
30{
31 return m_buffer.size();
32}
33
34std::unique_ptr<byte_buffer> byte_buffer_impl<std::nullptr_t>::duplicate() const
35{
36 return std::unique_ptr<byte_buffer> { new byte_buffer_impl<std::nullptr_t>() };
37}
38
39} // namespace convertible
40
41ByteBufferConvertible::ByteBufferConvertible(const ByteBufferConvertible& other) :
42 m_wrapper(other.m_wrapper->duplicate())
43{
44}
45
46ByteBufferConvertible& ByteBufferConvertible::operator=(const ByteBufferConvertible& other)
47{
48 m_wrapper = other.m_wrapper->duplicate();
49 return *this;
50}
51
52} // namespace vanetza
53
STL namespace.