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

Optional Generator (-a)

Boost , Spirit 2.5.2 , Generator Operators

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/operator/optional.hpp>
#include <boost/spirit/include/karma_optional.hpp>

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

Model of
Expression Semantics

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

выражение

Семантика

<-a>

Генератор<a>выполняется в зависимости от наличия атрибута. Дополнительный генератор преуспевает, если его встроенный генератор преуспевает (если основной выходной поток не сообщает об ошибке).

Attributes

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

выражение

атрибут

<-a>(факультативно, унарно<->)

a: A --> -a: optional<A>
a: Unused --> -a: Unused

[Important]Important

В таблице выше используется<optional<A>>только в качестве заполнителя.<optional<A>>обозначает тип данных<boost::optional<A>>.

Факультативный генератор будет выполнять свой встроенный генератор один раз, если предоставленный атрибут имеет действительное значение. Он передает значение, удерживаемое в его атрибуте, встроенному генератору.

Важно отметить, что необязательный генератор не выполняет никакой буферизации вывода, генерируемого его встроенными элементами. Это означает, что любой неисправный элемент может уже генерировать некоторый выход, которыйнеоткатился назад.

[Tip]Tip

Самый простой способ заставить необязательный генератор вести себя так, как если бы он делал буферизацию, — это завернуть его в буферную директиву (см.<buffer>).:

buffer[-a]

нене будет генерировать какой-либо выход в случае выхода из строя генератора<-a>.

Complexity

Общая сложность опционального генератора определяется сложностью его встроенного генератора. Сложность опционального генератора сама по себе O(1).

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_;

Базовое использование дополнительного генератора:

boost::optional<double> val(1.0);
test_generator_attr("1.0", -double_, val);
test_generator_attr("2.0", -double_, 2.0);

Использование и результат работы пустого опционального генератора:

boost::optional<double> val;          // empty optional
test_generator_attr("", -double_, val);


PrevUpHomeNext

Статья Optional Generator (-a) раздела Spirit 2.5.2 Generator Operators может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 02:42:09/0.0060710906982422/1