prefix_ bool senf::Packet::is()
const
{
- return valid() && ptr()->is<typename OtherPacket::type>();
+ // ensure that the template class is included in the corresponding object file when linking:
+ { static typename PacketInterpreter<typename OtherPacket::type>::factory_t _ (
+ PacketInterpreter<typename OtherPacket::type>::factory()); (void) _;}
+ return valid() && typeId() == typeIdValue<OtherPacket>();
}
template <class OtherPacket>
PacketInterpreterBase::ptr p (Packet::ptr()->next());
if (p) return Packet(p);
PacketInterpreterBase::optional_range r (type::nextPacketRange(*this));
- return (r && ! r->empty()) ? getNext(r) : Packet();
+ return (r && ! r->empty()) ? Packet(getNext(r)) : Packet();
}
// private members