...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
The big native endianness generators described in this section are used to emit binary byte streams laid out conforming to the big endianness byte order.
// forwards to <boost/spirit/home/karma/binary.hpp> #include <boost/spirit/include/karma_binary.hpp>
Also, see Include Structure.
Name |
---|
|
|
|
|
|
Note | |
---|---|
The generators |
Notation
w
A 16 bit binary value or a Lazy Argument that evaluates to a 16 bit binary value. This value is always interpreted using native endianness.
dw
A 32 bit binary value or a Lazy Argument that evaluates to a 32 bit binary value. This value is always interpreted using native endianness.
qw
A 64 bit binary value or a Lazy Argument that evaluates to a 64 bit binary value. This value is always interpreted using native endianness.
f
A float binary value or a Lazy Argument that evaluates to a float binary value. This value is always interpreted using native endianness.
d
A double binary value or a Lazy Argument that evaluates to a double binary value. This value is always interpreted using native endianness.
Semantics of an expression is defined only where it differs from, or
is not defined in PrimitiveGenerator
.
Expression |
Description |
---|---|
|
Output the binary representation of the least significant 16 bits of the mandatory attribute in big endian representation. This generator never fails (unless the underlying output stream reports an error). |
|
Output the binary representation of the least significant 32 bits of the mandatory attribute in big endian representation. This generator never fails (unless the underlying output stream reports an error). |
|
Output the binary representation of the least significant 64 bits of the mandatory attribute in big endian representation. This generator never fails (unless the underlying output stream reports an error). |
|
Output the binary representation of the mandatory float attribute in big endian representation. This generator never fails (unless the underlying output stream reports an error). |
|
Output the binary representation of the mandatory double attribute in big endian representation. This generator never fails (unless the underlying output stream reports an error). |
|
Output the binary representation of the least significant 16 bits of the immediate parameter in big endian representation. This generator never fails (unless the underlying output stream reports an error). |
|
Output the binary representation of the least significant 32 bits of the immediate parameter in big endian representation. This generator never fails (unless the underlying output stream reports an error). |
|
Output the binary representation of the least significant 64 bits of the immediate parameter in big endian representation. This generator never fails (unless the underlying output stream reports an error). |
|
Output the binary representation of the immediate float parameter in big endian representation. This generator never fails (unless the underlying output stream reports an error). |
|
Output the binary representation of the immediate double parameter in big endian representation. This generator never fails (unless the underlying output stream reports an error). |
Expression |
Attribute |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
O(N), where N is the number of bytes emitted by the binary generator
Note | |
---|---|
The test harness for the example(s) below is presented in the Basics Examples section. |
Some includes:
#include <boost/spirit/include/karma.hpp> #include <boost/spirit/include/support_utree.hpp> #include <boost/spirit/include/phoenix_core.hpp> #include <boost/spirit/include/phoenix_operator.hpp> #include <boost/fusion/include/std_pair.hpp> #include <iostream> #include <string>
Some using declarations:
using boost::spirit::karma::big_word; using boost::spirit::karma::big_dword; using boost::spirit::karma::big_qword;
Basic usage of the big binary generators:
test_binary_generator("\x02\x01", 2, big_word(0x0201)); test_binary_generator("\x04\x03\x02\x01", 4, big_dword(0x04030201)); test_binary_generator("\x08\x07\x06\x05\x04\x03\x02\x01", 8, big_qword(0x0807060504030201LL)); test_binary_generator_attr("\x02\x01", 2, big_word, 0x0201); test_binary_generator_attr("\x04\x03\x02\x01", 4, big_dword, 0x04030201); test_binary_generator_attr("\x08\x07\x06\x05\x04\x03\x02\x01", 8, big_qword, 0x0807060504030201LL);