1 /*=============================================================================
2 Copyright (c) 2011 Thomas Heller
3 Copyright (c) 2001-2011 Hartmut Kaiser
4 Copyright (c) 2011 Thomas Heller
6 Distributed under the Boost Software License, Version 1.0. (See accompanying
7 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8 ==============================================================================*/
9 #if !defined(BOOST_SPIRIT_ARGUMENT_MARCH_22_2011_0939PM)
10 #define BOOST_SPIRIT_ARGUMENT_MARCH_22_2011_0939PM
12 #include <boost/phoenix/core/terminal.hpp>
13 #include <boost/phoenix/core/v2_eval.hpp>
14 #include <boost/proto/proto_fwd.hpp> // for transform placeholders
16 namespace boost { namespace spirit
21 template <typename Dummy>
22 struct attribute_context;
28 : phoenix::expression::terminal<spirit::argument<N> >
30 typedef typename phoenix::expression::terminal<
36 type const e = {{{}}};
41 template <typename Dummy>
42 struct attribute_context
43 : phoenix::expression::terminal<spirit::attribute_context<Dummy> >
45 typedef typename phoenix::expression::terminal<
46 spirit::attribute_context<Dummy>
51 type const e = {{{}}};
58 namespace boost { namespace phoenix
62 template <typename Dummy>
63 struct is_nullary<custom_terminal<spirit::attribute_context<Dummy> > >
68 struct is_nullary<custom_terminal<spirit::argument<N> > >
73 template <typename Dummy>
74 struct is_custom_terminal<spirit::attribute_context<Dummy> >
79 struct is_custom_terminal<spirit::argument<N> >
83 template <typename Dummy>
84 struct custom_terminal<spirit::attribute_context<Dummy> >
87 proto::make<spirit::attribute_context<Dummy>()>
89 functional::env(proto::_state)
96 struct custom_terminal<spirit::argument<N> >
99 proto::make<spirit::argument<N>()>
101 functional::env(proto::_state)