Vanetza
 
Loading...
Searching...
No Matches
int_x.cpp
1#include <vanetza/security/v2/int_x.hpp>
2#include <vanetza/security/v2/length_coding.hpp>
3
4namespace vanetza
5{
6namespace security
7{
8namespace v2
9{
10
11void IntX::set(integer_type x)
12{
13 m_value = x;
14}
15
16ByteBuffer IntX::encode() const
17{
18 return encode_length(m_value);
19}
20
21boost::optional<IntX> IntX::decode(const ByteBuffer& buffer)
22{
23 std::tuple<ByteBuffer::const_iterator, std::uintmax_t> decoded = decode_length(buffer);
24 if (std::get<0>(decoded) != buffer.begin()) {
25 IntX result;
26 result.set(std::get<1>(decoded));
27 return result;
28 }
29 return boost::none;
30}
31
32size_t get_size(IntX intx)
33{
34 return length_coding_size(intx.get());
35}
36
37void serialize(OutputArchive& ar, const IntX& intx)
38{
39 serialize_length(ar, intx.get());
40}
41
42size_t deserialize(InputArchive& ar, IntX& intx)
43{
44 const auto size = deserialize_length(ar);
45 intx.set(size);
46 return get_size(intx);
47}
48
49} // namespace v2
50} // namespace security
51} // namespace vanetza