Parse single-bit flag. More...

#include <senf/Packets/IntParser.hh>

Inheritance diagram for senf::FlagParser< Bit >:

Public Types

typedef bool 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 PacketDatastate_type
 Type of the 'state' parameter. More...
 
typedef PacketParserBase parser_base_type
 Base type of the next parser. More...
 

Public Member Functions

 FlagParser (data_iterator i, state_type s)
 
value_type value () const
 
void value (value_type v)
 
FlagParser 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...
 
PacketDatadata () const
 Access the packets raw data container. More...
 
void init () const
 Default implementation. More...
 

Static Public Attributes

static size_type const bit = Bit
 
static size_type const fixed_bytes = Bit/8+1
 
static value_type const min_value = 0
 
static value_type const max_value = 1
 

Related Functions

(Note that these are not member functions.)

template<unsigned Bit>
std::ostream & operator<< (std::ostream &os, FlagParser< Bit > 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...
 

Detailed Description

template<unsigned Bit>
struct senf::FlagParser< Bit >

Parse single-bit flag.

This parser will parse a single bit as True/False value. Bits are numbered most significant bit first as this is the customary numbering used when defining packet data structures. Bit can be arbitrary, FlagParser<75> is a valid flag parser.

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

Definition at line 560 of file IntParser.hh.

Member Typedef Documentation

◆ value_type

template<unsigned Bit>
typedef bool senf::FlagParser< Bit >::value_type

Definition at line 568 of file IntParser.hh.

Constructor & Destructor Documentation

◆ FlagParser()

template<unsigned Bit>
senf::FlagParser< Bit >::FlagParser ( data_iterator  i,
state_type  s 
)
inline

Definition at line 564 of file IntParser.hh.

Member Function Documentation

◆ operator=()

template<unsigned Bit>
FlagParser const& senf::FlagParser< Bit >::operator= ( value_type  other)
inline

Definition at line 579 of file IntParser.hh.

◆ value() [1/2]

template<unsigned Bit>
value_type senf::FlagParser< Bit >::value ( ) const
inline

Definition at line 574 of file IntParser.hh.

◆ value() [2/2]

template<unsigned Bit>
void senf::FlagParser< Bit >::value ( value_type  v)
inline

Definition at line 575 of file IntParser.hh.

Friends And Related Function Documentation

◆ operator<<()

template<unsigned Bit>
std::ostream & operator<< ( std::ostream &  os,
FlagParser< Bit > const &  i 
)
related

Write parsed value to stream.

Definition at line 585 of file IntParser.hh.

Member Data Documentation

◆ bit

template<unsigned Bit>
size_type const senf::FlagParser< Bit >::bit = Bit
static

Definition at line 569 of file IntParser.hh.

◆ fixed_bytes

template<unsigned Bit>
size_type const senf::FlagParser< Bit >::fixed_bytes = Bit/8+1
static

Definition at line 570 of file IntParser.hh.

◆ max_value

template<unsigned Bit>
value_type const senf::FlagParser< Bit >::max_value = 1
static

Definition at line 572 of file IntParser.hh.

◆ min_value

template<unsigned Bit>
value_type const senf::FlagParser< Bit >::min_value = 0
static

Definition at line 571 of file IntParser.hh.


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