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

Stream Based Generator API

Boost , Spirit 2.5.2 , Generator API

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

Библиотека предоставляет несколько стандартных манипуляторов ввода-выводаИнтеграцияДух. кармаПроизводственные мощности со стандартными выходными потоками. Эти генераторные манипуляторы имеют две формы. Первая форма,формат, конкатенирует выход, генерируемый вовлеченными компонентами, без вставки какого-либо вывода между ними. Второй формат_delimited, перемежает выход, генерируемый вовлеченными компонентами с использованием данного генератора разграничителя. Обе версии могут принимать атрибуты по (постоянной) ссылке, которые удерживают значения атрибутов на выходе.

Header
// forwards to <boost/spirit/home/karma/stream/format_manip.hpp>
#include <boost/spirit/include/karma_format.hpp>

Для вариадных атрибутов:

// forwards to <boost/spirit/home/karma/stream/format_manip_attr.hpp>
#include <boost/spirit/include/karma_format_attr.hpp>

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

Для функций API выводится правильный (соответствующий) тип генератора из поставляемого типа атрибута:

// forwards to <boost/spirit/home/karma/format_auto.hpp>
#include <boost/spirit/include/karma_format_auto.hpp>

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

Namespace

Имя

повысить::дух::карма::формат

повысить::дух::карма::формат_ограниченный

повысить::дух::карма::делимит_флаг::предлимит

повысить::дух::карма::делимит_флаг::не предопределять

Synopsis
namespace boost { namespace spirit { namespace karma
{
    template <typename Expr>
    inline <unspecified>
    format(
        Expr const& xpr);
    template <typename Expr
      , typename Attr1, typename Attr2, ..., typename AttrN>
    inline <unspecified>
    format(
        Expr const& xpr
      , Attr1 const& attr1, Attr2 const& attr2, ..., AttrN const& attrN);
    template <typename Expr, typename Delimiter>
    inline <unspecified>
    format_delimited(
        Expr const& expr
      , Delimiter const& d
      , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit = delimit_flag::dont_predelimit);
    template <typename Expr, typename Delimiter
      , typename Attr1, typename Attr2, ..., typename AttrN>
    inline <unspecified>
    format_delimited(
        Expr const& expr
      , Delimiter const& d
      , Attr1 const& attr1, Attr2 const& attr2, ..., AttrN const& attrN);
    template <typename Expr, typename Delimiter
      , typename Attr1, typename Attr2, ..., typename AttrN>
    inline <unspecified>
    format_delimited(
        Expr const& expr
      , Delimiter const& d
      , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit
      , Attr1 const& attr1, Attr2 const& attr2, ..., AttrN const& attrN);
}}}

Дух. КармаФункции генератора API на основе автоматического создания соответствующего типа генератора:

namespace boost { namespace spirit { namespace karma
{
    template <typename Attr, typename Delimiter>
    inline <unspecified>
    format_delimited(
        Attr const& attr
      , Delimiter const& d
      , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit = delimit_flag::dont_predelimit);
    template <typename Attr>
    inline <unspecified>
    format(
        Attr const& xpr);
}}}

Все вышеперечисленные функции возвращают стандартный экземпляр потокового манипулятора ввода-вывода (см.Манипуляторы), который при потоковой передаче на выходной поток приведет к генерации выходного сигнала, испускаемого встроеннымДухом. Кармаэкспрессия генератора. Любые ошибки, возникающие во время призыва Духа. Генераторы кармыбудут отражены в флаге состояния потоковstd::ios_base::будет установлен отказоустойчивый.

Максимальное количество поддерживаемых аргументов ограничено константой препроцессораSPIRIT_ARGUMENTS_LIMIT. Эта постоянная по умолчанию соответствует значению, определенному константой препроцессораPHOENIX_LIMIT(которая, в свою очередь, по умолчанию соответствует10).

[Note] Note

Вариадные манипуляторы с двумя или более атрибутами внутренне объединяют (постоянные) ссылки на все переданные атрибуты вслияние::вектори перенаправляют это как комбинированный атрибут соответствующему манипулятору, принимающему один атрибут.

Формат_ограниченныйманипуляторы, не принимающие явногоdelimit_flagв качестве одного из своих аргументов, не вызывают принятый делимитер перед началом генерации вывода из экспрессии генератора. Это можно сделать, используя другую версию этого манипулятора при прохожденииdelimit_flag:предопределитьсоответствующему аргументу.

Template parameters

Параметр

Описание

Expr

174 Выражение, которое может быть преобразовано в генератор кармы.

Делимитер

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

Аттр

Тип атрибута, используемый для создания соответствующего типа генератора.

Attr1,Attr2, ...,AttrN

Один или несколько атрибутов.


PrevUpHomeNext

Статья Stream Based Generator API раздела Spirit 2.5.2 Generator API может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 19:32:40/0.029340028762817/1