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

Struct template external_transforms

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Reference

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

Struct template external_transforms

boost::proto::external_transforms — A map from grammars to transforms, used as a way to externally associate transforms.

Synopsis

// In header: <boost/proto/transform/when.hpp>
template<typename... When> 
struct external_transforms {
  // types
  typedef mpl::map< typename to_mpl_pair< When >::type... > map_type;  // For exposition only.
  // member classes/structs/unions
  template<typename Grammar> 
  struct when :
     proto::otherwise< typename mpl::at< map_type, Grammar >::type >
  {
  };
};

Description

Иногда желательно определить грамматику, которая может быть настроена с различными наборами преобразований. Для этого, где вы обычно указываете преобразование в грамматике, вы можете вместо этого поставить<proto::external_transform>; например:<proto::when< some_grammar, proto::external_transform >>. Затем, вызывая грамматику, вы можете пройти пример<proto::external_transforms>в качестве параметра данных. Когда выражение совпадает<some_grammar>, Proto будет искать преобразование аппроприта в параметре данных, используя<some_grammar>в качестве ключа.

struct int_terminal
  : proto::terminal<int>
{};
struct char_terminal
  : proto::terminal<char>
{};
struct my_grammar
  : proto::or_<
        // The next two grammar rules are customization points.
        // The associated transforms are specified externally
        // using external_transforms below.
        proto::when< int_terminal, proto::external_transform >
      , proto::when< char_terminal, proto::external_transform >
      , proto::when<
            proto::plus< my_grammar, my_grammar >
          , proto::fold< proto::_, int(), my_grammar >
        >
    >
{};
// Here is where the transforms are associated with the
// grammar rules above.
struct my_transforms
  : proto::external_transforms<
        proto::when<int_terminal, print(proto::_value)>
      , proto::when<char_terminal, print(proto::_value)>
    >
{};
// ...
proto::literal<int> i(1);
proto::literal<char> c('a');
my_transforms trx;
// Evaluate "i+c" using my_grammar with the specified transforms:
my_grammar()(i + c, 0, trx);
// If you would also like to pass arbitrary data along with the
// transforms, you can use a transform environment, as so:
my_grammar()(i + c, 0, (proto::data = 42, proto::transforms = trx));


PrevUpHomeNext

Статья Struct template external_transforms раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Reference ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 21:14:48/0.0064170360565186/0