![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Attribute Transformation Pseudo Generator (attr_cast)Boost , Spirit 2.5.2 , Auxiliary Generators
|
Имя |
---|
< |
template <Exposed, Transformed> <unspecified> attr_cast(<unspecified>);
Параметр |
Описание |
по умолчанию |
---|---|---|
< | Тип атрибута, предоставленного< | < |
< | Тип атрибута, ожидаемого встроенным генератором< | < |
<attr_cast
>является производным. Его можно вызвать с помощью следующих схем:
attr_cast(g) attr_cast<Exposed>(g) attr_cast<Exposed, Transformed>(g)
В зависимости от того, какой из типов атрибутов может быть выведен правильно, если не указано явно.
Notation
g
Объект-генератор.
Семантика выражения определяется только там, где она отличается от или не определена в<UnaryGenerator
>.
выражение |
Семантика |
---|---|
< | Создайте компонент, вызывающий генератор< |
< | Создайте компонент, вызывающий генератор< |
< | Создайте компонент, вызывающий генератор< |
выражение |
атрибут |
---|---|
< | < |
< | < |
< | < |
Сложность этого компонента полностью определяется сложностью встроенного генератора<
g
>.
![]() | 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::int_;
Пример ссылается на структуру данных<int_data
>, которая нуждается в специализации точки настройки<traits::transform_attribute
>:
// this is just a test structure we want to use in place of an int struct int_data { int i; }; // we provide a custom attribute transformation to allow its use as an int namespace boost { namespace spirit { namespace traits { template <> struct transform_attribute<int_data const, int, karma::domain> { typedef int type; static int pre(int_data const& d) { return d.i; } }; }}}
Теперь мы используем псевдогенератор<attr_cast
>для вызова преобразования атрибутов:
int_data d = { 1 }; test_generator_attr("1", boost::spirit::karma::attr_cast(int_), d);
Статья Attribute Transformation Pseudo Generator (attr_cast) раздела Spirit 2.5.2 Auxiliary Generators может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Auxiliary Generators ::
реклама |