X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FListParser.ct;h=19fccdbc3abf1ebde37e980e50cf9927e746d41a;hb=a1fdb7bb122f0b05be809a922d4b7ef5e125fa67;hp=609048e55a42fdd90141942fa02e5b69e5b8b888;hpb=51044eb18f034c1a059ffe2fb109a422c1cbe251;p=senf.git diff --git a/Packets/ListParser.ct b/Packets/ListParser.ct index 609048e..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 @@ -39,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(); } @@ -51,8 +52,9 @@ senf::ListParser::back() const { SENF_ASSERT( ! empty() ); - iterator i (begin()), j; - iterator const e (end()); + 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; } @@ -75,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); } } @@ -91,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); } } @@ -109,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())); } } @@ -132,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())))); } }