1#include <vanetza/geonet/dcc_field.hpp>
2#include <boost/variant/apply_visitor.hpp>
3#include <boost/variant/static_visitor.hpp>
10struct dcc_mco_extractor : boost::static_visitor< boost::optional<DccMcoField> >
12 using return_type = boost::optional<DccMcoField>;
14 return_type operator()(
const DccMcoField& mco)
const
19 return_type operator()(uint32_t raw)
const
21 return DccMcoField { raw };
25 return_type operator()(
const T&)
31boost::optional<DccMcoField> get_dcc_mco(
const DccField& field)
33 return boost::apply_visitor(dcc_mco_extractor {}, field);
36void serialize(
const DccField& field, OutputArchive& ar)
38 struct serialize_visitor : boost::static_visitor<uint32_t>
40 uint32_t operator()(
const DccMcoField& mco)
const {
return static_cast<uint32_t
>(mco); }
41 uint32_t operator()(
const uint32_t& raw)
const {
return raw; }
44 uint32_t raw = boost::apply_visitor(serialize_visitor {}, field);
45 serialize(host_cast(raw), ar);
48void deserialize(DccField& field, InputArchive& ar)