Packets: Extend finalize() API
[senf.git] / Packets / Packet.cti
index e16f88e..fac31c0 100644 (file)
@@ -128,6 +128,13 @@ prefix_ OtherPacket senf::Packet::first()
     return first().as<OtherPacket>();
 }
 
+template <class Other>
+prefix_ void senf::Packet::finalizeTo()
+{
+    Packet p (find<Other>(nothrow));
+    ptr()->finalizeTo(p ? p.ptr() : last().ptr());
+}
+
 ///////////////////////////////////////////////////////////////////////////
 // senf::ConcretePacket<PacketType>
 
@@ -174,6 +181,8 @@ senf::ConcretePacket<PacketType>::create(size_type size, senf::NoInit_t)
     return ConcretePacket(interpreter::create(size,senf::noinit));
 }
 
+#ifndef DOXYGEN
+
 template <class PacketType>
 template <class ForwardReadableRange>
 prefix_ senf::ConcretePacket<PacketType> senf::ConcretePacket<PacketType>::
@@ -183,6 +192,8 @@ create(ForwardReadableRange const & range,
     return ConcretePacket(interpreter::create(range));
 }
 
+#endif
+
 // Create packet as new packet after a given packet
 
 template <class PacketType>
@@ -213,6 +224,8 @@ senf::ConcretePacket<PacketType>::createAfter(Packet packet, size_type size, sen
     return ConcretePacket(interpreter::createAfter(packet.ptr(), size, senf::noinit));
 }
 
+#ifndef DOXYGEN
+
 template <class PacketType>
 template <class ForwardReadableRange>
 prefix_ senf::ConcretePacket<PacketType> senf::ConcretePacket<PacketType>::
@@ -222,6 +235,8 @@ createAfter(Packet packet, ForwardReadableRange const & range,
     return ConcretePacket(interpreter::createAfter(packet.ptr(), range));
 }
 
+#endif
+
 // Create packet as new packet (header) before a given packet
 
 template <class PacketType>