X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FPacketImpl.cci;h=c4acd4d581ddbe6a74c14133946b2d75f0ff83e4;hb=e57e1ec99a16261d1f436d1ea42f60dda6aae5cc;hp=f2293a8ecce2b21a1789048f8bef56ec3bfa8f79;hpb=f13c1275e48e97dceb7de7925793a4c69a5aeb61;p=senf.git diff --git a/Packets/PacketImpl.cci b/Packets/PacketImpl.cci index f2293a8..c4acd4d 100644 --- a/Packets/PacketImpl.cci +++ b/Packets/PacketImpl.cci @@ -1,6 +1,8 @@ +// $Id$ +// // Copyright (C) 2007 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) +// 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 @@ -22,6 +24,7 @@ \brief PacketImpl inline non-template implementation */ // Custom includes +#include "../Utils/senfassert.hh" #include "PacketInterpreter.hh" #define prefix_ inline @@ -77,7 +80,7 @@ prefix_ void senf::detail::PacketImpl::add_ref(refcount_t n) prefix_ void senf::detail::PacketImpl::release(refcount_t n) { - BOOST_ASSERT(refcount_ >= n); + SENF_ASSERT(refcount_ >= n); // uah ... we need to be extremely careful here. If refcount_ is n, we want to commit suicide, // however the destructor will remove all PacketInterpreters from the list and will thereby // decrement refcount -> only decrenebt refcount_ when *not* caling delete @@ -148,27 +151,32 @@ prefix_ senf::detail::PacketImpl::size_type senf::detail::PacketImpl::size() prefix_ void senf::detail::PacketImpl::insert(PacketData * self, iterator pos, byte v) { + difference_type ix (std::distance(begin(),pos)); data_.insert(pos,v); - updateIterators(self,pos,1); + updateIterators(self,ix,1); } prefix_ void senf::detail::PacketImpl::insert(PacketData * self, iterator pos, size_type n, byte v) { + difference_type ix (std::distance(begin(),pos)); data_.insert(pos,n,v); - updateIterators(self,pos,n); + updateIterators(self,ix,n); } prefix_ void senf::detail::PacketImpl::erase(PacketData * self, iterator pos) { + difference_type ix (std::distance(begin(),pos)); data_.erase(pos); - updateIterators(self,pos,-1); + updateIterators(self,ix,-1); } prefix_ void senf::detail::PacketImpl::erase(PacketData * self, iterator first, iterator last) { + difference_type ix (std::distance(begin(),first)); + difference_type delta (std::distance(first,last)); data_.erase(first,last); - updateIterators(self,first,-std::distance(first,last)); + updateIterators(self,ix,-delta); } ///////////////////////////////////////////////////////////////////////////