1#include <vanetza/security/v2/length_coding.hpp>
2#include <vanetza/security/v2/serialization.hpp>
16std::size_t trim_size_impl(T in,
typename std::enable_if<std::is_same<T, std::size_t>::value>::type* =
nullptr)
22std::size_t trim_size_impl(T in,
typename std::enable_if<!std::is_same<T, std::size_t>::value>::type* =
nullptr)
24 if (in > std::numeric_limits<std::size_t>::max()) {
25 throw std::overflow_error(
"given size exceeds limits of std::size_t");
27 return static_cast<std::size_t
>(in);
30std::size_t trim_size(std::uintmax_t in)
32 return trim_size_impl(in);
36void serialize_length(OutputArchive& ar, std::uintmax_t length)
39 buf = encode_length(length);
40 for (
auto it = buf.begin(); it != buf.end(); it++) {
45std::uintmax_t deserialize_length(InputArchive& ar)
49 const size_t leading = count_leading_ones(buf[0]);
50 buf.resize(leading + 1);
51 for (
size_t c = 1; c <= leading; ++c) {
54 auto tup = decode_length(buf);
55 assert(std::get<0>(tup) != buf.begin());
56 return std::get<1>(tup);