Mercurial > hg > vamp-build-and-test
view DEPENDENCIES/generic/include/boost/spirit/home/phoenix/scope/local_variable.hpp @ 64:6acf95ebd97d
Update tester subrepo
author | Chris Cannam |
---|---|
date | Mon, 22 Sep 2014 11:44:42 +0100 |
parents | 2665513ce2d3 |
children |
line wrap: on
line source
/*============================================================================= Copyright (c) 2001-2007 Joel de Guzman Copyright (c) 2004 Daniel Wallin 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 PHOENIX_SCOPE_LOCAL_VARIABLE_HPP #define PHOENIX_SCOPE_LOCAL_VARIABLE_HPP #include <boost/spirit/home/phoenix/core/limits.hpp> #include <boost/spirit/home/phoenix/detail/local_reference.hpp> #include <boost/spirit/home/phoenix/scope/detail/local_variable.hpp> #include <boost/spirit/home/phoenix/core/actor.hpp> #include <boost/mpl/bool.hpp> namespace boost { namespace phoenix { template <typename Key> struct local_variable { typedef Key key_type; // This will prevent actor::operator()() from kicking in. // Actually, we do not need all actor::operator()s for // all arities, but this will suffice. The nullary // actor::operator() is particularly troublesome because // it is always eagerly evaluated by the compiler. typedef mpl::true_ no_nullary; template <typename Env> struct result : detail::apply_local<local_variable<Key>, Env> {}; template <typename Env> typename result<Env>::type eval(Env const& env) const { typedef typename result<Env>::type return_type; typedef typename detail::get_index<typename Env::map_type, Key>::type index_type; typedef detail::eval_local<Key> eval_local; return eval_local::template get<return_type>( env , index_type()); } private: // silence MSVC warning C4512: assignment operator could not be generated local_variable& operator= (local_variable const&); }; namespace local_names { actor<local_variable<struct _a_key> > const _a = local_variable<struct _a_key>(); actor<local_variable<struct _b_key> > const _b = local_variable<struct _b_key>(); actor<local_variable<struct _c_key> > const _c = local_variable<struct _c_key>(); actor<local_variable<struct _d_key> > const _d = local_variable<struct _d_key>(); actor<local_variable<struct _e_key> > const _e = local_variable<struct _e_key>(); actor<local_variable<struct _f_key> > const _f = local_variable<struct _f_key>(); actor<local_variable<struct _g_key> > const _g = local_variable<struct _g_key>(); actor<local_variable<struct _h_key> > const _h = local_variable<struct _h_key>(); actor<local_variable<struct _i_key> > const _i = local_variable<struct _i_key>(); actor<local_variable<struct _j_key> > const _j = local_variable<struct _j_key>(); actor<local_variable<struct _k_key> > const _k = local_variable<struct _k_key>(); actor<local_variable<struct _l_key> > const _l = local_variable<struct _l_key>(); actor<local_variable<struct _m_key> > const _m = local_variable<struct _m_key>(); actor<local_variable<struct _n_key> > const _n = local_variable<struct _n_key>(); actor<local_variable<struct _o_key> > const _o = local_variable<struct _o_key>(); actor<local_variable<struct _p_key> > const _p = local_variable<struct _p_key>(); actor<local_variable<struct _q_key> > const _q = local_variable<struct _q_key>(); actor<local_variable<struct _r_key> > const _r = local_variable<struct _r_key>(); actor<local_variable<struct _s_key> > const _s = local_variable<struct _s_key>(); actor<local_variable<struct _t_key> > const _t = local_variable<struct _t_key>(); actor<local_variable<struct _u_key> > const _u = local_variable<struct _u_key>(); actor<local_variable<struct _v_key> > const _v = local_variable<struct _v_key>(); actor<local_variable<struct _w_key> > const _w = local_variable<struct _w_key>(); actor<local_variable<struct _x_key> > const _x = local_variable<struct _x_key>(); actor<local_variable<struct _y_key> > const _y = local_variable<struct _y_key>(); actor<local_variable<struct _z_key> > const _z = local_variable<struct _z_key>(); } }} #endif