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 <class PacketType>
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 <tt>packet->field()</tt>. The
fields of the packet are specified by the PacketType's
itself, only it's members.
\see \ref packetparser for the %parser interface */
- protected:
+#ifndef DOXYGEN
+ using Packet::next;
+
+ Packet next(NoThrow_t) const;
+ template <class OtherPacket>
+ OtherPacket next(NoThrow_t) const;
+#endif
private:
typedef PacketInterpreter<PacketType> interpreter;
friend class Packet;
friend class PacketInterpreter<PacketType>;
+ template<class PType> friend class ConcretePacket;
};
/** \brief Generic parser copying