Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Generator Directive for Temporary Output Buffering (buffer[])

Boost , Spirit 2.5.2 , Generator Directives

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
Description

Все компоненты генератора (кромеАльтернативного (<|>)генератора) передают генерируемый ими выход непосредственно в основной выходной поток. Если генератор выходит из строя на полпути, выход, генерируемый до сих пор, не откатывается назад. Директива буферного генератора позволяет избежать этого нежелательного вывода. Он временно перенаправляет выход, производимый встроенным генератором, в буфер. Этот буфер смывается в основной поток только после того, как встроенный генератор преуспел, но отбрасывается в противном случае.

Header
// forwards to <boost/spirit/home/karma/directive/buffer.hpp>
#include <boost/spirit/include/karma_buffer.hpp>

См. такжеВключите структуру.

Имя

boost::spirit::buffer // alias: boost::spirit::karma::buffer

Model of

Notation

a

Объект генератора

A

Expression Semantics

Семантика выражения определяется только там, где она отличается от или не определена в<UnaryGenerator>.

выражение

Семантика

buffer[a]

[Tip]Tip

Если вы хотите добиться успеха буферизованного генератора независимо от результата встроенного генератора, просто заверните<buffer[a]>в дополнительную опцию:<-buffer[a]>(см.Факультативная<->).

Attributes

См.Составные обозначения атрибутов.

выражение

атрибут

buffer[a]

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

Complexity

Общая сложность директивы буферного генератора определяется сложностью встроенного генератора. Сложность самого генератора директив буферизации — O(N), где N — количество буферизованных символов.

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

Основное использование директивы буферного генератора. Он показывает, как частичный выход, генерируемый в первом примере, не отображается в генерируемом выходе, поскольку генератор плюс выходит из строя (нет данных, см.Plus (унитарный<+>)).

std::vector<double> v;                // empty container
test_generator_attr("", -buffer['[' << +double_ << ']'], v);
v.push_back(1.0);                     // now, fill the container
v.push_back(2.0);
test_generator_attr("[1.02.0]", buffer['[' << +double_ << ']'], v);


PrevUpHomeNext

Статья Generator Directive for Temporary Output Buffering (buffer[]) раздела Spirit 2.5.2 Generator Directives может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Generator Directives ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 09:07:30/0.0064210891723633/0