![]() |
![]() ![]() ![]() ![]() |
![]() |
Transform an Attribute to a Different Type (Qi and Karma)Boost , Spirit 2.5.2 , Customization of Spirit's Attribute Handling
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Note |
|---|---|
Интерфейс этой точки настройки был изменен с помощью Boost V1.44. Мы добавили< |
#include <boost/spirit/home/support/attributes.hpp>
См. такжеВключить структуру.
![]() |
Note |
|---|---|
Этот файл заголовка не должен быть включен непосредственно какой-либо пользовательской программой, поскольку он обычно включается другими файлами заголовка Spirit, основанными на его содержании. |
|
Имя |
|---|
< |
template <typename Exposed, typename Transformed, typename Domain, typename Enable> struct transform_attribute { typedef <unspecified> type; static type pre(Exposed& val); static void post(Exposed& val, type attr); // Qi only static void fail(Exposed&); // Qi only };
|
Параметр |
Описание |
по умолчанию |
|---|---|---|
< |
Тип атрибута подается на компонент, который должен быть преобразован. |
Нет |
< |
Тип атрибута, ожидаемый компонентом в результате преобразования. |
Нет |
< |
Домен подбиблиотеки шаблон инстанцируется в. Обычно это либо< |
Нет |
< |
Параметр шаблона помощника, используемый для выборочного включения или отключения определенных специализаций< |
< |
Notation
ExposedТип<Exposed>является типом атрибута, переданного пользователем.
Transformed<Transformed>— тип атрибута, передаваемого в правую сторону<rule>(встроенный компонент<attr_cast>).
DomainДомен подбиблиотеки шаблон инстанцируется в. Как правило, это<qi::domain>или<karma::domain>.
exposedПример типа<Exposed>.
transformedПример типа<Transformed>.
|
выражение |
Семантика |
|---|---|
< |
Оценивает тип, который будет использоваться в результате преобразования (для передачи на правую сторону< |
<typetransform_attribute<Exposed,Transformed,Domain>::pre(exposed)> |
Делайте< |
<voidtransform_attribute<Exposed,Transformed,Domain>::post(exposed,transformed)> |
Do< |
<voidtransform_attribute<Exposed,Transformed,Domain>::fail(exposed)> |
Обработка неисправных операций разбора правого бокового компонента для< |
|
Параметры шаблона |
Семантика |
|---|---|
< |
< |
< |
< |
< |
< |
< |
< |
< |
(вКарматолько)< |
< |
(вКарматолько)< |
< |
(вКарматолько)< |
< |
< |
< |
< |
Точка настройки<transform_attribute>должна быть реализована для конкретной пары типов, когда тип атрибута, поставляемый в<rule>или<attr_cast>, не может автоматически трансформироваться в тип атрибута, ожидаемый правой стороной<rule>(встроенный компонент<attr_cast>), поскольку реализация по умолчанию, как показано выше, не применима. Примером может служить то, что тип<Transformed>не может быть построен из типа<Exposed>.
Статья Transform an Attribute to a Different Type (Qi and Karma) раздела Spirit 2.5.2 Customization of Spirit's Attribute Handling может быть полезна для разработчиков на c++ и boost.
:: Главная :: Customization of Spirit's Attribute Handling ::
реклама |