X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FPacketParser.cti;h=52f13b9b68ec9f90f67bbc5b838db9fb35d24d3b;hb=2371b3e67e650b7e829c35e8b4441a8ce2931ac0;hp=9b885e57f5e2adbb7970a7b1f0f296b19457fc13;hpb=47368f306a577d1e46df69a7f729bd3893cbe5e7;p=senf.git diff --git a/Packets/PacketParser.cti b/Packets/PacketParser.cti index 9b885e5..52f13b9 100644 --- a/Packets/PacketParser.cti +++ b/Packets/PacketParser.cti @@ -1,6 +1,8 @@ +// $Id$ +// // Copyright (C) 2007 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund // // This program is free software; you can redistribute it and/or modify @@ -46,10 +48,6 @@ prefix_ Parser senf::PacketParserBase::parse(size_type n) return Parser(boost::next(i(),n),state()); } -prefix_ void senf::PacketParserBase::defaultInit() - const -{} - /////////////////////////////////////////////////////////////////////////// // namespace members @@ -59,6 +57,7 @@ prefix_ senf::PacketParserBase::size_type senf::bytes(Parser p) return detail::packetParserSize(p,0); } +#ifndef DOXYGEN template prefix_ typename boost::enable_if_c < boost::is_base_of::value @@ -68,10 +67,33 @@ prefix_ typename boost::enable_if_c < target.value(value); return target; } +#else +template +prefix_ Parser senf::operator<<(Parser target, Value const & value) +{} +#endif + +#ifndef DOXYGEN +template +prefix_ typename boost::enable_if_c < + boost::is_base_of::value + && ! boost::is_base_of::value, + Parser >::type senf::operator<<(Parser target, boost::optional const & value) +{ + if (value) + target.value(*value); + return target; +} +#else +template +prefix_ Parser senf::operator<<(Parser target, Value const & value) +{} +#endif + template prefix_ senf::PacketParserBase::size_type -senf::detail::packetParserSize(Parser p, int, Parser_TakeNum *) +senf::detail::packetParserSize(Parser p, int, senf::mpl::take_uint *) { return Parser::fixed_bytes; } @@ -83,20 +105,20 @@ prefix_ senf::PacketParserBase::size_type senf::detail::packetParserSize(Parser } /////////////////////////////////////////////////////////////////////////// -// senf::SafePacketParser +// senf::SafePacketParserWrapper template -prefix_ senf::SafePacketParser::SafePacketParser() - : i_() +prefix_ senf::SafePacketParserWrapper::SafePacketParserWrapper() + : parser_(), i_() {} template -prefix_ senf::SafePacketParser::SafePacketParser(Parser parser) +prefix_ senf::SafePacketParserWrapper::SafePacketParserWrapper(Parser parser) : parser_(parser), i_(parser) {} template -prefix_ senf::SafePacketParser & senf::SafePacketParser::operator=(Parser parser) +prefix_ senf::SafePacketParserWrapper & senf::SafePacketParserWrapper::operator=(Parser parser) { parser_ = parser; i_ = parser; @@ -104,7 +126,7 @@ prefix_ senf::SafePacketParser & senf::SafePacketParser::operato } template -prefix_ Parser senf::SafePacketParser::operator*() +prefix_ Parser senf::SafePacketParserWrapper::operator*() const { BOOST_ASSERT( i_ ); @@ -113,7 +135,7 @@ prefix_ Parser senf::SafePacketParser::operator*() } template -prefix_ Parser const * senf::SafePacketParser::operator->() +prefix_ Parser const * senf::SafePacketParserWrapper::operator->() const { BOOST_ASSERT( i_ ); @@ -122,7 +144,7 @@ prefix_ Parser const * senf::SafePacketParser::operator->() } template -prefix_ bool senf::SafePacketParser::boolean_test() +prefix_ bool senf::SafePacketParserWrapper::boolean_test() const { return i_; @@ -138,4 +160,6 @@ prefix_ bool senf::SafePacketParser::boolean_test() // c-file-style: "senf" // indent-tabs-mode: nil // ispell-local-dictionary: "american" +// compile-command: "scons -u test" +// comment-column: 40 // End: