| [/============================================================================== |
| Copyright (C) 2001-2010 Joel de Guzman |
| Copyright (C) 2001-2010 Hartmut Kaiser |
| |
| Distributed under the Boost Software License, Version 1.0. (See accompanying |
| file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| ===============================================================================/] |
| |
| [section:binary Binary] |
| |
| This module includes different parsers for parsing binary data in |
| various __endianness__. It includes parsers for default (native), |
| little, and big endian binary input. |
| |
| [heading Module Header] |
| |
| // forwards to <boost/spirit/home/qi/binary.hpp> |
| #include <boost/spirit/include/qi_binary.hpp> |
| |
| Also, see __include_structure__. |
| |
| [/////////////////////////////////////////////////////////////////////////////] |
| [section:binary_native Binary Native Endian] |
| |
| [heading Description] |
| |
| Binary native endian parsers are designed to parse binary byte streams |
| that are laid out in the native __endianness__ of the target |
| architecture. |
| |
| [heading Header] |
| |
| // forwards to <boost/spirit/home/qi/binary.hpp> |
| #include <boost/spirit/include/qi_binary.hpp> |
| |
| Also, see __include_structure__. |
| |
| [heading Namespace] |
| |
| [table |
| [[Name]] |
| [[`boost::spirit::byte_ // alias: boost::spirit::qi::byte_`]] |
| [[`boost::spirit::word // alias: boost::spirit::qi::word`]] |
| [[`boost::spirit::dword // alias: boost::spirit::qi::dword`]] |
| [[`boost::spirit::qword // alias: boost::spirit::qi::qword`]] |
| ] |
| |
| [note `qword` is only available on platforms where the preprocessor |
| constant `BOOST_HAS_LONG_LONG` is defined (i.e. on platforms having |
| native support for `unsigned long long` (64 bit) integer types).] |
| |
| [heading Model of] |
| |
| [:__primitive_parser_concept__] |
| |
| [variablelist Notation |
| [[`b`] [A single byte (8 bit binary value) or a __qi_lazy_argument__ |
| that evaluates to a single byte. This value is always |
| in native endian.]] |
| [[`w`] [A 16 bit binary value or a __qi_lazy_argument__ that |
| evaluates to a 16 bit binary value. This value is always |
| in native endian.]] |
| [[`dw`] [A 32 bit binary value or a __qi_lazy_argument__ that |
| evaluates to a 32 bit binary value. This value is always |
| in native endian.]] |
| [[`qw`] [A 64 bit binary value or a __qi_lazy_argument__ that |
| evaluates to a 64 bit binary value. This value is always |
| in native endian.]] |
| ] |
| |
| [heading Expression Semantics] |
| |
| Semantics of an expression is defined only where it differs from, or is |
| not defined in __primitive_parser_concept__. |
| |
| [table |
| [[Expression] [Description]] |
| [[`byte_`] [Matches any 8 bit native endian binary.]] |
| [[`word`] [Matches any 16 bit native endian binary.]] |
| [[`dword`] [Matches any 32 bit native endian binary.]] |
| [[`qword`] [Matches any 64 bit native endian binary.]] |
| [[`byte_(b)`] [Matches an exact 8 bit native endian binary.]] |
| [[`word(w)`] [Matches an exact 16 bit native endian binary.]] |
| [[`dword(dw)`] [Matches an exact 32 bit native endian binary.]] |
| [[`qword(qw)`] [Matches an exact 64 bit native endian binary.]] |
| ] |
| |
| [heading Attributes] |
| |
| [table |
| [[Expression] [Attribute]] |
| [[`byte_`] [`boost::uint_least8_t`]] |
| [[`word`] [`boost::uint_least16_t`]] |
| [[`dword`] [`boost::uint_least32_t`]] |
| [[`qword`] [`boost::uint_least64_t`]] |
| [[`byte_(b)`] [__unused__]] |
| [[`word(w)`] [__unused__]] |
| [[`dword(dw)`] [__unused__]] |
| [[`qword(qw)`] [__unused__]] |
| ] |
| |
| [heading Complexity] |
| |
| [:O(N), where N is the number of bytes parsed] |
| |
| [heading Example] |
| |
| [note The test harness for the example(s) below is presented in the |
| __qi_basics_examples__ section.] |
| |
| [reference_qi_native_binary] |
| |
| [endsect] |
| |
| [/////////////////////////////////////////////////////////////////////////////] |
| [section:binary_little Binary Little Endian] |
| |
| [heading Description] |
| |
| Binary little endian parsers are designed to parse binary byte streams |
| that are laid out in little endian. |
| |
| [heading Header] |
| |
| // forwards to <boost/spirit/home/qi/binary.hpp> |
| #include <boost/spirit/include/qi_binary.hpp> |
| |
| Also, see __include_structure__. |
| |
| [heading Namespace] |
| |
| [table |
| [[Name]] |
| [[`boost::spirit::little_word // alias: boost::spirit::qi::little_word` ]] |
| [[`boost::spirit::little_dword // alias: boost::spirit::qi::little_dword` ]] |
| [[`boost::spirit::little_qword // alias: boost::spirit::qi::little_qword` ]] |
| ] |
| |
| [note `little_qword` is only available on platforms where the |
| preprocessor constant `BOOST_HAS_LONG_LONG` is defined (i.e. on |
| platforms having native support for `unsigned long long` (64 bit) |
| integer types).] |
| |
| [heading Model of] |
| |
| [:__primitive_parser_concept__] |
| |
| [variablelist Notation |
| [[`w`] [A 16 bit binary value or a __qi_lazy_argument__ that |
| evaluates to a 16 bit binary value. This value is always |
| in native endian.]] |
| [[`dw`] [A 32 bit binary value or a __qi_lazy_argument__ that |
| evaluates to a 32 bit binary value. This value is always |
| in native endian.]] |
| [[`qw`] [A 64 bit binary value or a __qi_lazy_argument__ that |
| evaluates to a 64 bit binary value. This value is always |
| in native endian.]] |
| ] |
| |
| [heading Expression Semantics] |
| |
| Semantics of an expression is defined only where it differs from, or is |
| not defined in __primitive_parser_concept__. |
| |
| [table |
| [[Expression] [Description]] |
| [[`little_word`] [Matches any 16 bit little endian binary.]] |
| [[`little_dword`] [Matches any 32 bit little endian binary.]] |
| [[`little_qword`] [Matches any 64 bit little endian binary.]] |
| [[`little_word(w)`] [Matches an exact 16 bit little endian binary.]] |
| [[`little_dword(dw)`] [Matches an exact 32 bit little endian binary.]] |
| [[`little_qword(qw)`] [Matches an exact 32 bit little endian binary.]] |
| ] |
| |
| [heading Attributes] |
| |
| [table |
| [[Expression] [Attribute]] |
| [[`little_word`] [`boost::uint_least16_t`]] |
| [[`little_dword`] [`boost::uint_least32_t`]] |
| [[`little_qword`] [`boost::uint_least64_t`]] |
| [[`little_word(w)`] [__unused__]] |
| [[`little_dword(dw)`] [__unused__]] |
| [[`little_qword(qw)`] [__unused__]] |
| ] |
| |
| [heading Complexity] |
| |
| [:O(N), where N is the number of bytes parsed] |
| |
| [heading Example] |
| |
| [note The test harness for the example(s) below is presented in the |
| __qi_basics_examples__ section.] |
| |
| [reference_qi_little_binary] |
| |
| [endsect] |
| |
| [/////////////////////////////////////////////////////////////////////////////] |
| [section:binary_big Binary Big Endian] |
| |
| [heading Description] |
| |
| Binary big endian parsers are designed to parse binary byte streams that |
| are laid out in big endian. |
| |
| [heading Header] |
| |
| // forwards to <boost/spirit/home/qi/binary.hpp> |
| #include <boost/spirit/include/qi_binary.hpp> |
| |
| Also, see __include_structure__. |
| |
| [heading Namespace] |
| |
| [table |
| [[Name]] |
| [[`boost::spirit::big_word // alias: boost::spirit::qi::big_word` ]] |
| [[`boost::spirit::big_dword // alias: boost::spirit::qi::big_dword` ]] |
| [[`boost::spirit::big_qword // alias: boost::spirit::qi::big_qword` ]] |
| ] |
| |
| [note `big_qword` is only available on platforms where the |
| preprocessor constant `BOOST_HAS_LONG_LONG` is defined (i.e. on |
| platforms having native support for `unsigned long long` (64 bit) |
| integer types).] |
| |
| [heading Model of] |
| |
| [:__primitive_parser_concept__] |
| |
| [variablelist Notation |
| [[`w`] [A 16 bit binary value or a __qi_lazy_argument__ that |
| evaluates to a 16 bit binary value. This value is always |
| in native endian.]] |
| [[`dw`] [A 32 bit binary value or a __qi_lazy_argument__ that |
| evaluates to a 32 bit binary value. This value is always |
| in native endian.]] |
| [[`qw`] [A 64 bit binary value or a __qi_lazy_argument__ that |
| evaluates to a 64 bit binary value. This value is always |
| in native endian.]] |
| ] |
| |
| [heading Expression Semantics] |
| |
| Semantics of an expression is defined only where it differs from, or is |
| not defined in __primitive_parser_concept__. |
| |
| [table |
| [[Expression] [Description]] |
| [[`big_word`] [Matches any 16 bit big endian binary.]] |
| [[`big_dword`] [Matches any 32 bit big endian binary.]] |
| [[`big_qword`] [Matches any 64 bit big endian binary.]] |
| [[`big_word(w)`] [Matches an exact 16 bit big endian binary.]] |
| [[`big_dword(dw)`] [Matches an exact 32 bit big endian binary.]] |
| [[`big_qword(qw)`] [Matches an exact 32 bit big endian binary.]] |
| ] |
| |
| [heading Attributes] |
| |
| [table |
| [[Expression] [Attribute]] |
| [[`big_word`] [`boost::uint_least16_t`]] |
| [[`big_dword`] [`boost::uint_least32_t`]] |
| [[`big_qword`] [`boost::uint_least64_t`]] |
| [[`big_word(w)`] [__unused__]] |
| [[`big_dword(dw)`] [__unused__]] |
| [[`big_qword(qw)`] [__unused__]] |
| ] |
| |
| [heading Complexity] |
| |
| [:O(N), where N is the number of bytes parsed] |
| |
| [heading Example] |
| |
| [note The test harness for the example(s) below is presented in the |
| __qi_basics_examples__ section.] |
| |
| [reference_qi_big_binary] |
| |
| [endsect] |
| |
| [endsect] |