1#include <vanetza/geonet/header_variant.hpp>
6using namespace vanetza::geonet;
8class HeaderVariantVisitor :
public boost::static_visitor<>
17 void operator()(
const T& header)
19 serialize(header, m_archive);
28 HeaderVariantVisitor visit(ar);
29 boost::apply_visitor(visit, header);
32void serialize(
const HeaderRefVariant& header,
OutputArchive& ar)
34 HeaderVariantVisitor visitor(ar);
35 boost::apply_visitor(visitor, header);
38void serialize(
const HeaderConstRefVariant& header,
OutputArchive& ar)
40 HeaderVariantVisitor visitor(ar);
41 boost::apply_visitor(visitor, header);
52class HeaderVariantLengthVisitor :
public boost::static_visitor<std::size_t>
56 std::size_t operator()(
const T& header)
58 return T::length_bytes;
62std::size_t get_length(
const HeaderVariant& header)
64 HeaderVariantLengthVisitor visit;
65 return boost::apply_visitor(visit, header);
68std::size_t get_length(
const HeaderRefVariant& header)
70 HeaderVariantLengthVisitor visitor;
71 return boost::apply_visitor(visitor, header);
74std::size_t get_length(
const HeaderConstRefVariant& header)
76 HeaderVariantLengthVisitor visitor;
77 return boost::apply_visitor(visitor, header);