X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FListParser.ct;h=19fccdbc3abf1ebde37e980e50cf9927e746d41a;hb=fd3a0e8ac95d1158e9ea661ddf9187b67c70169f;hp=7e8f3f1bd6a1b4bf3b04270c7b9235c8fd0d1186;hpb=f73fa16ed5abdce272ac77f8b8b9ef2b9922c266;p=senf.git diff --git a/Packets/ListParser.ct b/Packets/ListParser.ct index 7e8f3f1..19fccdb 100644 --- a/Packets/ListParser.ct +++ b/Packets/ListParser.ct @@ -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 // // 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::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::value_type senf::ListParser::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::value_type senf::ListParser_Container::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::back() template prefix_ void senf::ListParser_Container::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,0); value_type(sp,state()).init(); - ListPolicy::insert(si,state(),sp); + ListPolicy::insert(*this,sp); } } @@ -90,14 +92,13 @@ prefix_ void senf::ListParser_Container::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,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:: insert(iterator pos, ForwardIterator f, ForwardIterator l, typename boost::disable_if< boost::is_convertible >::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,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 prefix_ void senf::ListParser_Container::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())))); } }