Packets: optimized intrusive_ptr access; optimized PacketTypeMixin member parameters
[senf.git] / senf / Packets / PacketParser.hh
index 2e8547c..56b20d9 100644 (file)
@@ -296,7 +296,7 @@ namespace senf {
             senf::safe_data_iterator safe_i_;
             mutable PacketParserBase const * parser_;
 
-            ParserProtector( PacketParserBase const * parser);
+            ParserProtector(PacketParserBase const * parser);
             ParserProtector(ParserProtector const & other_);
             ~ParserProtector();
         };
@@ -518,6 +518,22 @@ namespace senf {
         SENF_PARSER_FINALIZE(VoidPacketParser);
     };
 
+
+    template <class Parser, typename ValueType, PacketParserBase::size_type FixedBytes>
+    struct ValueParserBase : public PacketParserBase
+    {
+        typedef ValueParserBase<Parser, ValueType, FixedBytes> Base;
+
+        static size_type const fixed_bytes = FixedBytes;
+        typedef ValueType value_type;
+
+        ValueParserBase(data_iterator i, state_type s);
+
+        operator value_type () const;
+        byte & operator[](size_type index);
+        Parser const & operator= (value_type const & other);
+    };
+
 }
 
 ///////////////////////////////hh.e////////////////////////////////////////