Packets: Fix stupid comment bug
[senf.git] / Packets / PacketParser.hh
index c85ff2f..9be6b29 100644 (file)
@@ -328,11 +328,22 @@ namespace senf {
                                              beginning at \a i. Automatically passes \a state() to
                                              the new parser. */
 
+        template <class Parser, class Arg> Parser parse(Arg const & arg, data_iterator i) const;
+                                        ///< Create sub-parser
+                                        /**< This is like parse(data_iterator), however it passes
+                                             the extra argument \a arg to the \a Parser
+                                             constructor. */
+
         template <class Parser> Parser parse(size_type n) const; ///< Create sub-parser
                                         /**< Creates a new instance of \a Parser to parse data
                                          * beginning at i()<tt> + </tt>\a n. Automatically passes \a
                                              state() to the new parser. */
 
+        template <class Parser, class Arg> Parser parse(Arg const & arg, size_type n) const;
+                                        ///< Create sub-parser
+                                        /**< This is like parse(size_type), however it passes the
+                                             extra argument \a arg to the \a Parser constructor. */
+
         void defaultInit() const;       ///< Default implementation
                                         /**< This is just an empty default
                                              implementation. Re-implement this member in your own
@@ -370,6 +381,7 @@ namespace senf {
     PacketParserBase::size_type bytes(Parser p);
     
     namespace detail { template <class Parser> class ParserInitBytes; }
+    namespace detail { template <class Parser> class ParserIsFixed; }
 
     /** \brief Return number of bytes to allocate to new object of given type
 
@@ -390,6 +402,24 @@ namespace senf {
     struct init_bytes : public detail::ParserInitBytes<Parser>
     {};
 
+    /** \brief Test, whether a parser is a fixed-size parser
+
+        This meta-function is called like
+        \code
+            senf::is_fixed<SomeParser>::value
+        \endcode
+
+        This expression evaluates to a compile-time constant boolean expression which is \c true, if
+        \a SomeParser is a fixed size parser, \c false otherwise
+
+        \param[in] Parser The Parser to test
+        \returns \c true, if \a Parser is fixed size, \c false otherwise
+        \ingroup packetparser
+     */
+    template <class Parser>
+    struct is_fixed : public detail::ParserIsFixed<Parser>
+    {};
+
 #   ifndef DOXYGEN
     template <class Parser>
     typename boost::enable_if<