X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FPacketImpl.cci;h=e3c532eb00d4a6938b0dce7877c69f1ee5bb2946;hb=92f8630b75f3ef50e73c48cde58645dcd1534e27;hp=1e0cad02d909e03366fe05e46a3c2ccf3660846d;hpb=51b10105e78a9ffee631223f50e63aa28bb5d2b4;p=senf.git diff --git a/Packets/PacketImpl.cci b/Packets/PacketImpl.cci index 1e0cad0..e3c532e 100644 --- a/Packets/PacketImpl.cci +++ b/Packets/PacketImpl.cci @@ -175,6 +175,33 @@ prefix_ void senf::detail::PacketImpl::erase(PacketData * self, iterator first, updateIterators(self,ix,-delta); } +prefix_ void senf::detail::PacketImpl::reserve(size_type n) +{ + data_.reserve(n); +} + +prefix_ senf::detail::PacketImpl::size_type senf::detail::PacketImpl::capacity() + const +{ + return data_.capacity(); +} + +// This function has a problem being inlined. Somehow, often when calling this, the size of the +// resulting inlined code would be huge? + +prefix_ void senf::detail::PacketImpl::release(refcount_t 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 + if (refcount_ == n) + delete this; + else + refcount_ -= n; +} + + /////////////////////////////////////////////////////////////////////////// // senf::detail::PacketImpl::Guard