Socket/Protocols/Raw: EUI64 documentation
[senf.git] / Packets / Packet.cci
index f02dabd..001f69c 100644 (file)
@@ -108,7 +108,7 @@ prefix_ senf::Packet senf::Packet::parseNextAs(factory_t factory)
     return Packet(ptr()->parseNextAs(factory));
 }
 
-prefix_ senf::Packet senf::Packet::append(Packet packet)
+prefix_ senf::Packet senf::Packet::append(Packet const & packet)
     const
 {
     return Packet(ptr()->append(packet.ptr()));
@@ -131,17 +131,25 @@ prefix_ senf::Packet::size_type senf::Packet::size()
 
 // Other methods
 
-prefix_ bool senf::Packet::operator==(Packet other)
+prefix_ bool senf::Packet::operator==(Packet const & other)
     const
 {
     return ptr() == other.ptr();
 }
 
-prefix_ void senf::Packet::finalize()
-    const
+prefix_ void senf::Packet::finalizeThis()
 {
-    last(); // Make sure the packet is complete
-    ptr()->finalize();
+    ptr()->finalizeThis();
+}
+
+prefix_ void senf::Packet::finalizeTo(Packet const & other)
+{
+    ptr()->finalizeTo(other.ptr());
+}
+
+prefix_ void senf::Packet::finalizeAll()
+{
+    ptr()->finalizeTo(last().ptr());
 }
 
 prefix_ void senf::Packet::dump(std::ostream & os)
@@ -169,6 +177,19 @@ prefix_ bool senf::Packet::boolean_test()
     return packet_ && packet_->valid();
 }
 
+prefix_ bool senf::Packet::valid()
+    const
+{
+    return *this;
+}
+
+template <class PacketType, class Parser>
+prefix_ Parser senf::operator<<(Parser target, ConcretePacket<PacketType> const & packet)
+{
+    target << packet.parser();
+    return target;
+}
+
 ///////////////////////////////cci.e///////////////////////////////////////
 #undef prefix_