Mercurial > hg > vamp-build-and-test
view DEPENDENCIES/generic/include/boost/spirit/home/support/argument_expression.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children | c530137014c0 |
line wrap: on
line source
/*============================================================================= Copyright (c) 2011 Thomas Heller Copyright (c) 2001-2011 Hartmut Kaiser Copyright (c) 2011 Thomas Heller 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) ==============================================================================*/ #if !defined(BOOST_SPIRIT_ARGUMENT_MARCH_22_2011_0939PM) #define BOOST_SPIRIT_ARGUMENT_MARCH_22_2011_0939PM #include <boost/spirit/include/phoenix_core.hpp> namespace boost { namespace spirit { template <int N> struct argument; template <typename Dummy> struct attribute_context; namespace expression { #ifndef BOOST_SPIRIT_USE_PHOENIX_V3 template <int N> struct argument { typedef phoenix::actor<spirit::argument<N> > type; static type make() { return spirit::argument<N>(); } }; template <typename Dummy> struct attribute_context { typedef phoenix::actor<spirit::attribute_context<Dummy> > type; static type make() { return spirit::attribute_context<Dummy>(); } }; #else template <int N> struct argument : phoenix::expression::terminal<spirit::argument<N> > { typedef typename phoenix::expression::terminal< spirit::argument<N> >::type type; static type make() { type const e = {{{}}}; return e; } }; template <typename Dummy> struct attribute_context : phoenix::expression::terminal<spirit::attribute_context<Dummy> > { typedef typename phoenix::expression::terminal< spirit::attribute_context<Dummy> >::type type; static type make() { type const e = {{{}}}; return e; } }; #endif } }} #ifdef BOOST_SPIRIT_USE_PHOENIX_V3 namespace boost { namespace phoenix { namespace result_of { template <typename Dummy> struct is_nullary<custom_terminal<spirit::attribute_context<Dummy> > > : mpl::false_ {}; template <int N> struct is_nullary<custom_terminal<spirit::argument<N> > > : mpl::false_ {}; } template <typename Dummy> struct is_custom_terminal<spirit::attribute_context<Dummy> > : mpl::true_ {}; template <int N> struct is_custom_terminal<spirit::argument<N> > : mpl::true_ {}; template <typename Dummy> struct custom_terminal<spirit::attribute_context<Dummy> > : proto::call< v2_eval( proto::make<spirit::attribute_context<Dummy>()> , proto::call< functional::env(proto::_state) > ) > {}; template <int N> struct custom_terminal<spirit::argument<N> > : proto::call< v2_eval( proto::make<spirit::argument<N>()> , proto::call< functional::env(proto::_state) > ) > {}; }} #endif // BOOST_SPIRIT_USE_PHOENIX_V3 #endif