#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/if.hpp>
#include <boost/preprocessor/expand.hpp>
#include <boost/preprocessor/facilities/is_empty.hpp>
#include <boost/preprocessor/punctuation/comma.hpp>
#include "../Utils/preprocessor.hh"
#include "../Utils/mpl.hh"
Go to the source code of this file.
#
Definition in file ParseHelpers.ih.
Defines |
|
#define | IH_ParseHelpers_ 1 |
#define | SENF_PARSER_INITIALIZE BOOST_PP_CAT( SENF_PARSER_INITIALIZE_ , SENF_PARSER_TYPE ) |
#define | SENF_PARSER_INITIALIZE_fix() |
#define | SENF_PARSER_INITIALIZE_var() |
#define | SENF_PARSER_INHERIT_var(name) |
#define | SENF_PARSER_INHERIT_fix(name) |
#define | SENF_PARSER_FIELD_var(name, type) SENF_PARSER_FIELD_I(name, type, var, rw, public) |
#define | SENF_PARSER_FIELD_RO_var(name, type) SENF_PARSER_FIELD_I(name, type, var, ro, public) |
#define | SENF_PARSER_FIELD_fix(name, type) SENF_PARSER_FIELD_I(name, type, fix, rw, public) |
#define | SENF_PARSER_FIELD_RO_fix(name, type) SENF_PARSER_FIELD_I(name, type, fix, ro, public) |
#define | SENF_PARSER_P_FIELD_var(name, type) SENF_PARSER_FIELD_I(name, type, var, rw, protected) |
#define | SENF_PARSER_P_FIELD_fix(name, type) SENF_PARSER_FIELD_I(name, type, fix, rw, protected) |
#define | SENF_PARSER_FIELD_I(name, type, ofstype, rwtype, access) |
#define | SENF_PARSER_FIELD_SETUP_I(name, type, ofstype, rwtype, access) |
#define | SENF_PARSER_I_FIELD_INTRO(name, type, access) |
#define | SENF_PARSER_I_FIELD_INIT_rw(name, type, access) |
#define | SENF_PARSER_I_FIELD_INIT_ro(name, type, access) |
#define | SENF_PARSER_I_FIELD_OFS_var(name, type, access) |
#define | SENF_PARSER_I_FIELD_OFS_fix(name, type, access) |
#define | SENF_PARSER_I_SIZE_var(name, type) senf::bytes(BOOST_PP_CAT(name, _)()) |
#define | SENF_PARSER_I_INITBYTES_var(name, type) senf::init_bytes<type>::value |
#define | SENF_PARSER_I_SIZE_fix(name, type) type::fixed_bytes |
#define | SENF_PARSER_I_INITBYTES_fix(name, type) void |
#define | SENF_PARSER_I_ISVAR_fix(name, type) 0 |
#define | SENF_PARSER_I_ISVAR_var(name, type) (senf::is_fixed<type>::value?0:1) |
#define | SENF_PARSER_I_ADVANCE_OFS_var(name, type, size, isize, isvar, access) |
#define | SENF_PARSER_I_ADVANCE_OFS_fix(name, type, size, isize, isvar, access) |
#define | SENF_PARSER_I_FIELD_VAL_rw(name, type, access) |
#define | SENF_PARSER_I_FIELD_VAL_ro(name, type, access) |
#define | SENF_PARSER_CUSTOM_FIELD_var(name, type, size, isize) SENF_PARSER_CUSTOM_FIELD_I(name, type, size, isize, var) |
#define | SENF_PARSER_CUSTOM_FIELD_fix(name, type, size) SENF_PARSER_CUSTOM_FIELD_I(name, type, size, size, fix) |
#define | SENF_PARSER_CUSTOM_FIELD_I(name, type, size, isize, ofstype) |
#define | SENF_PARSER_BITFIELD_var(name, bits, type) SENF_PARSER_BITFIELD_I(name, bits, type, var, rw, public) |
#define | SENF_PARSER_BITFIELD_RO_var(name, bits, type) SENF_PARSER_BITFIELD_I(name, bits, type, var, ro, public) |
#define | SENF_PARSER_BITFIELD_fix(name, bits, type) SENF_PARSER_BITFIELD_I(name, bits, type, fix, rw, public) |
#define | SENF_PARSER_BITFIELD_RO_fix(name, bits, type) SENF_PARSER_BITFIELD_I(name, bits, type, fix, ro, public) |
#define | SENF_PARSER_P_BITFIELD_var(name, bits, type) SENF_PARSER_BITFIELD_I(name, bits, type, var, rw, protected) |
#define | SENF_PARSER_P_BITFIELD_fix(name, bits, type) SENF_PARSER_BITFIELD_I(name, bits, type, fix, rw, protected) |
#define | SENF_PARSER_BITFIELD_TYPE_signed(start, bits) senf::IntFieldParser<start, start+bits> |
#define | SENF_PARSER_BITFIELD_TYPE_unsigned(start, bits) senf::UIntFieldParser<start, start+bits> |
#define | SENF_PARSER_BITFIELD_TYPE_bool(start, bits) senf::FlagParser<start> |
#define | SENF_PARSER_BITFIELD_I(name, bits, type, ofstype, rwtype, access) |
#define | SENF_PARSER_BITFIELD_II(name, bits, type, ofstype, rwtype, access) |
#define | SENF_PARSER_I_BITFIELD_OFS_var(name, type, access) |
#define | SENF_PARSER_I_BITFIELD_OFS_fix(name, type, access) |
#define | SENF_PARSER_I_BITFIELD_RESET() |
#define | SENF_PARSER_SKIP_var(bytes, ibytes) SENF_PARSER_I_SKIP( BOOST_PP_CAT(senf_anon_, __LINE__), bytes, ibytes, var) |
#define | SENF_PARSER_SKIP_fix(bytes) SENF_PARSER_I_SKIP( BOOST_PP_CAT(senf_anon_, __LINE__), bytes, bytes, fix) |
#define | SENF_PARSER_I_SKIP(name, bytes, ibytes, ofstype) |
#define | SENF_PARSER_SKIP_BITS_var(bits) SENF_PARSER_I_SKIP_BITS(bits, var) |
#define | SENF_PARSER_SKIP_BITS_fix(bits) SENF_PARSER_I_SKIP_BITS(bits, fix) |
#define | SENF_PARSER_I_SKIP_BITS(bits, ofstype) |
#define | SENF_PARSER_GOTO_var(name) |
#define | SENF_PARSER_GOTO_fix(name) |
#define | SENF_PARSER_GOTO_OFFSET_var(offset, isize) SENF_PARSER_I_GOTO( BOOST_PP_CAT(senf_anon_, __LINE__), offset, isize, var ) |
#define | SENF_PARSER_GOTO_OFFSET_fix(offset) SENF_PARSER_I_GOTO( BOOST_PP_CAT(senf_anon_, __LINE__), offset, offset, fix ) |
#define | SENF_PARSER_I_GOTO(name, offset, initsize, ofstype) |
#define | SENF_PARSER_I_GOTO_SET_OFS_var(name, offs, initsize) |
#define | SENF_PARSER_I_GOTO_SET_OFS_fix(name, offs, initsize) SENF_MPL_SLOT_SET(offset, offs); |
#define | SENF_PARSER_LABEL_var(name) SENF_PARSER_I_LABEL( name, var, public ) |
#define | SENF_PARSER_LABEL_fix(name) SENF_PARSER_I_LABEL( name, fix, public ) |
#define | SENF_PARSER_I_LABEL(name, ofstype, access) |
#define | SENF_PARSER_OFFSET_fix(name) BOOST_PP_CAT(name, _offset) |
#define | SENF_PARSER_OFFSET_var(name) BOOST_PP_CAT(name, _offset)() |
#define | SENF_PARSER_FIXED_OFFSET_fix(name) BOOST_PP_CAT(name, _offset) |
#define | SENF_PARSER_FIXED_OFFSET_var(name) BOOST_PP_CAT(name, _init_bytes) |
#define | SENF_PARSER_CURRENT_FIXED_OFFSET_fix() SENF_MPL_SLOT_GET(offset) |
#define | SENF_PARSER_CURRENT_FIXED_OFFSET_var() SENF_MPL_SLOT_GET(init_bytes) |
#define | SENF_PARSER_FINALIZE_var(name) |
#define | SENF_PARSER_FINALIZE_fix(name) |
#define | SENF_PARSER_FINALIZE_GENERIC(name) |
#define | SENF_PARSER_REQUIRE_VAR(description) BOOST_PP_CAT(SENF_PARSER_REQUIRE_VAR_, SENF_PARSER_TYPE)(description) |
#define | SENF_PARSER_REQUIRE_VAR_var(description) |
#define | SENF_PARSER_REQUIRE_VAR_fix(description) |
#define | SENF_PARSER_COLLECTION_TAG_GOBBLE__bytes(x) |
#define | SENF_PARSER_COLLECTION_TAG__bytes(x) bytes() |
#define | SENF_PARSER_COLLECTION_TAG_EXPAND__bytes() senf::detail::auxtag::bytes |
#define | SENF_PARSER_COLLECTION_TAG_GETAUX__bytes(x) x |
#define | SENF_PARSER_COLLECTION_TAG_AUXTYPE__bytes(x) auxField |
#define | SENF_PARSER_COLLECTION_TAG_GOBBLE__transform(x, y) |
#define | SENF_PARSER_COLLECTION_TAG__transform(x, y) transform(x, SENF_PARSER_COLLECTION_TAG_RECURS1(y)) |
#define | SENF_PARSER_COLLECTION_TAG_EXPAND__transform(x, y) |
#define | SENF_PARSER_COLLECTION_TAG_GETAUX__transform(x, y) SENF_PARSER_COLLECTION_TAG_GETAUX_RECURS1(y) |
#define | SENF_PARSER_COLLECTION_TAG_AUXTYPE__transform(x, y) SENF_PARSER_COLLECTION_TAG_AUXTYPE_RECURS1(y) |
#define | SENF_PARSER_COLLECTION_TAG_GOBBLE__packetSize() |
#define | SENF_PARSER_COLLECTION_TAG__packetSize() packetSize() |
#define | SENF_PARSER_COLLECTION_TAG_EXPAND__packetSize() senf::detail::auxtag::bytes |
#define | SENF_PARSER_COLLECTION_TAG_GETAUX__packetSize() _ |
#define | SENF_PARSER_COLLECTION_TAG_AUXTYPE__packetSize() packetSize |
#define | SENF_PARSER_COLLECTION_TAG_EXPAND__none() senf::detail::auxtag::none |
#define | SENF_PARSER_COLLECTION_TAG_RECURS1(aux) |
#define | SENF_PARSER_COLLECTION_TAG_GETAUX_RECURS1(aux) |
#define | SENF_PARSER_COLLECTION_TAG_AUXTYPE_RECURS1(aux) |
#define | SENF_PARSER_COLLECTION_HAS_KEYWORD(x) BOOST_PP_IS_EMPTY( SENF_CAT_RECURS1(SENF_PARSER_COLLECTION_TAG_GOBBLE__, x) ) |
#define | SENF_PARSER_COLLECTION_GETAUX(aux) |
#define | SENF_PARSER_COLLECTION_I(access, name, aux, traits) |
#define | SENF_PARSER_COLLECTION_II(access, name, auxtype, aux, tag, traits) |
#define | SENF_PARSER_COLLECTION_TAG_AUXDEF__auxField(name, aux) |
#define | SENF_PARSER_COLLECTION_AUXTYPE_var(name, aux) |
#define | SENF_PARSER_COLLECTION_AUXTYPE_fix(name, aux) |
#define | SENF_PARSER_COLLECTION_AUX_I_var(name, aux) |
#define | SENF_PARSER_COLLECTION_AUX_I_fix(name, aux) |
#define | SENF_PARSER_COLLECTION_TAG_AUXDEF__packetSize(name, aux) typedef senf::detail::PacketSizeAuxParserPolicy BOOST_PP_CAT(name, _aux_policy); |
#define | SENF_PARSER_COLLECTION_TAG_VAL__auxField(name, aux, access) BOOST_PP_CAT(SENF_PARSER_COLLECTION_VAL_, SENF_PARSER_TYPE)(name, aux, access) |
#define | SENF_PARSER_COLLECTION_VAL_var(name, aux, access) |
#define | SENF_PARSER_COLLECTION_VAL_fix(name, aux, access) |
#define | SENF_PARSER_COLLECTION_TAG_VAL__packetSize(name, aux, access) |
#define | ||||
IH_ParseHelpers_ 1 | ||||
Definition at line 25 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_BITFIELD_fix | ( | name, | ||
bits, | ||||
type | ) | |||
Definition at line 248 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_BITFIELD_I | ( | name, | ||
bits, | ||||
type, | ||||
ofstype, | ||||
rwtype, | ||||
access | ) | |||
Value:
access: \ static size_type const BOOST_PP_CAT(name, _bit) = SENF_MPL_SLOT_GET(bit); \ private: \ SENF_MPL_SLOT_SET(bit, BOOST_PP_CAT(name, _bit) + bits); \ typedef BOOST_PP_CAT(SENF_PARSER_BITFIELD_TYPE_, type)( BOOST_PP_CAT(name, _bit), bits ) \ BOOST_PP_CAT(name,_bit_t ); \ access: \ SENF_PARSER_BITFIELD_II( name, bits, BOOST_PP_CAT(name, _bit_t), ofstype, rwtype, access) \ public:
Definition at line 265 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_BITFIELD_II | ( | name, | ||
bits, | ||||
type, | ||||
ofstype, | ||||
rwtype, | ||||
access | ) | |||
Value:
SENF_PARSER_I_FIELD_INTRO(name, type, access) \ SENF_PARSER_I_FIELD_INIT_ro(name, type, access) \ BOOST_PP_CAT(SENF_PARSER_I_BITFIELD_OFS_, ofstype) (name, type, access) \ BOOST_PP_CAT(SENF_PARSER_I_ADVANCE_OFS_, ofstype) ( \ name, type, \ BOOST_PP_CAT(name, _t)::fixed_bytes, BOOST_PP_CAT(name, _t)::fixed_bytes, \ 0, \ access) \ private: \ SENF_MPL_SLOT_SET(bitfield_size, BOOST_PP_CAT(name, _t)::fixed_bytes); \ access: \ BOOST_PP_CAT(SENF_PARSER_I_FIELD_VAL_, rwtype) (name, type, access) \ public:
Definition at line 276 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_BITFIELD_RO_fix | ( | name, | ||
bits, | ||||
type | ) | |||
Definition at line 250 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_BITFIELD_RO_var | ( | name, | ||
bits, | ||||
type | ) | |||
Definition at line 246 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_BITFIELD_TYPE_bool | ( | start, | ||
bits | ) | |||
Definition at line 263 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_BITFIELD_TYPE_signed | ( | start, | ||
bits | ) | |||
Definition at line 261 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_BITFIELD_TYPE_unsigned | ( | start, | ||
bits | ) | |||
Definition at line 262 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_BITFIELD_var | ( | name, | ||
bits, | ||||
type | ) | |||
Definition at line 244 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_AUX_I_fix | ( | name, | ||
aux | ) | |||
Value:
senf::detail::FixedAuxParserPolicy< BOOST_PP_CAT(aux, _t), \ SENF_PARSER_CURRENT_FIXED_OFFSET() \ - SENF_PARSER_FIXED_OFFSET(aux) >
Definition at line 604 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_AUX_I_var | ( | name, | ||
aux | ) | |||
Value:
senf::detail::ParserAuxPolicySelect< BOOST_PP_CAT(aux, _t), \ SENF_PARSER_CURRENT_FIXED_OFFSET() \ - SENF_PARSER_FIXED_OFFSET(aux), \ BOOST_PP_CAT(name, _aux_fixed) >::type
Definition at line 598 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_AUXTYPE_fix | ( | name, | ||
aux | ) | |||
Definition at line 581 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_AUXTYPE_var | ( | name, | ||
aux | ) | |||
Value:
static bool const BOOST_PP_CAT(name, _aux_fixed) = \ (SENF_MPL_SLOT_GET(group) - BOOST_PP_CAT(aux, _group) == 0);
Definition at line 577 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_GETAUX | ( | aux | ) | |
Value:
BOOST_PP_IF( SENF_PARSER_COLLECTION_HAS_KEYWORD(aux), \ SENF_CAT_RECURS2(SENF_PARSER_COLLECTION_TAG_GETAUX__, aux), \ aux )
Definition at line 533 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_HAS_KEYWORD | ( | x | ) | |
Definition at line 530 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_I | ( | access, | ||
name, | ||||
aux, | ||||
traits | ) | |||
Value:
BOOST_PP_EXPAND( \ SENF_PARSER_COLLECTION_II \ BOOST_PP_IF( \ SENF_PARSER_COLLECTION_HAS_KEYWORD(aux), \ ( access, \ name, \ SENF_CAT_RECURS2(SENF_PARSER_COLLECTION_TAG_AUXTYPE__, aux), \ SENF_CAT_RECURS2(SENF_PARSER_COLLECTION_TAG_GETAUX__, aux), \ SENF_CAT_RECURS2(SENF_PARSER_COLLECTION_TAG__, aux), \ traits ), \ ( access, \ name, \ auxField, \ aux, \ none(), \ traits ) ))
Definition at line 538 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_II | ( | access, | ||
name, | ||||
auxtype, | ||||
aux, | ||||
tag, | ||||
traits | ) | |||
Value:
private: \ BOOST_PP_CAT(SENF_PARSER_COLLECTION_TAG_AUXDEF__, auxtype)(name, aux) \ typedef traits::parser< \ BOOST_PP_CAT(name,_aux_policy), \ BOOST_PP_CAT(SENF_PARSER_COLLECTION_TAG_EXPAND__, tag) \ >::type BOOST_PP_CAT(name, _collection_t); \ access: \ SENF_PARSER_FIELD_SETUP_I( name, \ BOOST_PP_CAT(name, _collection_t), \ SENF_PARSER_TYPE, \ rw, \ access ) \ BOOST_PP_CAT(SENF_PARSER_COLLECTION_TAG_VAL__, auxtype)(name, aux, access) \ public:
Definition at line 556 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG__bytes | ( | x | ) | |
Definition at line 487 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG__packetSize | () | |||
Definition at line 505 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG__transform | ( | x, | ||
y | ) | |||
Definition at line 493 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_AUXDEF__auxField | ( | name, | ||
aux | ) | |||
Value:
BOOST_PP_CAT(SENF_PARSER_COLLECTION_AUXTYPE_, SENF_PARSER_TYPE)(name, aux) \ typedef BOOST_PP_CAT(SENF_PARSER_COLLECTION_AUX_I_, SENF_PARSER_TYPE)(name, aux) \ BOOST_PP_CAT(name,_aux_policy);
Definition at line 572 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_AUXDEF__packetSize | ( | name, | ||
aux | ) | |||
Definition at line 609 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_AUXTYPE__bytes | ( | x | ) | |
Definition at line 490 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_AUXTYPE__packetSize | () | |||
Definition at line 508 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_AUXTYPE__transform | ( | x, | ||
y | ) | |||
Definition at line 501 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_AUXTYPE_RECURS1 | ( | aux | ) | |
Value:
BOOST_PP_IF( \ SENF_PARSER_COLLECTION_HAS_KEYWORD(aux), \ BOOST_PP_CAT(SENF_PARSER_COLLECTION_TAG_AUXTYPE__, aux), \ auxField)
Definition at line 524 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_EXPAND__bytes | () | |||
Definition at line 488 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_EXPAND__none | () | |||
Definition at line 510 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_EXPAND__packetSize | () | |||
Definition at line 506 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_EXPAND__transform | ( | x, | ||
y | ) | |||
Value:
senf::detail::auxtag::transform< \ x, \ SENF_CAT_RECURS1(SENF_PARSER_COLLECTION_TAG_EXPAND__, y)>
Definition at line 495 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_GETAUX__bytes | ( | x | ) | |
Definition at line 489 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_GETAUX__packetSize | () | |||
Definition at line 507 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_GETAUX__transform | ( | x, | ||
y | ) | |||
Definition at line 499 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_GETAUX_RECURS1 | ( | aux | ) | |
Value:
BOOST_PP_IF( \ SENF_PARSER_COLLECTION_HAS_KEYWORD(aux), \ BOOST_PP_CAT(SENF_PARSER_COLLECTION_TAG_GETAUX__, aux), \ aux)
Definition at line 518 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_GOBBLE__bytes | ( | x | ) | |
Definition at line 486 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_GOBBLE__packetSize | () | |||
Definition at line 504 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_GOBBLE__transform | ( | x, | ||
y | ) | |||
Definition at line 492 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_RECURS1 | ( | aux | ) | |
Value:
BOOST_PP_IF( \ SENF_PARSER_COLLECTION_HAS_KEYWORD(aux), \ BOOST_PP_CAT(SENF_PARSER_COLLECTION_TAG__, aux), \ none() )
Definition at line 512 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_VAL__auxField | ( | name, | ||
aux, | ||||
access | ) | |||
Definition at line 612 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_TAG_VAL__packetSize | ( | name, | ||
aux, | ||||
access | ) | |||
Value:
private: \ BOOST_PP_CAT(name, _t) BOOST_PP_CAT(name, _)() const \ { return parse<BOOST_PP_CAT(name, _t)>( SENF_PARSER_OFFSET(name) ); } \ access: \ BOOST_PP_CAT(name, _t) name() const \ { return BOOST_PP_CAT(name, _)(); }
Definition at line 636 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_VAL_fix | ( | name, | ||
aux, | ||||
access | ) | |||
Value:
private: \ BOOST_PP_CAT(name, _t) BOOST_PP_CAT(name, _)() const \ { return parse<BOOST_PP_CAT(name, _t)>( SENF_PARSER_OFFSET(name) ); } \ access: \ BOOST_PP_CAT(name, _t) name() const \ { return BOOST_PP_CAT(name, _)(); }
Definition at line 628 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_COLLECTION_VAL_var | ( | name, | ||
aux, | ||||
access | ) | |||
Value:
private: \ template <class T> T BOOST_PP_CAT(name, _dispatch)(boost::true_type) const \ { return parse<T>( SENF_PARSER_OFFSET(name) ); } \ template <class T> T BOOST_PP_CAT(name, _dispatch)(boost::false_type) const \ { return parse<T>( BOOST_PP_CAT(aux,_)(), SENF_PARSER_OFFSET(name) ); } \ BOOST_PP_CAT(name, _t) BOOST_PP_CAT(name, _)() const \ { return BOOST_PP_CAT(name, _dispatch) <BOOST_PP_CAT(name, _t)>( \ boost::integral_constant<bool, BOOST_PP_CAT(name, _aux_fixed)>()); } \ access: \ BOOST_PP_CAT(name, _t) name() const \ { return BOOST_PP_CAT(name, _)(); }
Definition at line 615 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_CURRENT_FIXED_OFFSET_fix | () | |||
Definition at line 411 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_CURRENT_FIXED_OFFSET_var | () | |||
Definition at line 412 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_CUSTOM_FIELD_fix | ( | name, | ||
type, | ||||
size | ) | |||
Definition at line 229 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_CUSTOM_FIELD_I | ( | name, | ||
type, | ||||
size, | ||||
isize, | ||||
ofstype | ) | |||
Value:
SENF_PARSER_I_BITFIELD_RESET() \ SENF_PARSER_I_FIELD_INTRO(name, type, public) \ SENF_PARSER_I_FIELD_INIT_ro(name, type, public) \ BOOST_PP_CAT(SENF_PARSER_I_FIELD_OFS_, ofstype) (name, type, public) \ BOOST_PP_CAT(SENF_PARSER_I_ADVANCE_OFS_, ofstype) (name, type, size, isize, 1, public) \ BOOST_PP_CAT(name, _t) name() const
Definition at line 232 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_CUSTOM_FIELD_var | ( | name, | ||
type, | ||||
size, | ||||
isize | ) | |||
Definition at line 227 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_FIELD_fix | ( | name, | ||
type | ) | |||
Definition at line 95 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_FIELD_I | ( | name, | ||
type, | ||||
ofstype, | ||||
rwtype, | ||||
access | ) | |||
Value:
access: \ SENF_PARSER_FIELD_SETUP_I(name, type, ofstype, rwtype, access) \ BOOST_PP_CAT(SENF_PARSER_I_FIELD_VAL_, rwtype) (name, type, access) \ public:
Definition at line 101 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_FIELD_RO_fix | ( | name, | ||
type | ) | |||
Definition at line 96 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_FIELD_RO_var | ( | name, | ||
type | ) | |||
Definition at line 94 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_FIELD_SETUP_I | ( | name, | ||
type, | ||||
ofstype, | ||||
rwtype, | ||||
access | ) | |||
Value:
SENF_PARSER_I_BITFIELD_RESET() \ SENF_PARSER_I_FIELD_INTRO(name, type, access) \ BOOST_PP_CAT(SENF_PARSER_I_FIELD_INIT_, rwtype) (name, type, access) \ BOOST_PP_CAT(SENF_PARSER_I_FIELD_OFS_, ofstype) (name, type, access) \ BOOST_PP_CAT(SENF_PARSER_I_ADVANCE_OFS_, ofstype) ( \ name, type, \ BOOST_PP_CAT(SENF_PARSER_I_SIZE_, ofstype) (name, type), \ BOOST_PP_CAT(SENF_PARSER_I_INITBYTES_, ofstype) (name, type), \ BOOST_PP_CAT(SENF_PARSER_I_ISVAR_, ofstype) (name, type), \ access )
Definition at line 107 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_FIELD_var | ( | name, | ||
type | ) | |||
Definition at line 93 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_FINALIZE_fix | ( | name | ) | |
Value:
SENF_PARSER_FINALIZE_GENERIC(name) \ static size_type const fixed_bytes = SENF_MPL_SLOT_GET(offset);
Definition at line 424 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_FINALIZE_GENERIC | ( | name | ) | |
Value:
void defaultInit() const { \ init_chain(static_cast<senf::mpl::rv<SENF_MPL_SLOT_GET(index)>*>(0)); \ } \ name(data_iterator i, state_type s) : parser_base_type(i,s) {} \ private: \ template <class T> void init(T) const { defaultInit(); } \ public: \ void init() const { init(0); }
Definition at line 428 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_FINALIZE_var | ( | name | ) | |
Value:
SENF_PARSER_FINALIZE_GENERIC(name) \ size_type bytes() const { \ return field_offset_(static_cast<senf::mpl::rv<SENF_MPL_SLOT_GET(index)>*>(0)); \ } \ static size_type const init_bytes = SENF_MPL_SLOT_GET(init_bytes)
Definition at line 417 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_FIXED_OFFSET_fix | ( | name | ) | |
Definition at line 405 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_FIXED_OFFSET_var | ( | name | ) | |
Definition at line 406 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_GOTO_fix | ( | name | ) | |
Value:
SENF_PARSER_I_GOTO( BOOST_PP_CAT(senf_anon_, __LINE__), \ BOOST_PP_CAT(name, _offset), \ BOOST_PP_CAT(name, _offset), \ fix )
Definition at line 352 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_GOTO_OFFSET_fix | ( | offset | ) | |
Definition at line 361 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_GOTO_OFFSET_var | ( | offset, | ||
isize | ) | |||
Definition at line 358 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_GOTO_var | ( | name | ) | |
Value:
SENF_PARSER_I_GOTO( BOOST_PP_CAT(senf_anon_, __LINE__), \ BOOST_PP_CAT(name, _offset)(), \ BOOST_PP_CAT(name, _init_bytes), \ var )
Definition at line 346 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_ADVANCE_OFS_fix | ( | name, | ||
type, | ||||
size, | ||||
isize, | ||||
isvar, | ||||
access | ) | |||
Value:
static size_type const BOOST_PP_CAT(name, _next_offset) = \ BOOST_PP_CAT(name, _offset) + size; \ private: \ SENF_MPL_SLOT_SET(offset, BOOST_PP_CAT(name, _next_offset)); \ access:
Definition at line 194 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_ADVANCE_OFS_var | ( | name, | ||
type, | ||||
size, | ||||
isize, | ||||
isvar, | ||||
access | ) | |||
Value:
size_type BOOST_PP_CAT(name, _next_offset)() const { \ return BOOST_PP_CAT(name,_offset)() + size; \ } \ static size_type const BOOST_PP_CAT(name, _next_init_bytes) = \ BOOST_PP_CAT(name, _init_bytes) + isize; \ private: \ size_type field_offset_(senf::mpl::rv<BOOST_PP_CAT(name,_index)>*) const { \ return BOOST_PP_CAT(name, _next_offset)(); \ } \ SENF_MPL_SLOT_SET(init_bytes, BOOST_PP_CAT(name,_next_init_bytes)); \ protected: \ static size_type const BOOST_PP_CAT(name, _group) = SENF_MPL_SLOT_GET(group) + isvar; \ private: \ SENF_MPL_SLOT_SET(group, BOOST_PP_CAT(name, _group)); \ access:
Definition at line 177 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_BITFIELD_OFS_fix | ( | name, | ||
type, | ||||
access | ) | |||
Value:
static size_type const BOOST_PP_CAT(name, _offset) = \ SENF_MPL_SLOT_GET(offset) - SENF_MPL_SLOT_GET(bitfield_size);
Definition at line 302 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_BITFIELD_OFS_var | ( | name, | ||
type, | ||||
access | ) | |||
Value:
size_type BOOST_PP_CAT(name,_offset)() const { \ return field_offset_(static_cast<senf::mpl::rv<BOOST_PP_CAT(name,_index)-1>*>(0)) \ - SENF_MPL_SLOT_GET(bitfield_size); \ } \ static size_type const BOOST_PP_CAT(name, _init_bytes) = \ SENF_MPL_SLOT_GET(init_bytes) - SENF_MPL_SLOT_GET(bitfield_size);
Definition at line 294 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_BITFIELD_RESET | () | |||
Value:
SENF_MPL_SLOT_SET(bit, 0); \ SENF_MPL_SLOT_SET(bitfield_size, 0);
Definition at line 309 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_FIELD_INIT_ro | ( | name, | ||
type, | ||||
access | ) | |||
Value:
private: \ void init_chain(senf::mpl::rv<BOOST_PP_CAT(name,_index)>*) const { \ init_chain(static_cast<senf::mpl::rv<BOOST_PP_CAT(name,_index)-1>*>(0)); \ } \ access:
Definition at line 140 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_FIELD_INIT_rw | ( | name, | ||
type, | ||||
access | ) | |||
Value:
private: \ void init_chain(senf::mpl::rv<BOOST_PP_CAT(name,_index)>*) const { \ init_chain(static_cast<senf::mpl::rv<BOOST_PP_CAT(name,_index)-1>*>(0)); \ name().init(); \ } \ access:
Definition at line 132 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_FIELD_INTRO | ( | name, | ||
type, | ||||
access | ) | |||
Value:
typedef type BOOST_PP_CAT(name, _t); \ static size_type const BOOST_PP_CAT(name,_index) = SENF_MPL_SLOT_GET(index)+1; \ private: \ SENF_MPL_SLOT_SET(index, BOOST_PP_CAT(name,_index)); \ access:
Definition at line 122 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_FIELD_OFS_fix | ( | name, | ||
type, | ||||
access | ) | |||
Value:
protected: \ static size_type const BOOST_PP_CAT(name, _offset) = \ SENF_MPL_SLOT_GET(offset); \ private:
Definition at line 159 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_FIELD_OFS_var | ( | name, | ||
type, | ||||
access | ) | |||
Value:
protected: \ size_type BOOST_PP_CAT(name,_offset)() const { \ return field_offset_(static_cast<senf::mpl::rv<BOOST_PP_CAT(name,_index)-1>*>(0)); \ } \ static size_type const BOOST_PP_CAT(name, _init_bytes) = \ SENF_MPL_SLOT_GET(init_bytes); \ private:
Definition at line 150 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_FIELD_VAL_ro | ( | name, | ||
type, | ||||
access | ) | |||
Value:
protected: \ BOOST_PP_CAT(name, _t) BOOST_PP_CAT(name, _)() const { \ return parse<type>( SENF_PARSER_OFFSET(name) ); \ } \ access: \ BOOST_PP_CAT(name, _t)::value_type name() const { \ return BOOST_PP_CAT(name,_)(); \ }
Definition at line 214 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_FIELD_VAL_rw | ( | name, | ||
type, | ||||
access | ) | |||
Value:
protected: \ BOOST_PP_CAT(name, _t) BOOST_PP_CAT(name, _)() const { \ return parse<type>( SENF_PARSER_OFFSET(name) ); \ } \ access: \ BOOST_PP_CAT(name, _t) name() const { \ return BOOST_PP_CAT(name,_)(); \ }
Definition at line 204 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_GOTO | ( | name, | ||
offset, | ||||
initsize, | ||||
ofstype | ) | |||
Value:
private: \ SENF_PARSER_I_BITFIELD_RESET() \ SENF_PARSER_I_FIELD_INTRO(name, void, private) \ SENF_PARSER_I_FIELD_INIT_ro(name, void, private) \ BOOST_PP_CAT( SENF_PARSER_I_GOTO_SET_OFS_, ofstype ) (name, offset, initsize) \ public:
Definition at line 364 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_GOTO_SET_OFS_fix | ( | name, | ||
offs, | ||||
initsize | ) | |||
Definition at line 378 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_GOTO_SET_OFS_var | ( | name, | ||
offs, | ||||
initsize | ) | |||
Value:
size_type field_offset_(senf::mpl::rv<BOOST_PP_CAT(name,_index)>*) const { \ return offs; \ } \ SENF_MPL_SLOT_SET(init_bytes, initsize);
Definition at line 372 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_INITBYTES_fix | ( | name, | ||
type | ) | |||
Definition at line 172 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_INITBYTES_var | ( | name, | ||
type | ) | |||
Definition at line 169 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_ISVAR_fix | ( | name, | ||
type | ) | |||
Definition at line 174 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_ISVAR_var | ( | name, | ||
type | ) | |||
Definition at line 175 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_LABEL | ( | name, | ||
ofstype, | ||||
access | ) | |||
Value:
access: \ SENF_PARSER_I_BITFIELD_RESET() \ SENF_PARSER_I_FIELD_INTRO(name, void, access) \ SENF_PARSER_I_FIELD_INIT_ro(name, void, access) \ BOOST_PP_CAT(SENF_PARSER_I_FIELD_OFS_, ofstype) (name, type, access) \ BOOST_PP_CAT(SENF_PARSER_I_ADVANCE_OFS_, ofstype) (name, void, 0, 0, 0, access) \ public:
Definition at line 387 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_SIZE_fix | ( | name, | ||
type | ) | |||
Definition at line 171 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_SIZE_var | ( | name, | ||
type | ) | |||
Definition at line 168 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_SKIP | ( | name, | ||
bytes, | ||||
ibytes, | ||||
ofstype | ) | |||
Value:
private: \ SENF_PARSER_I_BITFIELD_RESET() \ SENF_PARSER_I_FIELD_INTRO(name, void, private) \ SENF_PARSER_I_FIELD_INIT_ro(name, void, private) \ BOOST_PP_CAT(SENF_PARSER_I_FIELD_OFS_, ofstype) (name, type, access) \ BOOST_PP_CAT(SENF_PARSER_I_ADVANCE_OFS_, ofstype) (name, void, bytes, ibytes, 1, \ private) \ public:
Definition at line 322 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_I_SKIP_BITS | ( | bits, | ||
ofstype | ) | |||
Value:
private: \ SENF_MPL_SLOT_SET(bit, SENF_MPL_SLOT_GET(bit) + bits); \ public:
Definition at line 338 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_INHERIT_fix | ( | name | ) | |
Value:
typedef name parser_base_type; \ private: \ SENF_MPL_SLOT_SET(offset, name::fixed_bytes); \ SENF_MPL_SLOT_SET(index, 1); \ void init_chain(senf::mpl::rv<1>*) const { \ name::init(); \ } \ public:
Definition at line 79 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_INHERIT_var | ( | name | ) | |
Value:
typedef name parser_base_type; \ private: \ SENF_MPL_SLOT_SET(index, 1); \ SENF_MPL_SLOT_SET(init_bytes, senf::init_bytes<name>::value); \ size_type field_offset_(senf::mpl::rv<1>*) const { \ return senf::bytes( *static_cast<name const*>(this) ); \ } \ void init_chain(senf::mpl::rv<1>*) const { \ name::init(); \ } \ public:
Definition at line 66 of file ParseHelpers.ih.
#define SENF_PARSER_INITIALIZE BOOST_PP_CAT( SENF_PARSER_INITIALIZE_ , SENF_PARSER_TYPE | ||||
) | ||||
Definition at line 41 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_INITIALIZE_fix | () | |||
Value:
private: \ SENF_MPL_SLOT_DEF_ZERO(index); \ SENF_MPL_SLOT_DEF_ZERO(offset); \ SENF_MPL_SLOT_DEF_ZERO(bit); \ SENF_MPL_SLOT_DEF_ZERO(bitfield_size); \ void init_chain(senf::mpl::rv<0>*) const {} \ public:
Definition at line 43 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_INITIALIZE_var | () | |||
Value:
private: \ SENF_MPL_SLOT_DEF_ZERO(index); \ SENF_MPL_SLOT_DEF_ZERO(init_bytes); \ SENF_MPL_SLOT_DEF_ZERO(bit); \ SENF_MPL_SLOT_DEF_ZERO(bitfield_size); \ SENF_MPL_SLOT_DEF_ZERO(group); \ void init_chain(senf::mpl::rv<0>*) const {} \ size_type field_offset_(senf::mpl::rv<0>*) const { return 0; } \ public:
Definition at line 52 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_LABEL_fix | ( | name | ) | |
Definition at line 385 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_LABEL_var | ( | name | ) | |
Definition at line 384 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_OFFSET_fix | ( | name | ) | |
Definition at line 399 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_OFFSET_var | ( | name | ) | |
Definition at line 400 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_P_BITFIELD_fix | ( | name, | ||
bits, | ||||
type | ) | |||
Definition at line 255 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_P_BITFIELD_var | ( | name, | ||
bits, | ||||
type | ) | |||
Definition at line 253 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_P_FIELD_fix | ( | name, | ||
type | ) | |||
Definition at line 99 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_P_FIELD_var | ( | name, | ||
type | ) | |||
Definition at line 98 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_REQUIRE_VAR | ( | description | ) | |
Definition at line 441 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_REQUIRE_VAR_fix | ( | description | ) | |
Value:
typedef BOOST_PP_CAT( PARSER_ERROR__, \
BOOST_PP_CAT(description, _not_allowed_in_fixed_parser) ) \
BOOST_PP_CAT(errsym_, __LINE__);
Definition at line 446 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_REQUIRE_VAR_var | ( | description | ) | |
Definition at line 444 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_SKIP_BITS_fix | ( | bits | ) | |
Definition at line 336 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_SKIP_BITS_var | ( | bits | ) | |
Definition at line 335 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_SKIP_fix | ( | bytes | ) | |
Definition at line 319 of file ParseHelpers.ih.
#define | ||||
SENF_PARSER_SKIP_var | ( | bytes, | ||
ibytes | ) | |||
Definition at line 316 of file ParseHelpers.ih.