X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FAuxParser.cti;h=e4f98328ff138b382417b6beba00a218e9e8425b;hb=fd3a0e8ac95d1158e9ea661ddf9187b67c70169f;hp=205d88dc0e0c326e466c14f26f462117d9719817;hpb=4ee78597a1dae53669f5295cbb686c58146d2449;p=senf.git diff --git a/Packets/AuxParser.cti b/Packets/AuxParser.cti index 205d88d..e4f9832 100644 --- a/Packets/AuxParser.cti +++ b/Packets/AuxParser.cti @@ -34,12 +34,21 @@ // senf::detail::PrefixAuxParserPolicy

template -prefix_ typename senf::detail::PrefixAuxParserPolicy

::ParserType +prefix_ typename P::value_type senf::detail::PrefixAuxParserPolicy

::aux(PacketParserBase::data_iterator i, PacketParserBase::state_type s) const { - return ParserType(i, s); + return P(i, s).value(); +} + +template +prefix_ void senf::detail::PrefixAuxParserPolicy

::aux(typename P::value_type const & v, + PacketParserBase::data_iterator i, + PacketParserBase::state_type s) + const +{ + P(i, s).value(v); } template @@ -48,19 +57,28 @@ senf::detail::PrefixAuxParserPolicy

::adjust(PacketParserBase::data_iterator i PacketParserBase::state_type s) const { - return i+ParserType::fixed_bytes; + return i+P::fixed_bytes; } /////////////////////////////////////////////////////////////////////////// // senf::detail::FixedAuxParserPolicy

template -prefix_ typename senf::detail::FixedAuxParserPolicy::ParserType +prefix_ typename P::value_type senf::detail::FixedAuxParserPolicy::aux(PacketParserBase::data_iterator i, PacketParserBase::state_type s) const { - return ParserType(i-Dist, s); + return P(i-Dist, s).value(); +} + +template +prefix_ void senf::detail::FixedAuxParserPolicy::aux(typename P::value_type const & v, + PacketParserBase::data_iterator i, + PacketParserBase::state_type s) + const +{ + P(i-Dist, s).value(v); } template @@ -76,7 +94,7 @@ senf::detail::FixedAuxParserPolicy::adjust(PacketParserBase::data_iterat // senf::detail::DynamicAuxParserPolicy

template -prefix_ senf::detail::DynamicAuxParserPolicy

::DynamicAuxParserPolicy(ParserType p) +prefix_ senf::detail::DynamicAuxParserPolicy

::DynamicAuxParserPolicy(P p) : p_ (p) {} @@ -87,12 +105,21 @@ senf::detail::DynamicAuxParserPolicy

::DynamicAuxParserPolicy(WrapperPolicy co {} template -prefix_ typename senf::detail::DynamicAuxParserPolicy

::ParserType +prefix_ typename P::value_type senf::detail::DynamicAuxParserPolicy

::aux(PacketParserBase::data_iterator i, PacketParserBase::state_type s) const { - return p_; + return p_.value(); +} + +template +prefix_ void senf::detail::DynamicAuxParserPolicy

::aux(typename P::value_type const & v, + PacketParserBase::data_iterator i, + PacketParserBase::state_type s) + const +{ + p_.value(v); } template @@ -114,12 +141,22 @@ DynamicWrapperAuxParserPolicy(ParserPolicy const & other) {} template -prefix_ typename senf::detail::DynamicWrapperAuxParserPolicy

::ParserType +prefix_ typename P::value_type senf::detail::DynamicWrapperAuxParserPolicy

::aux(PacketParserBase::data_iterator i, PacketParserBase::state_type s) const { - return * p_; + return p_->value(); +} + +template +prefix_ void +senf::detail::DynamicWrapperAuxParserPolicy

::aux(typename P::value_type const & v, + PacketParserBase::data_iterator i, + PacketParserBase::state_type s) + const +{ + p_->value(v); } template @@ -131,6 +168,38 @@ senf::detail::DynamicWrapperAuxParserPolicy

::adjust(PacketParserBase::data_it return i; } +/////////////////////////////////////////////////////////////////////////// +// senf::detail::TransformAuxParserPolicy + +template +prefix_ senf::detail::TransformAuxParserPolicy::TransformAuxParserPolicy() +{} + +template +template +prefix_ senf::detail::TransformAuxParserPolicy:: +TransformAuxParserPolicy(Arg const & arg) + : Policy(arg) +{} + +template +prefix_ typename Transform::value_type +senf::detail::TransformAuxParserPolicy::aux(PacketParserBase::data_iterator i, + PacketParserBase::state_type s) + const +{ + return Transform::get(Policy::aux(i,s)); +} + +template +prefix_ void senf::detail::TransformAuxParserPolicy:: +aux(typename Transform::value_type const & v, PacketParserBase::data_iterator i, + PacketParserBase::state_type s) + const +{ + Policy::aux(Transform::set(v), i, s); +} + ///////////////////////////////cti.e/////////////////////////////////////// #undef prefix_