Utils/Logger: Implement TimeSource facility
[senf.git] / Packets / PacketParser.cti
index 7413037..5d27c62 100644 (file)
@@ -46,10 +46,6 @@ prefix_ Parser senf::PacketParserBase::parse(size_type n)
     return Parser(boost::next(i(),n),state());
 }
 
-prefix_ void senf::PacketParserBase::defaultInit()
-    const
-{}
-
 ///////////////////////////////////////////////////////////////////////////
 // namespace members
 
@@ -75,6 +71,24 @@ prefix_ Parser senf::operator<<(Parser target, Value const & value)
 {}
 #endif
 
+#ifndef DOXYGEN
+template <class Parser, class Value>
+prefix_ typename boost::enable_if_c < 
+        boost::is_base_of<senf::PacketParserBase, Parser>::value 
+            && ! boost::is_base_of<senf::PacketParserBase, Value>::value,
+        Parser >::type senf::operator<<(Parser target, boost::optional<Value> const & value)
+{
+    if (value)
+        target.value(*value);
+    return target;
+}
+#else
+template <class Parser, class Value>
+prefix_ Parser senf::operator<<(Parser target, Value const & value)
+{}
+#endif
+
+
 template <class Parser>
 prefix_ senf::PacketParserBase::size_type
 senf::detail::packetParserSize(Parser p, int, senf::mpl::take_uint<Parser::fixed_bytes> *)