X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FPacketParser.cti;h=48f23340a8722a0283d2e169b11d21bdc67afba4;hb=961cf85a6abf2b5f0a7958bbfcd8f72e7b32721b;hp=fb53bb112d4cb5cc9b66fe4275fc23e44f19c871;hpb=9cb871b939efe93e35dd96808d25089399acfc46;p=senf.git diff --git a/senf/Packets/PacketParser.cti b/senf/Packets/PacketParser.cti index fb53bb1..48f2334 100644 --- a/senf/Packets/PacketParser.cti +++ b/senf/Packets/PacketParser.cti @@ -108,9 +108,39 @@ 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(); +} + + +/////////////////////////////////////////////////////////////////////////// +// 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); } ///////////////////////////////cti.e///////////////////////////////////////