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
Generator Directives Controlling the Maximum Field Width (maxwidth[])
Description

The maxwidth[] directive allows to limit (truncate) the overall length of the output generated by the embedded generator.

Header
// forwards to <boost/spirit/home/karma/directive/maxwidth.hpp>
#include <boost/spirit/include/karma_maxwidth.hpp>

Also, see Include Structure.

Name

boost::spirit::maxwidth // alias: boost::spirit::karma::maxwidth

Model of

UnaryGenerator

Notation

a

A generator object

A

Attribute type of the generator a

num

Numeric literal, any unsigned integer value, or a Lazy Argument that evaluates to an unsigned integer value

Expression Semantics

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

Expression

Semantics

maxwidth[a]

Limit the overall length of the emitted output of the embedded generator (including characters generated by automatic delimiting) to the number of characters as defined by the preprocessor constant BOOST_KARMA_DEFAULT_FIELD_MAXWIDTH. Any additional output is truncated. The directive succeeds as long as the embedded generator succeeded (unless the underlying output stream reports an error).

maxwidth(num)[a]

Limit the overall length of the emitted output of the embedded generator (including characters generated by automatic delimiting) to the number of characters as defined by num. Any additional output is truncated. The directive succeeds as long as the embedded generator succeeded (unless the underlying output stream reports an error).

[Note] Note

The maxwidth[] generator directive does not pad the generated output to fill the specified column width. If the emitted output is shorter than the specified (or implied) column width, the generated output will be more narrow than the column width.

If the output needs to always be equal to a specified column width, use one of the alignment directives left-align[], center[], or right_align[], for instance:

maxwidth(8)[left_align(8)["1234"]]

which will output: "1234 " (without the quotes).

Attributes

See Compound Attribute Notation.

Expression

Attribute

maxwidth[a]

a: A --> maxwidth[a]: A
a: Unused --> maxwidth[a]: Unused

maxwidth(num)[a]

a: A --> maxwidth(num)[a]: A
a: Unused --> maxwidth(num)[a]: Unused

Complexity

The overall complexity of the generator directive maxwidth[] is defined by the complexity of its embedded generator. The complexity of the directive itself is O(N), where N is the number of characters generated by the maxwidth directive.

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 <iostream>
#include <string>

Some using declarations:

using boost::spirit::karma::double_;
using boost::spirit::karma::maxwidth;
using boost::spirit::karma::left_align;
using boost::spirit::karma::right_align;

Basic usage of maxwidth generator directive:

test_generator("01234", maxwidth(5)["0123456789"]);
test_generator("  012", maxwidth(5)[right_align(12)["0123456789"]]);
test_generator("0123    ", maxwidth(8)[left_align(8)["0123"]]);


PrevUpHomeNext