// 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_;
}
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()
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)