API however you will need to instantiate a container wrapper for the list. See \ref
packet_usage_fields_collection.
- \see
- \ref How to access \ref packet_usage_fields_collection
+ \see
+ How to access \ref packet_usage_fields_collection \n
SENF_PARSER_LIST() macro used to define list fields \n
ListParser_Container list container wrapper API \n
ExampleListPolicy
value_type front() const;
value_type back() const;
- template <class Value> void push_back (Value value, size_type n=1) const;
- void push_back_space (size_type n=1) const;
- template <class Value> void push_front (Value value, size_type n=1) const;
- void push_front_space (size_type n=1) const;
+ template <class Value> void push_back (Value const & value, size_type n=1) const;
+ value_type push_back_space (size_type n=1) const;
+ template <class Value> void push_front (Value const & value, size_type n=1) const;
+ value_type push_front_space (size_type n=1) const;
void resize (size_type n) const;
template <class Value> void resize (size_type n, Value value) const;
///@{
// All these operations can be quite inefficient depending on the list type
- void shift(iterator pos, size_type n=1);
+ value_type shift(iterator pos, size_type n=1);
template <class Value>
void insert(iterator pos, Value const & t);
template <class Value>
void erase(iterator f, iterator l);
void clear();
- template <class Value> void push_back (Value value, size_type n=1);
- void push_back_space (size_type n=1);
- template <class Value> void push_front (Value value, size_type n=1);
- void push_front_space (size_type n=1);
- void resize (size_type n);
+ template <class Value> void push_back (Value const & value, size_type n=1);
+ value_type push_back_space (size_type n=1);
+ template <class Value> void push_front (Value const & value, size_type n=1);
+ value_type push_front_space (size_type n=1);
+ void resize (size_type n);
template <class Value> void resize (size_type n, Value value);
///@}
// Define the list
SENF_PARSER_LIST ( list, list_size_, EltParser );
\endcode
-
+
Here \c EltParser can be an arbitrary parser and need not have a fixed size.
\warning Realize, that the \a size field is controlled by the list parser. This field
<tr><td>\c transform(\a transform, \c bytes(\a size))</td><td>The \a transform is applied to
the \a size value. The value is then interpreted containing the list size in bytes not
- number of elements</td>
+ number of elements</td>
</table>
The optional \a transform is a class with the following layout
static value_type get(other_type v);
static other_type set(value_type v);
};
- \endcode
+ \endcode
\c other_type is \a size ::\c value_type, the type of the value returned by the \a size
field, whereas the \c value_type typedef is the arbitrary return type of the transform.
\param[in] size name of field giving the list size
\param[in] elt_type list element type
- \see
+ \see
How to use \ref packet_usage_fields_collection \n
senf::ListParser the list parser API for list field access
senf::ListParser_Container the list parser container API for list field access