X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FPacket.cci;h=e5f9f4ded3d5036307414861ae5abc602e2e47be;hb=961cf85a6abf2b5f0a7958bbfcd8f72e7b32721b;hp=862c04cd29a9e6fbccf685fa719e9dbaa2a62e87;hpb=26610f603ebdd465307b9621f532c1fe19fd5571;p=senf.git diff --git a/senf/Packets/Packet.cci b/senf/Packets/Packet.cci index 862c04c..e5f9f4d 100644 --- a/senf/Packets/Packet.cci +++ b/senf/Packets/Packet.cci @@ -34,14 +34,14 @@ // protected members -prefix_ senf::Packet::Packet(PacketInterpreterBase::ptr packet) +prefix_ senf::Packet::Packet(PacketInterpreterBase::ptr const & packet) : packet_(packet) {} -prefix_ senf::PacketInterpreterBase::ptr senf::Packet::ptr() +prefix_ senf::PacketInterpreterBase::ptr const & senf::Packet::ptr() const { - SENF_ASSERT(packet_); + SENF_ASSERT(packet_, "Invalid operation (dereferencing) on in-valid() Packet"); return packet_; } @@ -64,7 +64,9 @@ prefix_ senf::Packet senf::Packet::next(NoThrow_t) const { PacketInterpreterBase::ptr p (ptr()->next()); - return !p && ptr()->nextPacketRange() ? checkNext() : Packet(p); + if (p) return Packet(p); + PacketInterpreterBase::optional_range r (ptr()->nextPacketRange()); + return (r && ! r->empty()) ? getNext() : Packet(); } prefix_ senf::Packet senf::Packet::next() @@ -99,7 +101,7 @@ prefix_ senf::Packet senf::Packet::last() const { Packet p (ptr()->last()); - return p.next(nothrow) ? checkLast() : p; + return p.next(nothrow) ? getLast() : p; } prefix_ senf::Packet senf::Packet::parseNextAs(factory_t factory)