X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FPacket.cci;h=3bd0522dbe0e490c556d26ec94275a8af06711e8;hb=7ee689fe38d66aa3a0004d55e8708750d35adc0b;hp=9773af8826788ff4ac35acf2182785aba86b75d1;hpb=a1c37005ec4c281f6a76c07070a943cd1e36b6af;p=senf.git diff --git a/senf/Packets/Packet.cci b/senf/Packets/Packet.cci index 9773af8..3bd0522 100644 --- a/senf/Packets/Packet.cci +++ b/senf/Packets/Packet.cci @@ -27,18 +27,18 @@ #include #define prefix_ inline -///////////////////////////////cci.p/////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::Packet // protected members -prefix_ senf::Packet::Packet(PacketInterpreterBase::ptr packet) +prefix_ senf::Packet::Packet(PacketInterpreterBase::ptr const & packet) : packet_(packet) {} -prefix_ senf::PacketInterpreterBase::ptr senf::Packet::ptr() +prefix_ senf::PacketInterpreterBase::ptr const & senf::Packet::ptr() const { SENF_ASSERT(packet_, "Invalid operation (dereferencing) on in-valid() Packet"); @@ -64,7 +64,9 @@ prefix_ senf::Packet senf::Packet::next(NoThrow_t) const { PacketInterpreterBase::ptr p (ptr()->next()); - return !p && ptr()->nextPacketRange() ? checkNext() : Packet(p); + if (p) return Packet(p); + PacketInterpreterBase::optional_range r (ptr()->nextPacketRange()); + return (r && ! r->empty()) ? getNext() : Packet(); } prefix_ senf::Packet senf::Packet::next() @@ -99,7 +101,7 @@ prefix_ senf::Packet senf::Packet::last() const { Packet p (ptr()->last()); - return p.next(nothrow) ? checkLast() : p; + return p.next(nothrow) ? getLast() : p; } prefix_ senf::Packet senf::Packet::parseNextAs(factory_t factory) @@ -128,7 +130,6 @@ prefix_ senf::Packet::size_type senf::Packet::size() return data().size(); } - // Other methods prefix_ bool senf::Packet::operator==(Packet const & other) @@ -152,13 +153,6 @@ prefix_ void senf::Packet::finalizeAll() ptr()->finalizeTo(last().ptr()); } -prefix_ void senf::Packet::dump(std::ostream & os) - const -{ - last(); // Make sure the packet is complete - ptr()->dump(os); -} - prefix_ senf::TypeIdValue senf::Packet::typeId() const { @@ -189,6 +183,23 @@ prefix_ bool senf::Packet::valid() return *this; } +prefix_ bool senf::Packet::is_shared() + const +{ + return ptr()->is_shared() || (ptr()->impl().refcount() > 1); +} + +prefix_ void senf::Packet::reparse() + const +{ + return ptr()->reparse(); +} + +prefix_ void senf::Packet::clearAnnotations() +{ + return ptr()->clearAnnotations(); +} + template prefix_ Parser senf::operator<<(Parser target, ConcretePacket const & packet) { @@ -196,7 +207,7 @@ prefix_ Parser senf::operator<<(Parser target, ConcretePacket const return target; } -///////////////////////////////cci.e/////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_