Fix documentation build under maverick (doxygen 1.7.1)
[senf.git] / senf / Packets / PacketParser.cci
index 510c2a6..ee18f42 100644 (file)
@@ -28,9 +28,9 @@
 #include "PacketData.hh"
 
 #define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // senf::PacketParserBase
 
 // public members
@@ -49,15 +49,36 @@ prefix_ senf::PacketParserBase::data_iterator senf::PacketParserBase::end()
     return data_->end();
 }
 
+prefix_ senf::PacketParserBase::ParserProtector::ParserProtector(PacketParserBase const * p)
+    : safe_i_( *p), parser_(p)
+{}
+
+prefix_ senf::PacketParserBase::ParserProtector::ParserProtector(ParserProtector const & other_)
+    : safe_i_( *other_.parser_), parser_(other_.parser_)
+{
+    other_.parser_ = 0;
+}
+
+prefix_ senf::PacketParserBase::ParserProtector::~ParserProtector()
+{
+    if (parser_) const_cast<PacketParserBase *>(parser_)->i_ = safe_i_;
+}
+
 // protected members
 
+prefix_ senf::PacketParserBase::ParserProtector senf::PacketParserBase::protect()
+    const
+{
+    return ParserProtector(this);
+}
+
 prefix_ bool senf::PacketParserBase::check(size_type size)
     const
 {
     return size <= size_type(std::distance(i(),end()));
 }
 
-prefix_ void senf::PacketParserBase::validate(size_type size) 
+prefix_ void senf::PacketParserBase::validate(size_type size)
    const
 {
     if (! check(size))
@@ -68,7 +89,7 @@ prefix_ senf::PacketParserBase::PacketParserBase(data_iterator i, state_type s)
     : i_ (i), data_ (s)
 {}
 
-prefix_ senf::PacketParserBase::PacketParserBase(data_iterator i, state_type s, 
+prefix_ senf::PacketParserBase::PacketParserBase(data_iterator i, state_type s,
                                                  size_type size)
     : i_ (i), data_ (s)
 {
@@ -113,7 +134,7 @@ prefix_ senf::Packet senf::PacketParserBase::packet()
     return Packet(PacketInterpreterBase::ptr(static_cast<PacketInterpreterBase*>(&data())));
 }
 
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 #undef prefix_
 
 \f