...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
The little native endianness generators described in this section are used to emit binary byte streams laid out conforming to the little 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 little 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 little 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 little endian representation. This generator never fails (unless the underlying output stream reports an error). |
|
Output the binary representation of the mandatory float attribute in little endian representation. This generator never fails (unless the underlying output stream reports an error). |
|
Output the binary representation of the mandatory double attribute in little 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 little 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 little 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 little endian representation. This generator never fails (unless the underlying output stream reports an error). |
|
Output the binary representation of the immediate float parameter in little endian representation. This generator never fails (unless the underlying output stream reports an error). |
|
Output the binary representation of the immediate double parameter in little 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/phoenix/core.hpp> #include <boost/phoenix/operator.hpp> #include <boost/fusion/include/std_pair.hpp> #include <boost/proto/deep_copy.hpp> #include <iostream> #include <string>
Some using declarations:
using boost::spirit::karma::little_word; using boost::spirit::karma::little_dword; using boost::spirit::karma::little_qword;
Basic usage of the little binary generators:
test_binary_generator("\x01\x02", 2, little_word(0x0201)); test_binary_generator("\x01\x02\x03\x04", 4, little_dword(0x04030201)); test_binary_generator("\x01\x02\x03\x04\x05\x06\x07\x08", 8, little_qword(0x0807060504030201LL)); test_binary_generator_attr("\x01\x02", 2, little_word, 0x0201); test_binary_generator_attr("\x01\x02\x03\x04", 4, little_dword, 0x04030201); test_binary_generator_attr("\x01\x02\x03\x04\x05\x06\x07\x08", 8, little_qword, 0x0807060504030201LL);