senf::UIntFieldParser< Start, End > Struct Template Reference
[Integer parsers]

Parse unsigned bitfield with up to 32bit's. More...

#include <senf/Packets/IntParser.hh>

Inheritance diagram for senf::UIntFieldParser< Start, End >:
Inheritance graph
[legend]

List of all members.


Detailed Description

template<unsigned Start, unsigned End>
struct senf::UIntFieldParser< Start, End >

Parse unsigned 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.

See also:
Integer parsers
Implementation note:
The integer field parser is highly optimized. Since the bit positions are compile-time constants, the compiler will create optimized bit-masks to directly access the value. The parser is also optimized to access the minimum number of data bytes necessary.

Definition at line 525 of file IntParser.hh.


Public Types

typedef boost::uint32_t  value_type

Public Member Functions

  UIntFieldParser (data_iterator i, state_type s)
value_type  value () const
void  value (value_type v)
UIntFieldParser const &  operator= (value_type other)

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  min_value = 0u
static value_type const  max_value = boost::low_bits_mask_t<End-Start>::sig_bits

Related Functions

(Note that these are not member functions.)

template<unsigned Start, unsigned End>
std::ostream &  operator<< (std::ostream &os, UIntFieldParser< Start, End > const &i)
  Write parsed value to stream.

Member Typedef Documentation

template<unsigned Start, unsigned End>
typedef boost::uint32_t senf::UIntFieldParser< Start, End >::
value_type

Constructor & Destructor Documentation

template<unsigned Start, unsigned End>
senf::UIntFieldParser< Start, End >::
UIntFieldParser ( data_iterator  i,
state_type  s )

Definition at line 529 of file IntParser.hh.


Member Function Documentation

template<unsigned Start, unsigned End>
UIntFieldParser const& senf::UIntFieldParser< Start, End >::
operator= ( value_type  other )

Definition at line 542 of file IntParser.hh.

template<unsigned Start, unsigned End>
void senf::UIntFieldParser< Start, End >::
value ( value_type  v )

Definition at line 541 of file IntParser.hh.

template<unsigned Start, unsigned End>
value_type senf::UIntFieldParser< Start, End >::
value ()

Definition at line 540 of file IntParser.hh.


Friends And Related Function Documentation

template<unsigned Start, unsigned End>
std::ostream &
operator<< ( std::ostream &  os,
UIntFieldParser< Start, End > const &  i )

Write parsed value to stream.

Definition at line 552 of file IntParser.hh.


Member Data Documentation

template<unsigned Start, unsigned End>
size_type const senf::UIntFieldParser< Start, End >::end_bit = End
[static]

Definition at line 535 of file IntParser.hh.

template<unsigned Start, unsigned End>
size_type const senf::UIntFieldParser< Start, End >::fixed_bytes = (End-1)/8+1
[static]

Definition at line 536 of file IntParser.hh.

template<unsigned Start, unsigned End>
value_type const senf::UIntFieldParser< Start, End >::max_value = boost::low_bits_mask_t<End-Start>::sig_bits
[static]

Definition at line 538 of file IntParser.hh.

template<unsigned Start, unsigned End>
value_type const senf::UIntFieldParser< Start, End >::min_value = 0u
[static]

Definition at line 537 of file IntParser.hh.

template<unsigned Start, unsigned End>
size_type const senf::UIntFieldParser< Start, End >::start_bit = Start
[static]

Definition at line 534 of file IntParser.hh.


The documentation for this struct was generated from the following file: