#include <senf/Packets/ListParser.hh>
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.
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 |
typedef ListPolicy::container_type senf::ListParser< ListPolicy >:: | ||||
container | ||||
Definition at line 96 of file ListParser.hh.
typedef ListPolicy senf::ListParser< ListPolicy >:: | ||||
policy | ||||
Definition at line 79 of file ListParser.hh.
typedef ListPolicy::element_type senf::ListParser< ListPolicy >:: | ||||
value_type | ||||
Definition at line 95 of file ListParser.hh.
senf::ListParser< ListPolicy >:: | ||||
ListParser | ( | data_iterator | i, | |
state_type | s | ) | ||
Definition at line 38 of file ListParser.cti.
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.
senf::ListParser< ListPolicy >::value_type senf::ListParser< ListPolicy >:: | ||||
back | () | |||
Definition at line 51 of file ListParser.ct.
senf::PacketParserBase::size_type senf::ListParser< ListPolicy >:: | ||||
bytes | () | |||
Definition at line 50 of file ListParser.cti.
bool senf::ListParser< ListPolicy >:: | ||||
empty | () | |||
Definition at line 68 of file ListParser.cti.
senf::ListParser< ListPolicy >::value_type senf::ListParser< ListPolicy >:: | ||||
front | () | |||
Definition at line 77 of file ListParser.cti.
senf::ListParser< ListPolicy > const & senf::ListParser< ListPolicy >:: | ||||
get | ( | ListPolicy const & | p | ) |
Definition at line 147 of file ListParser.cti.
senf::ListParser< ListPolicy > & senf::ListParser< ListPolicy >:: | ||||
get | ( | ListPolicy & | p | ) |
Definition at line 140 of file ListParser.cti.
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.
void senf::ListParser< ListPolicy >:: | ||||
push_back | ( | Value const & | value, | |
size_type |
n = 1
|
) | ||
Definition at line 87 of file ListParser.cti.
senf::ListParser< ListPolicy >::value_type senf::ListParser< ListPolicy >:: | ||||
push_back_space | ( | size_type |
n = 1
|
) |
Definition at line 96 of file ListParser.cti.
void senf::ListParser< ListPolicy >:: | ||||
push_front | ( | Value const & | value, | |
size_type |
n = 1
|
) | ||
Definition at line 105 of file ListParser.cti.
senf::ListParser< ListPolicy >::value_type senf::ListParser< ListPolicy >:: | ||||
push_front_space | ( | size_type |
n = 1
|
) |
Definition at line 114 of file ListParser.cti.
void senf::ListParser< ListPolicy >:: | ||||
resize | ( | size_type | n, | |
Value | value | ) | ||
Definition at line 131 of file ListParser.cti.
void senf::ListParser< ListPolicy >:: | ||||
resize | ( | size_type | n | ) |
Definition at line 122 of file ListParser.cti.
senf::PacketParserBase::size_type senf::ListParser< ListPolicy >:: | ||||
size | () | |||
Definition at line 61 of file ListParser.cti.
const size_type senf::ListParser< ListPolicy >::init_bytes = ListPolicy::init_bytes | ||||
[static] | ||||
Definition at line 90 of file ListParser.hh.