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

Store a Parsed Attribute Value into a Container (Qi)

Boost , Spirit 2.5.2 , Store Parsed Attribute Values into a Container (Qi)

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
push_back_container

Шаблон<push_back_container>— это тип, используемый в качестве точки настройки атрибута. На него ссылаются.Qiповторяющиеся парсеры (Kleene,Plus,ListиRepeat) для хранения парированного значения атрибута в контейнере.

Module Headers
#include <boost/spirit/home/support/container.hpp>

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

[Note]Note

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

Namespace

Имя

<boost::spirit::traits>

Synopsis
template <typename Container, typename Attrib, typename Enable>
struct push_back_container
{
    static bool call(Container& c, Attrib const& val);
};
Template parameters

Параметр

Описание

по умолчанию

<Container>

Нет

Attrib

Тип,<Attrib>- это тот, который возвращается из точки настройки<traits::container_value>и представляет значение атрибута, которое должно храниться в контейнере типа<Container>

.

Нет

<Enable>

void

Notation

C

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

c

Тип контейнера<C>.

<Attrib>

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

attr

Свойственный тип<Attrib>.

T1, T2, ...

Произвольные типы

Expression Semantics

выражение

Семантика

push_back_container<C, Attrib>::call(c, attr)

Predefined Specializations

Духпредопределяет специализацию этой точки настройки для нескольких типов. В следующей таблице перечислены эти типы вместе с выставленными типами и соответствующей семантикой:

Параметры шаблонов

Семантика

C, Attrib

c.insert(c.end(), attr).

boost::optional<C>, Attrib

Если предоставленный экземпляр<boost::optional<>>не инициализирован, вызовите соответствующую инициализацию и затем примените точку настройки<push_back_container<C,Attrib>>, рассматривая экземпляр, удерживаемый факультативным (типа<C>), как контейнер для хранения атрибута.

boost::variant<T1, T2, ...>, Attrib

mpl::true_, push_back_container<TN, Attrib>, рассматривая экземпляр, удерживаемый вариантом (типа TN), как контейнер для хранения атрибут in. В противном случае это вызовет утверждение.

unused_type

Ничего не делать.

When to Implement

Точка настройки<push_back_container>должна быть реализована для конкретного типа, когда этот тип должен использоваться в качестве атрибута вместо контейнера STL. Он применим только для парсеровSpirit.Qi. Как правило, он должен быть реализован всякий раз, когда определенный тип должен быть передан в качестве атрибута парсера, обычно обнажающего контейнер STL, и если тип не обнажает интерфейс контейнера STL (т.е. никакая функция не эквивалентна<c.insert(c.end(),attr)>). Эти компоненты имеют правило распространения атрибутов в виде:

a: A --> Op(a): vector<A>

где<Op(a)>означает любую осмысленную операцию на компоненте<a>.

Related Attribute Customization Points

Если эта точка настройки реализована, могут потребоваться также следующие другие точки настройки.

Имя

Когда внедрять

<traits::container_value>

<traits::clear_value>

Example

Вот пример реализации по умолчанию.<traits::container_value>Точка настройки, предоставляемая библиотекой:

template <typename Container, typename T, typename Enable/* = void*/>
struct push_back_container
{
    static bool call(Container& c, T const& val)
    {
        c.insert(c.end(), val);
        return true;
    }
};

Этот шаблон инстанцируется библиотекой в соответствующих местах при использовании поставляемого контейнера и типов элементов в качестве аргументов шаблона. Функция<call()>элемента будет вызываться всякий раз, когда элемент должен быть добавлен в поставляемый контейнер.

Следующий пример показывает предопределенную специализацию<unused_type>:

template <typename Container>
bool push_back(Container&, unused_type)
{
    return true;
}

Определяет функцию пустого элемента<call()>.


PrevUpHomeNext

Статья Store a Parsed Attribute Value into a Container (Qi) раздела Spirit 2.5.2 Store Parsed Attribute Values into a Container (Qi) может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Store Parsed Attribute Values into a Container (Qi) ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 23:18:33/0.0077731609344482/0