Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext
Binary Big Endianness Generators
Description

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.

Header
// forwards to <boost/spirit/home/karma/binary.hpp>
#include <boost/spirit/include/karma_binary.hpp>

Also, see Include Structure.

Namespace

Name

boost::spirit::big_word // alias: boost::spirit::karma::big_word

boost::spirit::big_dword // alias: boost::spirit::karma::big_dword

boost::spirit::big_qword // alias: boost::spirit::karma::big_qword

boost::spirit::big_bin_float // alias: boost::spirit::karma::big_bin_float

boost::spirit::big_bin_double // alias: boost::spirit::karma::big_bin_double

[Note] Note

The generators big_qword and big_qword(qw) are 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).

Model of

PrimitiveGenerator

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.

Expression Semantics

Semantics of an expression is defined only where it differs from, or is not defined in PrimitiveGenerator.

Expression

Description

big_word

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).

big_dword

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).

big_qword

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).

big_bin_float

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).

big_bin_double

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).

big_word(w)

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).

big_dword(dw)

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).

big_qword(qw)

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).

big_bin_float(f)

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).

big_bin_double(d)

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).

Attributes

Expression

Attribute

big_word

boost::uint_least16_t, attribute is mandatory (otherwise compilation will fail)

big_dword

boost::uint_least32_t, attribute is mandatory (otherwise compilation will fail)

big_qword

boost::uint_least64_t, attribute is mandatory (otherwise compilation will fail)

big_bin_float

float, attribute is mandatory (otherwise compilation will fail)

big_bin_double

double, attribute is mandatory (otherwise compilation will fail)

big_word(w)

unused

big_dword(dw)

unused

big_qword(qw)

unused

big_bin_float(f)

unused

big_bin_double(d)

unused

Complexity

O(N), where N is the number of bytes emitted by the binary generator

Example
[Note] 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::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);


PrevUpHomeNext