X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FPacket.cti;h=902681b3deea940c84a1a79972c7d86c7f8723ce;hb=78a6e233083efa63a9cd0684a92abc64202a9ee7;hp=ecb8baa4bb0f8bafcfb0e17a0ffab67e97e052a2;hpb=a0b6f53e5c464c6b84fed30a67fcce32da81012d;p=senf.git diff --git a/senf/Packets/Packet.cti b/senf/Packets/Packet.cti index ecb8baa..902681b 100644 --- a/senf/Packets/Packet.cti +++ b/senf/Packets/Packet.cti @@ -67,6 +67,14 @@ prefix_ OtherPacket senf::Packet::as() } template +prefix_ OtherPacket senf::Packet::as(NoThrow_t) + const +{ + SENF_ASSERT( is(), "Bad cast, called packet::as(nothrow) with wrong PacketType"); + return OtherPacket(ptr()->as()); +} + +template prefix_ OtherPacket senf::Packet::next() const { @@ -78,7 +86,8 @@ prefix_ OtherPacket senf::Packet::next(NoThrow_t) const { Packet p (next(nothrow)); - return p && p.is() ? p.as() : OtherPacket(); + return p && p.is() ? + OtherPacket(p.ptr()->as()) : OtherPacket(); } template @@ -102,7 +111,8 @@ prefix_ OtherPacket senf::Packet::prev(NoThrow_t) const { Packet p (prev(nothrow)); - return p && p.is() ? p.as() : OtherPacket(); + return p && p.is() ? + OtherPacket(p.ptr()->as()) : OtherPacket(); } template @@ -317,11 +327,10 @@ prefix_ senf::ConcretePacket::ConcretePacket(typename interpreter::p {} template -prefix_ typename senf::ConcretePacket::interpreter::ptr -senf::ConcretePacket::ptr() +prefix_ typename senf::ConcretePacket::interpreter * senf::ConcretePacket::ptr() const { - return boost::static_pointer_cast< PacketInterpreter >(Packet::ptr()); + return static_cast< PacketInterpreter *>( Packet::ptr().get()); } ///////////////////////////////cti.e///////////////////////////////////////