Parse signed bitfield with up to 32bit's. More...
#include <senf/Packets/IntParser.hh>
Public Types | |
typedef boost::int32_t | value_type |
Public Types inherited from senf::PacketParserBase | |
typedef detail::packet::iterator | data_iterator |
Raw data iterator type. More... | |
typedef detail::packet::size_type | size_type |
Unsigned integral type. More... | |
typedef detail::packet::difference_type | difference_type |
Signed integral type. More... | |
typedef detail::packet::byte | byte |
Unsigned 8bit value, the raw value type. More... | |
typedef PacketData * | state_type |
Type of the 'state' parameter. More... | |
typedef PacketParserBase | parser_base_type |
Base type of the next parser. More... | |
Public Member Functions | |
IntFieldParser (data_iterator i, state_type s) | |
value_type | value () const |
void | value (value_type v) |
IntFieldParser const & | operator= (value_type other) |
Public Member Functions inherited from senf::PacketParserBase | |
data_iterator | i () const |
Return beginning of data to parse. More... | |
data_iterator | i (size_type offset) const |
Return iterator offset bytes from the start. More... | |
state_type | state () const |
Return state of this parser. More... | |
PacketData & | data () const |
Access the packets raw data container. More... | |
void | init () const |
Default implementation. More... | |
Static Public Attributes | |
static size_type const | start_bit = Start |
static size_type const | end_bit = End |
static size_type const | fixed_bytes = (End-1)/8+1 |
static value_type const | max_value = boost::low_bits_mask_t<End-Start-1>::sig_bits |
static value_type const | min_value = - max_value - 1 |
Related Functions | |
(Note that these are not member functions.) | |
template<unsigned Start, unsigned End> | |
std::ostream & | operator<< (std::ostream &os, IntFieldParser< Start, End > const &i) |
Write parsed value to stream. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from senf::PacketParserBase | |
ParserProtector | protect () const |
PacketParserBase (data_iterator i, state_type s) | |
Standard constructor. More... | |
PacketParserBase (data_iterator i, state_type s, size_type size) | |
Size checking constructor. More... | |
bool | check (size_type size) const |
Check size of data container. More... | |
void | validate (size_type size) const |
Validate size of data container. More... | |
template<class Parser > | |
Parser | parse (data_iterator i) const |
Create sub-parser. More... | |
template<class Parser , class Arg > | |
Parser | parse (Arg const &arg, data_iterator i) const |
Create sub-parser. More... | |
template<class Parser > | |
Parser | parse (size_type n) const |
Create sub-parser. More... | |
template<class Parser , class Arg > | |
Parser | parse (Arg const &arg, size_type n) const |
Create sub-parser. More... | |
void | defaultInit () const |
Default implementation. More... | |
Packet | packet () const |
Get packet this parser is parsing from. More... | |
void | resize (size_type oldSize, size_type newSize) |
Resize data container. More... | |
Parse signed bitfield with up to 32bit's.
This parser will parse a bitfield beginning at the bit Start and ending before End. Bits are numbered most significant bit first as this is the customary numbering used when defining packet data structures. Start and End can be arbitrary as long as the field is between 1 and 32 bits in size. In other words, IntFieldParser<53,81>
is a valid 30 bit field.
When defining a compound parser with several bit fields, you need to take care of the fact, that several integer field parsers will interpret the same data bytes (but not the same bits). It is customary for several integer field parsers to start at the same byte offset with ever increasing bit offsets.
Definition at line 458 of file IntParser.hh.
typedef boost::int32_t senf::IntFieldParser< Start, End >::value_type |
Definition at line 466 of file IntParser.hh.
|
inline |
Definition at line 462 of file IntParser.hh.
|
inline |
Definition at line 479 of file IntParser.hh.
|
inline |
Definition at line 473 of file IntParser.hh.
|
inline |
Definition at line 478 of file IntParser.hh.
|
related |
Write parsed value to stream.
Definition at line 489 of file IntParser.hh.
|
static |
Definition at line 468 of file IntParser.hh.
|
static |
Definition at line 469 of file IntParser.hh.
|
static |
Definition at line 470 of file IntParser.hh.
|
static |
Definition at line 471 of file IntParser.hh.
|
static |
Definition at line 467 of file IntParser.hh.