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

Determine Whether a Component Handles Container Attributes (Qi and Karma)

Boost , Spirit 2.5.2 , Customization of Spirit's Attribute Handling

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
handles_container

Шаблон<handles_container>является метафункцией шаблона, используемой в качестве точки настройки атрибута. На него ссылаются.ЦиПоследовательность(<>>>) иКармаПоследовательность (<<<>)операторы для того, чтобы определить, обрабатывает ли элемент последовательности (компонент) атрибуты контейнера непосредственно. Эта точка настройки используется только для атрибутов контейнера и только в том случае, если последовательность совместима с атрибутом поставляемого контейнера.

Если компонент, который является частью последовательности, способен обрабатывать атрибут контейнера непосредственно, последовательность передает атрибут компоненту без какого-либо дополнительного действия. ВSpirit.Qiкомпонент использует атрибут для непосредственного хранения всех соответствующих атрибутов. Вдухе. Кармакомпонент генератора извлекает из этого атрибута атрибуты, необходимые для генерации выхода.

Если компонент, который является частью последовательности, не способен обрабатывать атрибуты контейнера, вSpirit.Qiпоследовательность передает новый экземпляр атрибутов контейнера<value_type>парсерному компоненту, вставляя результат в атрибут от имени парсерного компонента. Вдухе. Кармапоследовательность извлекает следующий элемент контейнера от имени компонента генератора и передает ему извлеченное значение.

Header
#include <boost/spirit/home/support/handles_container.hpp>

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

[Note] Note

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

Namespace

Имя

<boost::spirit::traits>

Synopsis
template <
    typename Component, typename Attribute, typename Context,
    typename Iterator, typename Enable>
struct handles_container
{
    <unspecified>;
};
Template parameters

Параметр

Описание

по умолчанию

<Component>

Тип компонента<Component>, который необходимо проверить, обрабатывает ли он атрибуты контейнера непосредственно.

Нет

<Attribute>

Тип атрибута<Attribute>передается оператору последовательности.

Нет

<Context>

Это тип текущего контекста исполнения компонента.

<unused_type>

<Iterator>

Тип,<Iterator>является типом итераторов, используемых для вызова компонента.

<unused_type>

<Enable>

Параметр шаблона помощника, используемый для выборочного включения или отключения определенных специализаций<is_container>с использованием SFINAE (то есть<boost::enable_if>или<boost::disable_if>).

<void>

Notation

Component

Тип компонента, подлежащий проверке, обрабатывает ли он непосредственно атрибуты контейнера в контексте последовательностей.

Attribute

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

T1, T2, ...

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

Expression Semantics

выражение

Семантика

<handles_container<Component,Attribute>::type>

Результат метафункции, оценивающей до<mpl::true_>, если данный тип компонента<Component>обрабатывает атрибуты контейнера непосредственно,<mpl::false_>иначе. Как правило, любая реализация<handles_container>должна вести себя так, как если бы это былабулева постоянная MPL.

Predefined Specializations

Духпредопределяет специализацию этой точки настройки для нескольких типов. В следующей таблице перечислены эти типы вместе с условиями, для которых соответствующие специализации будут оцениваться до<mpl::true_>(см.MPL Boolean Constant):

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

Семантика

<Component><Attribute>

Всегда возвращает<mpl::false_>(по умолчанию).

<rule<Iterator, T1, T2, T3, T4>>,<Attribute>

Возвращается<is_container<A>>, где<A>является атрибутом, раскрытым правиломДух.QiиДух.Karma

.

<grammar<Iterator, T1, T2, T3, T4>>,<Attribute>

Возвращается<is_container<A>>, где<A>является атрибутом, раскрытым грамматикойSpirit.QiиSpirit.Karma.

When to implement

Точка настройки<handles_container>должна быть реализована для конкретного типа, когда этот тип непосредственно обрабатывает атрибуты контейнера. Он применим для парсеровSpirit.Qiи генераторовSpirit.Karma. Она должна быть реализована только в редких случаях.


PrevUpHomeNext

Статья Determine Whether a Component Handles Container Attributes (Qi and Karma) раздела Spirit 2.5.2 Customization of Spirit's Attribute Handling может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Customization of Spirit's Attribute Handling ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 01:44:18/0.0046119689941406/0