X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FPacketParser.hh;h=5248296b172d1f5cdb8206ef2cb135e6ae6918dc;hb=e57e1ec99a16261d1f436d1ea42f60dda6aae5cc;hp=a00da0d86cdd10dcd423e8f76bcb63b1231cd910;hpb=f73fa16ed5abdce272ac77f8b8b9ef2b9922c266;p=senf.git
diff --git a/Packets/PacketParser.hh b/Packets/PacketParser.hh
index a00da0d..5248296 100644
--- a/Packets/PacketParser.hh
+++ b/Packets/PacketParser.hh
@@ -264,10 +264,23 @@ namespace senf {
here. The size of the interpreted is given by
senf::bytes(parser
instance). */
+
+ data_iterator i(size_type offset) const; ///< Return iterator \a offset bytes from the start
+ /**< The return value is the same as i() + \a
+ offset. However, the parser checks, that the iterator is
+ still within range of the raw data
+ container. Otherwise a TruncatedPacketException is
+ thrown.
+
+ \throws TruncatedPacketException if the raw data
+ container does not hold at least \a offset bytes
+ starting at i(). */
+
state_type state() const; ///< Return state of this parser
/**< The value returned should be interpreted as an opaque
value provided just to be forwarded to other
parsers. */
+
PacketData & data() const; ///< Access the packets raw data container
/**< This member will return the raw data container holding
the data which is parsed by \c this parser. */
@@ -282,6 +295,7 @@ namespace senf {
/**< This is the constructor used by most parsers. The
parameters are just forwarded from the derived classes
constructor parameters. */
+
PacketParserBase(data_iterator i, state_type s, size_type size);
///< Size checking constructor
/**< In addition to the standard constructor, this
@@ -303,6 +317,7 @@ namespace senf {
bool check(size_type size) const; ///< Check size of data container
/**< \returns \c true, if the data container holds at least
\a size beginning at i(), \c false otherwise. */
+
void validate(size_type size) const; ///< Validate size of data container
/**< \throws TruncatedPacketException if the raw data
container does not hold at least \a size bytes
@@ -312,6 +327,7 @@ namespace senf {
/**< Creates a new instance of \a Parser to parse data
beginning at \a i. Automatically passes \a state() to
the new parser. */
+
template Parser parse(size_type n) const; ///< Create sub-parser
/**< Creates a new instance of \a Parser to parse data
* beginning at i() + \a n. Automatically passes \a