![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Alignment Generator Directives (left_align[], center[], right_align[])Boost , Spirit 2.5.2 , Generator Directives
|
Имя |
---|
boost::spirit::left_align //
alias: boost::spirit::karma::left_align |
|
|
Notation
a
Объект генератора
pad
Объект-генератор или Ленивый аргумент , который оценивает объект-генератор
A
, Pad
Типы атрибутов генераторов a
и pad
width
Буквальное число, любое неподписанное целочисленное значение или Ленивый аргумент , который оценивает неподписанное целочисленное значение
Семантика выражения определяется только там, где она отличается от или не определена в UnaryGenerator
.
Выражение |
Семантика |
---|---|
| Генерировать |
| Генерировать |
left_align(pad)[a] | Генерировать |
| Генерировать |
| Генерировать |
center(width)[a] | Генерировать |
| Генерировать |
| Генерировать |
| a
право выровнено в столбце ширины, как определено предпроцессором
постоянная BOOST_KARMA_DEFAULT_FIELD_LENGTH
(по умолчанию: 10), при использовании space
чтобы излучать необходимые падинги. Этот генератор работает так долго
как его встроенный генератор a
не потерпит неудачу (если только не основные отчеты потокового потока
ошибка).
|
| Генерировать |
| Генерировать |
| Генерировать |
![]() | Note |
---|---|
Ни одна из перечисленных выше директив генератора не ограничивает испускаемый выход до соответствующей ширины колонки. Если испускаемый выход длиннее указанной (или подразумеваемой) ширины колонки, генерируемый выход переполняет колонку вправо. Если выход должен быть ограничен заданной шириной столбца, используйте директиву maxwidth(8)[right_align(12)["1234567890"]] которые будут производиться (без котировок): " 123456" |
См. Сложная нотация атрибутов.
Выражение |
Атрибут |
---|---|
|
a: A --> left_align[a]: A a: Unused --> left_align[a]: Unused
|
|
a: A --> left_align(width)[a]: A a: Unused --> left_align(width)[a]: Unused
|
|
a: A, pad: Pad --> left_align(pad)[a]: A a: Unused, pad: Pad --> left_align(pad)[a]: Unused
|
| a: A, pad: Pad --> left_align(pad, width)[a]: A a: Unused, pad: Pad --> left_align(pad, width)[a]: Unused a: A, pad: Pad --> left_align(pad, width)[a]: A a: Unused, pad: Pad --> left_align(pad, width)[a]: Unused [ORIG_END] --> |
|
a: A --> center[a]: A a: Unused --> center[a]: Unused
|
| a: A --> center(width)[a]: A a: Unused --> center(width)[a]: Unused a: A --> center(width)[a]: A a: Unused --> center(width)[a]: Unused [ORIG_END] --> |
center(pad)[] | a: A, pad: Pad --> center(pad)[a]: A a: Unused, pad: Pad --> center(pad)[a]: Unused a: A, pad: Pad --> center(pad)[a]: A a: Unused, pad: Pad --> center(pad)[a]: Unused [ORIG_END] --> |
| a: A, pad: Pad --> center(pad, width)[a]: A a: Unused, pad: Pad --> center(pad, width)[a]: Unused a: A, pad: Pad --> center(pad, width)[a]: A a: Unused, pad: Pad --> center(pad, width)[a]: Unused [ORIG_END] --> |
|
a: A --> right_align[a]: A a: Unused --> right_align[a]: Unused
|
|
a: A --> right_align(width)[a]: A a: Unused --> right_align(width)[a]: Unused
|
|
a: A, pad: Pad --> right_align(pad)[a]: A a: Unused, pad: Pad --> right_align(pad)[a]: Unused
|
right_align(pad, width)[] | a: A, pad: Pad --> right_align(pad, width)[a]: A a: Unused, pad: Pad --> right_align(pad, width)[a]: Unused a: A, pad: Pad --> right_align(pad, width)[a]: A a: Unused, pad: Pad --> right_align(pad, width)[a]: Unused [ORIG_END] --> |
Общая сложность директивы генератора выравнивания определяется сложностью его встроенного и навесного генератора. Сложность самого генератора директив левого выравнивания O(1). Сложность генераторов директив центра и правильного выравнивания O(N), где
N
- количество символов, излучаемых встроенными и накладными генераторами.
![]() | Note |
---|---|
Испытательный ремень для примера (примеров) ниже представлен в разделе Основные примеры. |
Некоторые включают:
#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>
Некоторые используют декларации:
using boost::spirit::karma::double_; using boost::spirit::karma::left_align; using boost::spirit::karma::center; using boost::spirit::karma::right_align;
Базовое использование генераторов выравнивания:
std::pair<double, double> p (1.0, 2.0); test_generator_attr("1.0 |2.0", left_align(8)[double_] << '|' << double_, p); test_generator_attr(" 1.0 |2.0", center(8)[double_] << '|' << double_, p); test_generator_attr(" 1.0|2.0", right_align(8)[double_] << '|' << double_, p);
Статья Alignment Generator Directives (left_align[], center[], right_align[]) раздела Spirit 2.5.2 Generator Directives может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Generator Directives ::
реклама |