123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333 |
- [/==============================================================================
- Copyright (C) 2001-2011 Joel de Guzman
- Copyright (C) 2001-2011 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 Parsers]
- 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 Endianness Parsers]
- [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`]]
- [[`boost::spirit::bin_float // alias: boost::spirit::qi::bin_float`]]
- [[`boost::spirit::bin_double // alias: boost::spirit::qi::bin_double`]]
- ]
- [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.]]
- [[`f`] [A float binary value or a __qi_lazy_argument__ that
- evaluates to a float binary value. This value is always
- in native endian.]]
- [[`d`] [A double binary value or a __qi_lazy_argument__ that
- evaluates to a double 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.]]
- [[`bin_float`] [Matches any float native endian binary.]]
- [[`bin_double`] [Matches any double 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.]]
- [[`bin_float(f)`] [Matches an exact float native endian binary.]]
- [[`bin_double(d)`] [Matches an exact double 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`]]
- [[`bin_float`] [`float`]]
- [[`bin_double`] [`double`]]
- [[`byte_(b)`] [__unused__]]
- [[`word(w)`] [__unused__]]
- [[`dword(dw)`] [__unused__]]
- [[`qword(qw)`] [__unused__]]
- [[`bin_float(f)`] [__unused__]]
- [[`bin_double(d)`] [__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 Endianness Parser]
- [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` ]]
- [[`boost::spirit::little_bin_float // alias: boost::spirit::qi::little_bin_float` ]]
- [[`boost::spirit::little_bin_double // alias: boost::spirit::qi::little_bin_double` ]]
- ]
- [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.]]
- [[`f`] [A float binary value or a __qi_lazy_argument__ that
- evaluates to a float binary value. This value is always
- in native endian.]]
- [[`d`] [A double binary value or a __qi_lazy_argument__ that
- evaluates to a double 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_bin_float`] [Matches any float little endian binary.]]
- [[`little_bin_double`] [Matches any double 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.]]
- [[`little_bin_float(f)`] [Matches an exact float little endian binary.]]
- [[`little_bin_double(d)`] [Matches an exact double 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_bin_float`] [`float`]]
- [[`little_bin_double`] [`double`]]
- [[`little_word(w)`] [__unused__]]
- [[`little_dword(dw)`] [__unused__]]
- [[`little_qword(qw)`] [__unused__]]
- [[`little_bin_float(f)`] [__unused__]]
- [[`little_bin_double(d)`] [__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 Endianness Parsers]
- [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` ]]
- [[`boost::spirit::big_bin_float // alias: boost::spirit::qi::big_bin_float` ]]
- [[`boost::spirit::big_bin_double // alias: boost::spirit::qi::big_bin_double` ]]
- ]
- [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.]]
- [[`f`] [A float binary value or a __qi_lazy_argument__ that
- evaluates to a float binary value. This value is always
- in native endian.]]
- [[`d`] [A double binary value or a __qi_lazy_argument__ that
- evaluates to a double 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_bin_float`] [Matches any float big endian binary.]]
- [[`big_bin_double`] [Matches any double 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.]]
- [[`big_bin_float(f)`] [Matches an exact float big endian binary.]]
- [[`big_bin_double(d)`] [Matches an exact double 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_bin_float`] [`float`]]
- [[`big_bin_double`] [`double`]]
- [[`big_word(w)`] [__unused__]]
- [[`big_dword(dw)`] [__unused__]]
- [[`big_qword(qw)`] [__unused__]]
- [[`big_bin_float(f)`] [__unused__]]
- [[`big_bin_double(d)`] [__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]
|