66 lines
1.8 KiB
Plaintext
66 lines
1.8 KiB
Plaintext
/*=============================================================================
|
|
Copyright (c) 2005-2010 Joel de Guzman
|
|
Copyright (c) 2010 Eric Niebler
|
|
|
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
==============================================================================*/
|
|
#ifndef BOOST_PHOENIX_CORE_DOMAIN_HPP
|
|
#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
|
|
{
|
|
template <typename Expr>
|
|
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_default_domain
|
|
: proto::domain<
|
|
proto::basic_default_generator
|
|
, proto::_
|
|
, proto::basic_default_domain
|
|
>
|
|
{
|
|
template <typename T>
|
|
struct as_child
|
|
//: proto_base_domain::as_expr<T> // proto lambda example.
|
|
: as_expr<T>
|
|
{};
|
|
};
|
|
|
|
struct phoenix_domain
|
|
: proto::domain<
|
|
phoenix_generator
|
|
, meta_grammar
|
|
, proto::basic_default_domain
|
|
>
|
|
{
|
|
template <typename T>
|
|
struct as_child
|
|
//: proto_base_domain::as_expr<T> // proto lambda example.
|
|
: as_expr<T>
|
|
{};
|
|
};
|
|
}}
|
|
|
|
#endif
|