return first().as<OtherPacket>();
}
+template <class Other>
+prefix_ void senf::Packet::finalizeTo()
+{
+ Packet p (find<Other>(nothrow));
+ ptr()->finalizeTo(p ? p.ptr() : last().ptr());
+}
+
+template <class Annotation>
+prefix_ Annotation & senf::Packet::annotation()
+{
+ return ptr()->annotation<Annotation>();
+}
+
///////////////////////////////////////////////////////////////////////////
// senf::ConcretePacket<PacketType>
return ConcretePacket(interpreter::create(range));
}
+#endif
+
// Create packet as new packet after a given packet
template <class PacketType>
return ConcretePacket(interpreter::createAfter(packet.ptr()));
}
-#endif
-
template <class PacketType>
prefix_ senf::ConcretePacket<PacketType>
senf::ConcretePacket<PacketType>::createAfter(Packet packet, senf::NoInit_t)
return ConcretePacket(interpreter::createAfter(packet.ptr(), size, senf::noinit));
}
+#ifndef DOXYGEN
+
template <class PacketType>
template <class ForwardReadableRange>
prefix_ senf::ConcretePacket<PacketType> senf::ConcretePacket<PacketType>::
return ConcretePacket(interpreter::createAfter(packet.ptr(), range));
}
+#endif
+
// Create packet as new packet (header) before a given packet
template <class PacketType>