Add 'unflatten' to doxygen/dot processing
[senf.git] / Packets / ListParser.ct
index 7e8f3f1..19fccdb 100644 (file)
@@ -1,8 +1,8 @@
 // $Id$
 //
-// Copyright (C) 2007 
-// Fraunhofer Institute for Open Communication Systems (FOKUS) 
-// Competence Center NETwork research (NET), St. Augustin, GERMANY 
+// Copyright (C) 2007
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
 //     Stefan Bund <g0dil@berlios.de>
 //
 // This program is free software; you can redistribute it and/or modify
@@ -26,6 +26,7 @@
 #include "ListParser.ih"
 
 // Custom includes
+#include "../Utils/senfassert.hh"
 
 #define prefix_
 ///////////////////////////////ct.p////////////////////////////////////////
@@ -38,8 +39,9 @@ prefix_ void senf::ListParser<ListPolicy>::init()
     const
 {
     ListPolicy::init(i(),state());
-    iterator i (begin());
-    iterator const e (end());
+    container c (*this);
+    typename container::iterator i (c.begin());
+    typename container::iterator const e (c.end());
     for(; i!=e; ++i)
         i->init();
 }
@@ -49,9 +51,10 @@ prefix_ typename senf::ListParser<ListPolicy>::value_type
 senf::ListParser<ListPolicy>::back()
     const
 {
-    BOOST_ASSERT( ! empty() );
-    iterator i (begin()), j;
-    iterator const e (end());
+    SENF_ASSERT( ! empty() );
+    container c(*this);
+    typename container::iterator i (c.begin()), j;
+    typename container::iterator const e (c.end());
     for (j=i; i!=e; j=i, ++i) ;
     return *j;
 }
@@ -64,7 +67,7 @@ prefix_ typename senf::ListParser_Container<ListPolicy>::value_type
 senf::ListParser_Container<ListPolicy>::back()
     const
 {
-    BOOST_ASSERT( ! empty() );
+    SENF_ASSERT( ! empty() );
     iterator i (begin()), j;
     iterator const e (end());
     for (j=i; i!=e; j=i, ++i) ;
@@ -74,13 +77,12 @@ senf::ListParser_Container<ListPolicy>::back()
 template <class ListPolicy>
 prefix_ void senf::ListParser_Container<ListPolicy>::shift(iterator pos, size_type n)
 {
-    ListPolicy::update(i(),state());
+    ListPolicy::update(*this);
     safe_data_iterator sp (data(),pos.raw());
-    safe_data_iterator si (data(),i());
     for (; n>0; --n) {
         data().insert(sp,senf::init_bytes<value_type>::value,0);
         value_type(sp,state()).init();
-        ListPolicy::insert(si,state(),sp);
+        ListPolicy::insert(*this,sp);
     }
 }
 
@@ -90,14 +92,13 @@ prefix_ void senf::ListParser_Container<ListPolicy>::insert(iterator pos,
                                                             size_type n,
                                                             Value const & t)
 {
-    ListPolicy::update(i(),state());
+    ListPolicy::update(*this);
     safe_data_iterator sp (data(),pos.raw());
-    safe_data_iterator si (data(),i());
     for (; n>0; --n) {
         data().insert(sp,senf::init_bytes<value_type>::value,0);
         value_type(sp,state()).init();
         value_type(sp,state()) << t;
-        ListPolicy::insert(si,state(),sp);
+        ListPolicy::insert(*this,sp);
     }
 }
 
@@ -108,14 +109,13 @@ prefix_ void senf::ListParser_Container<ListPolicy>::
 insert(iterator pos, ForwardIterator f, ForwardIterator l,
        typename boost::disable_if< boost::is_convertible<ForwardIterator,size_type> >::type *)
 {
-    ListPolicy::update(i(),state());
+    ListPolicy::update(*this);
     safe_data_iterator sp (data(),pos.raw());
-    safe_data_iterator si (data(),i());
     for (; f!=l; ++f) {
         data().insert(sp,senf::init_bytes<value_type>::value,0);
         value_type(sp,state()).init();
         value_type(sp,state()) << *f;
-        ListPolicy::insert(si,state(),sp);
+        ListPolicy::insert(*this,sp);
         sp += senf::bytes(value_type(sp,state()));
     }
 }
@@ -131,11 +131,10 @@ template <class ListPolicy>
 prefix_ void senf::ListParser_Container<ListPolicy>::erase(iterator pos,
                                                            size_type n)
 {
-    ListPolicy::update(i(),state());
-    safe_data_iterator si (data(),i());
+    ListPolicy::update(*this);
     safe_data_iterator sp (data(),pos.raw());
     for (; n>0; --n) {
-        ListPolicy::erase(si,state(),sp);
+        ListPolicy::erase(*this,sp);
         data().erase(sp,boost::next(sp,senf::bytes(value_type(sp,state()))));
     }
 }