X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FVariantParser.cti;h=d694cf620b5a19d22a1742871ecaac2d740b4a8b;hb=a1fdb7bb122f0b05be809a922d4b7ef5e125fa67;hp=78d232d1291c046e8022dc14686da68ebe337e4a;hpb=380525e28d9a2a2758dedcb4875b5c3755303344;p=senf.git diff --git a/Packets/VariantParser.cti b/Packets/VariantParser.cti index 78d232d..d694cf6 100644 --- a/Packets/VariantParser.cti +++ b/Packets/VariantParser.cti @@ -104,6 +104,54 @@ senf::detail::VariantBytes::bytes(Variant const & v, unsigned n) return senf::bytes(v.template get<0>()); } +/////////////////////////////////////////////////////////////////////////// +// senf::detail::VariantKeyTransform + +template +prefix_ unsigned senf::detail::VariantKeyTransform::get(input_type v) +{ + return VariantKeyTransformCheck< + input_type, value_type, Keys, boost::mpl::size::type::value-1>::get(v); +} + +template +prefix_ typename senf::detail::VariantKeyTransform::input_type +senf::detail::VariantKeyTransform::set(unsigned v) +{ + return VariantKeyTransformCheck< + input_type, value_type, Keys, boost::mpl::size::type::value-1>::set(v); +} + +template +prefix_ Out senf::detail::VariantKeyTransformCheck::get(In v) +{ + if (boost::mpl::at >::type::key() == v) + return N; + else + return VariantKeyTransformCheck::get(v); +} + +template +prefix_ In senf::detail::VariantKeyTransformCheck::set(Out v) +{ + if (v == N) + return boost::mpl::at >::type::key(); + else + return VariantKeyTransformCheck::set(v); +} + +template +prefix_ Out senf::detail::VariantKeyTransformCheck::get(In v) +{ + return 0; +} + +template +prefix_ In senf::detail::VariantKeyTransformCheck::set(Out v) +{ + return boost::mpl::at >::type::key(); +} + ///////////////////////////////cti.e/////////////////////////////////////// #undef prefix_