X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FPacket.hh;h=ab614194231351ec1b590a4239602faf99968b80;hb=refs%2Fheads%2Fmaster;hp=4e6147f0d75f007cac2b2f37389eed10736f2f76;hpb=ab7ff164ab5ae711ec09ce2b24228510f1ffdcff;p=senf.git diff --git a/senf/Packets/Packet.hh b/senf/Packets/Packet.hh index 4e6147f..ab61419 100644 --- a/senf/Packets/Packet.hh +++ b/senf/Packets/Packet.hh @@ -518,10 +518,11 @@ namespace senf { PacketInterpreterBase::ptr const & ptr() const; - private: - Packet getNext() const; + PacketInterpreterBase::ptr parseNextAs(factory_t factory, PacketInterpreterBase::optional_range const & range) const; + PacketInterpreterBase::ptr getNext(PacketInterpreterBase::optional_range const & range) const; Packet getLast() const; + private: PacketInterpreterBase::ptr packet_; template @@ -753,7 +754,7 @@ namespace senf { Parser p_; }; - ParserProxy operator->() const; ///< Access packet fields + ParserProxy operator->() const; ///< Access packet fields /**< This operator allows to access the parsed fields of the packet using the notation packet->field(). The fields of the packet are specified by the PacketType's @@ -772,7 +773,13 @@ namespace senf { itself, only it's members. \see \ref packetparser for the %parser interface */ - protected: +#ifndef DOXYGEN + using Packet::next; + + Packet next(NoThrow_t) const; + template + OtherPacket next(NoThrow_t) const; +#endif private: typedef PacketInterpreter interpreter; @@ -783,6 +790,7 @@ namespace senf { friend class Packet; friend class PacketInterpreter; + template friend class ConcretePacket; }; /** \brief Generic parser copying