diff options
Diffstat (limited to 'boost/phoenix/core/domain.hpp')
-rw-r--r-- | boost/phoenix/core/domain.hpp | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/boost/phoenix/core/domain.hpp b/boost/phoenix/core/domain.hpp index ec11090916..6c438de97c 100644 --- a/boost/phoenix/core/domain.hpp +++ b/boost/phoenix/core/domain.hpp @@ -9,6 +9,9 @@ #define BOOST_PHOENIX_CORE_DOMAIN_HPP #include <boost/phoenix/core/limits.hpp> +#include <boost/proto/matches.hpp> +#include <boost/proto/transform/call.hpp> +#include <boost/proto/transform/when.hpp> #include <boost/proto/domain.hpp> namespace boost { namespace phoenix @@ -17,17 +20,30 @@ namespace boost { namespace phoenix struct actor; struct meta_grammar; - + + struct phoenix_generator + : proto::switch_<phoenix_generator> + { + + BOOST_PROTO_USE_BASIC_EXPR() + + template<typename Tag> + struct case_ + : proto::otherwise<proto::call<proto::pod_generator<actor>(proto::_)> > + {}; + }; + struct phoenix_domain : proto::domain< - proto::pod_generator<actor> + phoenix_generator , meta_grammar , proto::basic_default_domain > { template <typename T> struct as_child - : as_expr<T> + : proto_base_domain::as_expr<T> // proto lambda example. + // : as_expr<T> {}; }; }} |