senf::ListParser< ListPolicy > Class Template Reference
[Collection parsers]

Arbitrary sequential element collection. More...

#include <senf/Packets/ListParser.hh>

Inheritance diagram for senf::ListParser< ListPolicy >:
Inheritance graph
[legend]

List of all members.


Detailed Description

template<class ListPolicy>
class senf::ListParser< ListPolicy >

Arbitrary sequential element collection.

A List is a sequential collection of elements. The element type is given as an arbitrary parser. The list is more flexible than a vector: It is not limited to fixed-size elements and it might not have direct access to the size of the collection.

The cost is however, that a List is only a model of an STL forward sequence. The parser provides a reduced interface to this sequence, the container wrapper provides the complete interface.

ListParser makes use of a policy template argument, ListPolicy, to customize the way the list is laid out. This policy is given quite some freedom in the list implementation. It is however important, that list elements always follow each other without padding (if padding is needed, it needs to be part of the element parser).

You will normally not instantiate ListParser directly, you will use the SENF_PARSER_LIST() helper macro.

Some basic list access methods are defined as parser members. To access the complete list API however you will need to instantiate a container wrapper for the list. See Collection parsers.

See also:
How to access Collection parsers
SENF_PARSER_LIST() macro used to define list fields
ListParser_Container list container wrapper API
ExampleListPolicy

Definition at line 74 of file ListParser.hh.


Public Types

typedef ListPolicy  policy
typedef ListPolicy::element_type  value_type
typedef ListPolicy::container_type  container

Public Member Functions

  ListParser (data_iterator i, state_type s)
  ListParser (ListPolicy policy, data_iterator i, state_type s)
  Additional policy specific constructor.
size_type  bytes () const
void  init () const
  Default implementation.
size_type  size () const
bool  empty () const
value_type  front () const
value_type  back () 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

Static Public Member Functions

static ListParser get (ListPolicy &p)
static ListParser const &  get (ListPolicy const &p)

Static Public Attributes

static const size_type  init_bytes = ListPolicy::init_bytes

Member Typedef Documentation

template<class ListPolicy>
typedef ListPolicy::container_type senf::ListParser< ListPolicy >::
container

Definition at line 96 of file ListParser.hh.

template<class ListPolicy>
typedef ListPolicy senf::ListParser< ListPolicy >::
policy

Definition at line 79 of file ListParser.hh.

template<class ListPolicy>
typedef ListPolicy::element_type senf::ListParser< ListPolicy >::
value_type

Definition at line 95 of file ListParser.hh.


Constructor & Destructor Documentation

template<class ListPolicy >
senf::ListParser< ListPolicy >::
ListParser ( data_iterator  i,
state_type  s )

Definition at line 38 of file ListParser.cti.

template<class ListPolicy>
senf::ListParser< ListPolicy >::
ListParser ( ListPolicy  policy,
data_iterator  i,
state_type  s )

Additional policy specific constructor.

This constructor may be used, if the policy needs additional parameters.

Definition at line 43 of file ListParser.cti.


Member Function Documentation

template<class ListPolicy >
senf::ListParser< ListPolicy >::value_type senf::ListParser< ListPolicy >::
back ()

Definition at line 51 of file ListParser.ct.

template<class ListPolicy >
senf::PacketParserBase::size_type senf::ListParser< ListPolicy >::
bytes ()

Definition at line 50 of file ListParser.cti.

template<class ListPolicy >
bool senf::ListParser< ListPolicy >::
empty ()

Definition at line 68 of file ListParser.cti.

template<class ListPolicy >
senf::ListParser< ListPolicy >::value_type senf::ListParser< ListPolicy >::
front ()

Definition at line 77 of file ListParser.cti.

template<class ListPolicy>
senf::ListParser< ListPolicy > const & senf::ListParser< ListPolicy >::
get ( ListPolicy const &  p )

Definition at line 147 of file ListParser.cti.

template<class ListPolicy>
senf::ListParser< ListPolicy > & senf::ListParser< ListPolicy >::
get ( ListPolicy &  p )

Definition at line 140 of file ListParser.cti.

template<class ListPolicy >
void senf::ListParser< ListPolicy >::
init ()

Default implementation.

This is just an empty default implementation. Re-implement this member in your own parsers if needed.

Reimplemented from senf::PacketParserBase.

Definition at line 38 of file ListParser.ct.

template<class ListPolicy >
template<class Value >
void senf::ListParser< ListPolicy >::
push_back ( Value const &  value,
size_type  n = 1 )

Definition at line 87 of file ListParser.cti.

template<class ListPolicy >
senf::ListParser< ListPolicy >::value_type senf::ListParser< ListPolicy >::
push_back_space ( size_type  n = 1 )

Definition at line 96 of file ListParser.cti.

template<class ListPolicy >
template<class Value >
void senf::ListParser< ListPolicy >::
push_front ( Value const &  value,
size_type  n = 1 )

Definition at line 105 of file ListParser.cti.

template<class ListPolicy >
senf::ListParser< ListPolicy >::value_type senf::ListParser< ListPolicy >::
push_front_space ( size_type  n = 1 )

Definition at line 114 of file ListParser.cti.

template<class ListPolicy >
template<class Value >
void senf::ListParser< ListPolicy >::
resize ( size_type  n,
Value  value )

Definition at line 131 of file ListParser.cti.

template<class ListPolicy >
void senf::ListParser< ListPolicy >::
resize ( size_type  n )

Definition at line 122 of file ListParser.cti.

template<class ListPolicy >
senf::PacketParserBase::size_type senf::ListParser< ListPolicy >::
size ()

Definition at line 61 of file ListParser.cti.


Member Data Documentation

template<class ListPolicy>
const size_type senf::ListParser< ListPolicy >::init_bytes = ListPolicy::init_bytes
[static]

Definition at line 90 of file ListParser.hh.


The documentation for this class was generated from the following files: