OtherPacket. The new packet is added to the chain after
\c this.
\returns new packet instance sharing the same data and
- placed after \c this packet in the chain. */
+ placed after \c this packet in the chain.
+ \throws InvalidPacketChainException if no next
+ packet header is allowed (viz. nextPacketRange() of the the current
+ PacketType returns no_range() ) */
Packet parseNextAs(factory_t factory) const;
///< Interpret payload of \c this as \a factory type packet
/**< parseNextAs() will throw away the packet chain after
factory. The new packet is added to the chain after
\c this.
\returns new packet instance sharing the same data and
- placed after \c this packet in the chain. */
+ placed after \c this packet in the chain.
+ \throws InvalidPacketChainException if no next
+ packet header is allowed (viz. nextPacketRange() of the the current
+ PacketType returns no_range() ) */
template <class OtherPacket> bool is() const;
///< Check, whether \c this packet is of the given type
friend class PacketInterpreter<PacketType>;
};
+ /** \brief Generic parser copying
+
+ This operator allows to copy the value of identical parsers. This operation does \e not
+ depend on the parsers detailed implementation, it will just replace the data bytes of the
+ target parser with those from the source packet.
+ */
+ template <class PacketType, class Parser>
+ Parser operator<<(Parser target, ConcretePacket<PacketType> const & packet);
+
///@}
}