X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FPacketParser.cti;h=be92007c22c07cdc1f8afe2330f846fd5e79ec82;hb=7ee689fe38d66aa3a0004d55e8708750d35adc0b;hp=fb53bb112d4cb5cc9b66fe4275fc23e44f19c871;hpb=9cb871b939efe93e35dd96808d25089399acfc46;p=senf.git diff --git a/senf/Packets/PacketParser.cti b/senf/Packets/PacketParser.cti index fb53bb1..be92007 100644 --- a/senf/Packets/PacketParser.cti +++ b/senf/Packets/PacketParser.cti @@ -30,9 +30,9 @@ #include "PacketData.hh" #define prefix_ inline -///////////////////////////////cti.p/////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::PacketParserBase template @@ -63,7 +63,7 @@ prefix_ Parser senf::PacketParserBase::parse(Arg const & arg, size_type n) return Parser(arg, boost::next(i(),n), state()); } -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // namespace members template @@ -108,12 +108,42 @@ prefix_ Parser senf::operator<<(Parser target, Value const & value) template prefix_ senf::PacketParserBase::size_type -senf::detail::packetParserSize(Parser p, int, senf::mpl::take_uint *) +senf::detail::packetParserSize(Parser p, int, senf::mpl::take_uint *) { - return Parser::fixed_bytes; + return p.bytes(); } -///////////////////////////////cti.e/////////////////////////////////////// + +//-///////////////////////////////////////////////////////////////////////////////////////////////// +// senf::ValueParserBase + +template +prefix_ senf::ValueParserBase::ValueParserBase(data_iterator i, state_type s) + : PacketParserBase(i, s, FixedBytes) +{ } + +template +prefix_ senf::ValueParserBase::operator value_type () + const +{ + return static_cast(this)->value(); +} + +template +prefix_ senf::PacketParserBase::byte & +senf::ValueParserBase::operator[](size_type index) +{ + return *boost::next(i(), index); +} + +template +prefix_ Parser const & senf::ValueParserBase::operator= (value_type const & other) +{ + static_cast(this)->value(other); + return *static_cast(this); +} + +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_