Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r68433 - in sandbox/SOC/2010/phoenix3: boost/phoenix/core boost/phoenix/scope boost/phoenix/statement libs/phoenix/test/scope
From: thom.heller_at_[hidden]
Date: 2011-01-25 10:56:49


Author: theller
Date: 2011-01-25 10:56:46 EST (Tue, 25 Jan 2011)
New Revision: 68433
URL: http://svn.boost.org/trac/boost/changeset/68433

Log:
refactored to change env to context complete
Text files modified:
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/environment.hpp | 209 ++++++++++++++++++++++++++++++++-------
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/is_nullary.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/meta_grammar.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/dynamic.hpp | 25 ++--
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/lambda.hpp | 160 +++++++++++------------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/let.hpp | 60 +++++-----
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/local_variable.hpp | 153 +++++++++++++---------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/try_catch.hpp | 6
   sandbox/SOC/2010/phoenix3/libs/phoenix/test/scope/dynamic_tests.cpp | 19 +-
   sandbox/SOC/2010/phoenix3/libs/phoenix/test/scope/let_tests.cpp | 3
   10 files changed, 366 insertions(+), 277 deletions(-)

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/environment.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/environment.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/environment.hpp 2011-01-25 10:56:46 EST (Tue, 25 Jan 2011)
@@ -21,44 +21,158 @@
 
 namespace boost { namespace phoenix
 {
+ namespace result_of
+ {
+ template <typename Env, typename Actions>
+ struct context
+ {
+ typedef fusion::vector2<Env, Actions> type;
+ };
+
+ template <typename Context>
+ struct env
+ {
+ typedef
+ typename fusion::result_of::at_c<
+ typename boost::remove_reference<Context>::type
+ , 0
+ >::type
+ type;
+ };
+
+ template <typename Context>
+ struct actions
+ {
+ typedef
+ typename fusion::result_of::at_c<
+ typename boost::remove_reference<Context>::type
+ , 1
+ >::type
+ type;
+ };
+ }
+
     namespace functional
     {
- #define BOOST_PHOENIX_GET_ENVIRONMENT(NAME, N) \
- struct NAME \
- { \
- BOOST_PROTO_CALLABLE() \
- \
- template <typename Sig> \
- struct result; \
- \
- template <typename This, typename Env> \
- struct result<This(Env)> \
- : result<This(Env const &)> \
- {}; \
- \
- template <typename This, typename Env> \
- struct result<This(Env &)> \
- : fusion::result_of::at<Env, mpl::int_<N> > \
- {}; \
- \
- template <typename Env> \
- typename result<NAME(Env const &)>::type \
- operator()(Env const & env) const \
- { \
- return proto::functional::at()(env, mpl::int_<N>()); \
- } \
- \
- template <typename Env> \
- typename result<args(Env &)>::type \
- operator()(Env & env) const \
- { \
- return proto::functional::at()(env, mpl::int_<N>()); \
- } \
- }; \
- /**/
- BOOST_PHOENIX_GET_ENVIRONMENT(args, 0)
- BOOST_PHOENIX_GET_ENVIRONMENT(actions, 1)
- #undef BOOST_PHOENIX_GET_ENVIRONMENT
+ struct context
+ {
+ BOOST_PROTO_CALLABLE()
+
+ template <typename Sig>
+ struct result;
+
+ template <typename This, typename Env, typename Actions>
+ struct result<This(Env, Actions)>
+ : result<This(Env const &, Actions const &)>
+ {};
+
+ template <typename This, typename Env, typename Actions>
+ struct result<This(Env &, Actions)>
+ : result<This(Env &, Actions const &)>
+ {};
+
+ template <typename This, typename Env, typename Actions>
+ struct result<This(Env, Actions &)>
+ : result<This(Env const &, Actions &)>
+ {};
+
+ template <typename This, typename Env, typename Actions>
+ struct result<This(Env &, Actions &)>
+ : result_of::context<Env, Actions>
+ {};
+
+ template <typename Env, typename Actions>
+ typename result_of::context<Env &, Actions &>::type
+ operator()(Env & env, Actions & actions) const
+ {
+ return fusion::vector2<Env &, Actions &>(env, actions);
+ }
+
+ template <typename Env, typename Actions>
+ typename result_of::context<Env const &, Actions &>::type
+ operator()(Env const & env, Actions & actions) const
+ {
+ return fusion::vector2<Env const &, Actions &>(env, actions);
+ }
+
+ template <typename Env, typename Actions>
+ typename result_of::context<Env &, Actions const &>::type
+ operator()(Env & env, Actions const & actions) const
+ {
+ return fusion::vector2<Env &, Actions const &>(env, actions);
+ }
+
+ template <typename Env, typename Actions>
+ typename result_of::context<Env const &, Actions const &>::type
+ operator()(Env const & env, Actions const & actions) const
+ {
+ return fusion::vector2<Env const &, Actions const &>(env, actions);
+ }
+ };
+
+ struct env
+ {
+ BOOST_PROTO_CALLABLE()
+
+ template <typename Sig>
+ struct result;
+
+ template <typename This, typename Context>
+ struct result<This(Context)>
+ : result<This(Context const &)>
+ {};
+
+ template <typename This, typename Context>
+ struct result<This(Context &)>
+ : result_of::env<Context>
+ {};
+
+ template <typename Context>
+ typename result_of::env<Context const>::type
+ operator()(Context const & ctx) const
+ {
+ return fusion::at_c<0>(ctx);
+ }
+
+ template <typename Context>
+ typename result_of::env<Context>::type
+ operator()(Context & ctx) const
+ {
+ return fusion::at_c<0>(ctx);
+ }
+ };
+
+ struct actions
+ {
+ BOOST_PROTO_CALLABLE()
+
+ template <typename Sig>
+ struct result;
+
+ template <typename This, typename Context>
+ struct result<This(Context)>
+ : result<This(Context const &)>
+ {};
+
+ template <typename This, typename Context>
+ struct result<This(Context &)>
+ : result_of::actions<Context>
+ {};
+
+ template <typename Context>
+ typename result_of::actions<Context const>::type
+ operator()(Context const & ctx) const
+ {
+ return fusion::at_c<1>(ctx);
+ }
+
+ template <typename Context>
+ typename result_of::actions<Context>::type
+ operator()(Context & ctx) const
+ {
+ return fusion::at_c<1>(ctx);
+ }
+ };
 
     }
 
@@ -82,6 +196,13 @@
         };
     };
 
+ template <typename Env, typename Actions>
+ typename result_of::context<Env, Actions>::type
+ context(Env const& env, Actions const& actions)
+ {
+ return fusion::vector2<Env, Actions>(env, actions);
+ }
+
     struct _env
         : proto::transform<_env>
     {
@@ -123,7 +244,13 @@
             }
     };
 
- /*
+ template <typename Context>
+ typename fusion::result_of::at_c<Context, 0>::type
+ env(Context & ctx)
+ {
+ return fusion::at_c<0>(ctx);
+ }
+
     struct _actions
         : proto::transform<_actions>
     {
@@ -164,7 +291,13 @@
                 return fusion::at_c<1>(s);
             }
     };
-*/
+
+ template <typename Context>
+ typename fusion::result_of::at_c<Context, 1>::type
+ actions(Context & ctx)
+ {
+ return fusion::at_c<1>(ctx);
+ }
 
     template <typename T, typename Enable = void>
     struct is_environment : fusion::traits::is_sequence<T> {};

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/is_nullary.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/is_nullary.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/is_nullary.hpp 2011-01-25 10:56:46 EST (Tue, 25 Jan 2011)
@@ -32,7 +32,7 @@
               , mpl::true_()
               , mpl::and_<
                     proto::_state
- , evaluator(proto::_, _context)
+ , evaluator(proto::_, _context, int())
>()
>
         {};
@@ -97,7 +97,7 @@
         
         template <typename T>
         struct is_nullary<custom_terminal<T>, typename enable_if<is_actor<T> >::type>
- : proto::call<evaluator(proto::_value)>
+ : proto::call<evaluator(proto::_value, _context, int())>
         {};
     }
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/meta_grammar.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/meta_grammar.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/meta_grammar.hpp 2011-01-25 10:56:46 EST (Tue, 25 Jan 2011)
@@ -41,8 +41,8 @@
             : proto::call<
                 meta_grammar(
                     proto::_
- , functional::args(proto::_state)
- , functional::actions(proto::_state)
+ , _env
+ , _actions
                 )
>::impl<Expr, State, Data>
         {};

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/dynamic.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/dynamic.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/dynamic.hpp 2011-01-25 10:56:46 EST (Tue, 25 Jan 2011)
@@ -73,19 +73,19 @@
     {
         typedef typename DynamicScope::tuple_type tuple_type;
 
- dynamic_frame(DynamicScope const& scope)
+ dynamic_frame(DynamicScope const& s)
             : tuple()
- , save(scope.frame)
- , scope(scope)
+ , save(s.frame)
+ , scope(s)
         {
             scope.frame = this;
         }
 
         template <typename Tuple>
- dynamic_frame(DynamicScope const& scope, Tuple const& init)
+ dynamic_frame(DynamicScope const& s, Tuple const& init)
             : tuple(init)
- , save(scope.frame)
- , scope(scope)
+ , save(s.frame)
+ , scope(s)
         {
             scope.frame = this;
         }
@@ -115,8 +115,8 @@
         template <typename Sig>
         struct result;
 
- template <typename This, typename Env, typename N, typename Scope>
- struct result<This(Env, N, Scope)>
+ template <typename This, typename N, typename Scope>
+ struct result<This(N, Scope)>
         {
             typedef
                 typename boost::remove_pointer<
@@ -136,9 +136,9 @@
 
         };
 
- template <typename Env, typename N, typename Scope>
- typename result<dynamic_member_eval(Env, N, Scope)>::type
- operator()(Env & env, N, Scope s) const
+ template <typename N, typename Scope>
+ typename result<dynamic_member_eval(N, Scope)>::type
+ operator()(N, Scope s) const
         {
             return fusion::at_c<N::value>(s->frame->data());
         }
@@ -148,8 +148,7 @@
     struct default_actions::when<rule::dynamic_member, Dummy>
         : proto::call<
             dynamic_member_eval(
- _context
- , proto::_value(proto::_child_c<0>)
+ proto::_value(proto::_child_c<0>)
               , proto::_value(proto::_child_c<1>)
             )
>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/lambda.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/lambda.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/lambda.hpp 2011-01-25 10:56:46 EST (Tue, 25 Jan 2011)
@@ -32,54 +32,50 @@
 
         template <
             typename This
- , typename Env
+ , typename Context
           , typename OuterEnv
           , typename Locals
           , typename Lambda
>
- struct result<This(Env, OuterEnv, Locals, Lambda)>
- : result<This(Env const &, OuterEnv &, Locals &, Lambda &)>
+ struct result<This(Context, OuterEnv, Locals, Lambda)>
+ : result<This(Context const &, OuterEnv &, Locals &, Lambda &)>
         {};
 
         template <
             typename This
- , typename Env
+ , typename Context
           , typename OuterEnv
           , typename Locals
           , typename Lambda
>
- struct result<This(Env, OuterEnv &, Locals &, Lambda &)>
- : result<This(Env const &, OuterEnv &, Locals &, Lambda &)>
+ struct result<This(Context, OuterEnv &, Locals &, Lambda &)>
+ : result<This(Context const &, OuterEnv &, Locals &, Lambda &)>
         {};
 
         template <
             typename This
- , typename Env
+ , typename Context
           , typename OuterEnv
           , typename Locals
           , typename Lambda
>
- struct result<This(Env &, OuterEnv &, Locals &, Lambda &)>
+ struct result<This(Context &, OuterEnv &, Locals &, Lambda &)>
         {
             typedef
                 typename proto::detail::uncvref<
- typename functional::args::result<
- functional::args(Env)
- >::type
+ typename result_of::env<Context>::type
>::type
                 args_type;
 
             typedef
                 typename proto::detail::uncvref<
- typename functional::actions::result<
- functional::actions(Env)
- >::type
+ typename result_of::actions<Context>::type
>::type
                 actions_type;
 
             typedef
- fusion::vector2<args_type, actions_type>
- env_type;
+ typename result_of::context<args_type, actions_type>::type
+ ctx_type;
 
             typedef
                 typename proto::detail::uncvref<Locals>::type
@@ -90,29 +86,29 @@
                 outer_env_type;
 
             typedef
- scoped_environment<env_type, outer_env_type const, locals_type const>
+ scoped_environment<ctx_type, outer_env_type const, locals_type const>
                 scoped_env;
 
             typedef
- fusion::vector2<scoped_env, actions_type&>
- new_env_type;
+ typename result_of::context<scoped_env, actions_type&>::type
+ new_ctx_type;
 
             typedef
- typename evaluator::impl<Lambda const &, new_env_type&, int>::result_type
+ typename evaluator::impl<Lambda const &, new_ctx_type&, int>::result_type
                 type;
         };
         
         template <
- typename Env
+ typename Context
           , typename OuterEnv
           , typename Locals
           , typename Lambda
>
         typename result<
- lambda_eval(Env &, OuterEnv const&, Locals &, Lambda &)
+ lambda_eval(Context &, OuterEnv const&, Locals &, Lambda &)
>::type
         operator()(
- Env& env
+ Context& ctx
           , OuterEnv const & outer_env
           , Locals const& locals
           , Lambda const& lambda
@@ -120,23 +116,19 @@
         {
             typedef
                 typename proto::detail::uncvref<
- typename functional::args::result<
- functional::args(Env)
- >::type
+ typename result_of::env<Context>::type
>::type
                 args_type;
 
             typedef
                 typename proto::detail::uncvref<
- typename functional::actions::result<
- functional::actions(Env)
- >::type
+ typename result_of::actions<Context>::type
>::type
                 actions_type;
 
             typedef
                 fusion::vector2<args_type, actions_type>
- env_type;
+ ctx_type;
             
             typedef
                 typename proto::detail::uncvref<Locals>::type
@@ -147,10 +139,10 @@
                 outer_env_type;
 
             typedef
- scoped_environment<env_type, OuterEnv const, locals_type const>
+ scoped_environment<ctx_type, OuterEnv const, locals_type const>
                 scoped_env_type;
 
- env_type e(functional::args()(env), functional::actions()(env));
+ ctx_type e(env(ctx), actions(ctx));
 
             scoped_env_type
                 scoped_env(
@@ -160,8 +152,8 @@
                 );
 
             fusion::vector2<scoped_env_type, actions_type>
- new_env(scoped_env, functional::actions()(env));
- return eval(lambda, new_env);
+ new_ctx(scoped_env, actions(ctx));
+ return eval(lambda, new_ctx);
         }
     };
 
@@ -238,7 +230,7 @@
                     rule::local_var_def_list
                   , meta_grammar
>
- , detail::local_var_def_is_nullary(proto::_child_c<0>, _context)// mpl::true_()//evaluator(proto::_child_c<1>, _context)
+ , detail::local_var_def_is_nullary(proto::_child_c<0>, _context, int())// mpl::true_()//evaluator(proto::_child_c<1>, _context)
>
>
     {};
@@ -254,141 +246,117 @@
         template <typename Sig>
         struct result;
 
- template <typename This, typename Env, typename Lambda>
- struct result<This(Env, Lambda &)>
+ template <typename This, typename Context, typename Lambda>
+ struct result<This(Context, Lambda &)>
         {
             typedef
- typename proto::detail::uncvref<Env>::type
- env_type;
-
- typedef
                 typename proto::detail::uncvref<
- typename functional::args::result<
- functional::args(Env)
- >::type
+ typename result_of::env<Context>::type
>::type
                 args_type;
 
             typedef
                 typename proto::detail::uncvref<
- typename functional::actions::result<
- functional::actions(Env)
- >::type
+ typename result_of::actions<Context>::type
>::type
                 actions_type;
 
             typedef
                 fusion::vector2<args_type, actions_type>
- outer_env_type;
+ outer_ctx_type;
 
             typedef
                 typename expression::lambda<
- outer_env_type
+ outer_ctx_type
                   , mpl::void_
                   , typename proto::detail::uncvref<Lambda>::type
>::type
                 type;
         };
 
- template <typename This, typename Env, typename Locals, typename Lambda>
- struct result<This(Env, Locals, Lambda)>
+ template <typename This, typename Context, typename Locals, typename Lambda>
+ struct result<This(Context, Locals, Lambda)>
         {
             typedef
                 typename proto::detail::uncvref<
                     typename rule::local_var_def_list::impl<
                         typename proto::detail::uncvref<Locals>::type &
- , Env
+ , Context
                       , int
>::result_type
>::type
                 locals_type;
 
             typedef
- typename proto::detail::uncvref<Env>::type
- env_type;
-
- typedef
                 typename proto::detail::uncvref<
- typename functional::args::result<
- functional::args(Env)
- >::type
+ typename result_of::env<Context>::type
>::type
                 args_type;
 
             typedef
                 typename proto::detail::uncvref<
- typename functional::actions::result<
- functional::actions(Env)
- >::type
+ typename result_of::actions<Context>::type
>::type
                 actions_type;
 
             typedef
                 fusion::vector2<args_type, actions_type>
- outer_env_type;
+ outer_ctx_type;
             
             typedef
                 typename expression::lambda<
- outer_env_type
+ outer_ctx_type
                   , locals_type
                   , typename proto::detail::uncvref<Lambda>::type
>::type const
                 type;
         };
 
- template <typename Env, typename Lambda>
- typename result<lambda_actor_eval(Env&, Lambda const&)>::type
- operator()(Env & env, Lambda const& lambda) const
+ template <typename Context, typename Lambda>
+ typename result<lambda_actor_eval(Context&, Lambda const&)>::type
+ operator()(Context & ctx, Lambda const& lambda) const
         {
             typedef
- typename proto::detail::uncvref<Env>::type
- env_type;
-
- typedef
                 typename proto::detail::uncvref<
- typename functional::args::result<
- functional::args(Env)
- >::type
+ typename result_of::env<Context>::type
>::type
                 args_type;
 
             typedef
                 typename proto::detail::uncvref<
- typename functional::actions::result<
- functional::actions(Env)
- >::type
+ typename result_of::actions<Context>::type
>::type
                 actions_type;
 
             typedef
                 fusion::vector2<args_type, actions_type>
- outer_env_type;
+ outer_ctx_type;
 
- outer_env_type
- outer_env(fusion::at_c<0>(env), fusion::at_c<1>(env));
+ outer_ctx_type
+ outer_ctx(fusion::at_c<0>(ctx), fusion::at_c<1>(ctx));
 
             mpl::void_ t;
             return
                 expression::
- lambda<outer_env_type, mpl::void_, Lambda>::
- make(outer_env, t, lambda);
+ lambda<outer_ctx_type, mpl::void_, Lambda>::
+ make(outer_ctx, t, lambda);
         }
 
         template <
- typename Env
+ typename Context
           , typename Locals
           , typename Lambda
>
         typename result<
- lambda_actor_eval(Env&, Locals const&, Lambda const&)
+ lambda_actor_eval(Context&, Locals const&, Lambda const&)
>::type
- operator()(Env & env, Locals const& locals, Lambda const& lambda) const
+ operator()(Context & ctx, Locals const& locals, Lambda const& lambda) const
         {
             typedef
                 typename proto::detail::uncvref<
                     typename rule::local_var_def_list::impl<
                         Locals &
- , Env
+ , Context
                       , int
>::result_type
>::type
@@ -397,36 +365,32 @@
             locals_type l =
                    rule::local_var_def_list()(
                       locals
- , env
+ , ctx
                     );
 
             typedef
                 typename proto::detail::uncvref<
- typename functional::args::result<
- functional::args(Env)
- >::type
+ typename result_of::env<Context>::type
>::type
                 args_type;
 
             typedef
                 typename proto::detail::uncvref<
- typename functional::actions::result<
- functional::actions(Env)
- >::type
+ typename result_of::actions<Context>::type
>::type
                 actions_type;
 
             typedef
                 fusion::vector2<args_type, actions_type>
- outer_env_type;
+ outer_ctx_type;
 
- outer_env_type
- outer_env(fusion::at_c<0>(env), fusion::at_c<1>(env));
+ outer_ctx_type
+ outer_ctx(fusion::at_c<0>(ctx), fusion::at_c<1>(ctx));
 
             return
                 expression::
- lambda<outer_env_type, locals_type, Lambda>::
- make(outer_env, l, lambda);
+ lambda<outer_ctx_type, locals_type, Lambda>::
+ make(outer_ctx, l, lambda);
         }
     };
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/let.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/let.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/let.hpp 2011-01-25 10:56:46 EST (Tue, 25 Jan 2011)
@@ -28,14 +28,12 @@
         template <typename Sig>
         struct result;
 
- template <typename This, typename Env, typename Locals, typename Let>
- struct result<This(Env, Locals &, Let &)>
+ template <typename This, typename Context, typename Locals, typename Let>
+ struct result<This(Context, Locals &, Let &)>
         {
             typedef
                 typename proto::detail::uncvref<
- typename boost::result_of<
- functional::actions(Env)
- >::type
+ typename result_of::actions<Context>::type
>::type
                 actions_type;
 
@@ -44,34 +42,35 @@
                     typename boost::result_of<
                         rule::local_var_def_list(
                             Locals const &
- , Env
+ , Context
                         )
>::type
>::type
                 locals_type;
 
             typedef
- typename boost::result_of<
- evaluator(
- Let const &
- , fusion::vector2<
- scoped_environment<Env, Env, locals_type> &
- , actions_type
- > &
- )
- >::type
+ typename evaluator::impl<
+ Let const &
+ , fusion::vector2<
+ scoped_environment<
+ Context
+ , Context
+ , locals_type
+ >
+ , actions_type
+ >
+ , int
+ >::result_type
                 type;
         };
 
- template <typename Env, typename Locals, typename Let>
- typename result<let_eval(Env&, Locals const &, Let const &)>::type
- operator()(Env & env, Locals const & locals, Let const & let) const
+ template <typename Context, typename Locals, typename Let>
+ typename result<let_eval(Context&, Locals const &, Let const &)>::type
+ operator()(Context & ctx, Locals const & locals, Let const & let) const
         {
             typedef
                 typename proto::detail::uncvref<
- typename boost::result_of<
- functional::actions(Env &)
- >::type
+ typename result_of::actions<Context>::type
>::type
                 actions_type;
 
@@ -80,7 +79,7 @@
                     typename boost::result_of<
                         rule::local_var_def_list(
                             Locals &
- , Env &
+ , Context &
                         )
>::type
>::type
@@ -89,22 +88,22 @@
             locals_type l =
                    rule::local_var_def_list()(
                       locals
- , env
+ , ctx
                     );
 
- scoped_environment<Env, Env, locals_type&>
+ scoped_environment<Context, Context, locals_type&>
                 scoped_env(
- env
- , env
+ ctx
+ , ctx
                   , l
                 );
 
             fusion::vector2<
- scoped_environment<Env, Env, locals_type &> &
+ scoped_environment<Context, Context, locals_type &> &
               , actions_type
- > new_env(scoped_env, functional::actions()(env));
+ > new_ctx(scoped_env, actions(ctx));
 
- return eval(let, new_env);
+ return eval(let, new_ctx);
         }
     };
 
@@ -172,13 +171,14 @@
     struct is_nullary::when<rule::let, Dummy>
         : proto::make<
             mpl::and_<
- detail::local_var_def_is_nullary(proto::_child_c<0>, _context)
+ detail::local_var_def_is_nullary(proto::_child_c<0>, _context, int())
               , evaluator(
                     proto::_child_c<1>
                   , fusion::vector2<
                         mpl::true_
                       , detail::scope_is_nullary_actions
>()
+ , int()
                 )
>()
>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/local_variable.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/local_variable.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/local_variable.hpp 2011-01-25 10:56:46 EST (Tue, 25 Jan 2011)
@@ -59,16 +59,16 @@
             template <typename Sig>
             struct result;
 
- template <typename This, typename Expr, typename Env>
- struct result<This(Expr&, Env)>
- : result<This(Expr&, Env const&)>
+ template <typename This, typename Expr, typename Context>
+ struct result<This(Expr&, Context)>
+ : result<This(Expr&, Context const&)>
             {};
 
- template <typename This, typename Expr, typename Env>
- struct result<This(Expr&, Env &)>
+ template <typename This, typename Expr, typename Context>
+ struct result<This(Expr&, Context &)>
             {
                 typedef
- typename evaluator::impl<Expr const &, Env &, int>::result_type
+ typename evaluator::impl<Expr const &, Context &, int>::result_type
                     result_type;
                 typedef
                     typename mpl::eval_if<
@@ -81,31 +81,31 @@
                     type;
             };
 
- template <typename Expr, typename Env>
- typename result<local_eval(Expr const&, Env&)>::type
- operator()(Expr const& expr, Env & env) const
+ template <typename Expr, typename Context>
+ typename result<local_eval(Expr const&, Context&)>::type
+ operator()(Expr const& expr, Context & ctx) const
             {
                 typedef
- typename result<local_eval(Expr const&, Env&)>::result_type
+ typename result<local_eval(Expr const&, Context&)>::result_type
                     result_type;
 
                 return
                     this->make(
                         expr
- , env
+ , ctx
                       , typename is_reference<result_type>::type()
                     );
             }
 
             private:
- template <typename Expr, typename Env>
- typename result<local_eval(Expr const&, Env&)>::type
- make(Expr const& expr, Env & env, mpl::true_) const
+ template <typename Expr, typename Context>
+ typename result<local_eval(Expr const&, Context&)>::type
+ make(Expr const& expr, Context & ctx, mpl::true_) const
                 {
                     typedef
                         typename remove_reference<
                             typename result<
- local_eval(Expr const&, Env&)
+ local_eval(Expr const&, Context&)
>::result_type
>::type
                         result_type;
@@ -113,30 +113,30 @@
                     return
                         this->make_ref(
                             expr
- , env
+ , ctx
                           , typename is_const<result_type>::type()
                         );
                 }
                 
- template <typename Expr, typename Env>
- typename result<local_eval(Expr const&, Env&)>::type
- make_ref(Expr const& expr, Env & env, mpl::true_) const
+ template <typename Expr, typename Context>
+ typename result<local_eval(Expr const&, Context&)>::type
+ make_ref(Expr const& expr, Context & ctx, mpl::true_) const
                 {
- return phoenix::cref(eval(expr, env));
+ return phoenix::cref(eval(expr, ctx));
                 }
                 
- template <typename Expr, typename Env>
- typename result<local_eval(Expr const&, Env&)>::type
- make_ref(Expr const& expr, Env & env, mpl::false_) const
+ template <typename Expr, typename Context>
+ typename result<local_eval(Expr const&, Context&)>::type
+ make_ref(Expr const& expr, Context & ctx, mpl::false_) const
                 {
- return phoenix::ref(eval(expr, env));
+ return phoenix::ref(eval(expr, ctx));
                 }
                 
- template <typename Expr, typename Env>
- typename result<local_eval(Expr const&, Env&)>::type
- make(Expr const& expr, Env & env, mpl::false_) const
+ template <typename Expr, typename Context>
+ typename result<local_eval(Expr const&, Context&)>::type
+ make(Expr const& expr, Context & ctx, mpl::false_) const
                 {
- return phoenix::val(eval(expr, env));
+ return phoenix::val(eval(expr, ctx));
                 }
 
         };
@@ -178,11 +178,7 @@
 
     template <typename Dummy>
     struct is_nullary::when<rule::local_variable, Dummy>
- : proto::make<mpl::false_()>/*proto::if_<
- is_scoped_environment<functional::args(_env)>()
- , mpl::true_()
- , mpl::false_()
- >*/
+ : proto::make<mpl::false_()>
     {};
 
     namespace detail
@@ -202,6 +198,7 @@
                                 mpl::true_
                               , boost::phoenix::is_nullary
>()
+ , int()
                         )
>()
>
@@ -213,6 +210,7 @@
                             mpl::true_
                           , boost::phoenix::is_nullary
>()
+ , int()
                     )
>
>
@@ -256,6 +254,7 @@
                       , evaluator(
                             proto::_right(proto::_right)
                           , proto::_state
+ , int()
                         )
                       , find_local(
                             proto::_left
@@ -268,14 +267,14 @@
                     rule::local_var_def
                   , proto::if_<
                         proto::matches<proto::_left, proto::_data>()
- , evaluator(proto::_right, proto::_state)
+ , evaluator(proto::_right, proto::_state, int())
                       , detail::local_var_not_found()
>
>
>
         {};
 
- template<typename This, typename Args, typename Env, typename Key>
+ template<typename This, typename Args, typename Context, typename Key>
         struct get_local_result_impl
             : mpl::eval_if<
                 is_same<
@@ -288,7 +287,7 @@
                         typename proto::detail::uncvref<
                             typename detail::find_local::impl<
                                 typename Args::locals_type &
- , Env
+ , Context
                               , Key
>::result_type
>::type
@@ -298,7 +297,7 @@
                   , mpl::identity<
                         typename detail::find_local::impl<
                             typename Args::locals_type &
- , Env
+ , Context
                           , Key
>::result_type
>
@@ -314,71 +313,65 @@
         template <typename Sig>
         struct result;
         
- template <typename This, typename Env>
- struct result<This(Env)>
- : result<This(Env const &)>
+ template <typename This, typename Context>
+ struct result<This(Context)>
+ : result<This(Context const &)>
         {};
 
- template <typename This, typename Env>
- struct result<This(Env &)>
+ template <typename This, typename Context>
+ struct result<This(Context &)>
         {
             typedef
                 typename proto::detail::uncvref<
- typename functional::args::result<
- functional::args(Env)
- >::type
+ typename result_of::env<Context>::type
>::type
                 env_type;
 
             typedef
                 typename mpl::eval_if<
                     is_scoped_environment<env_type>
- , detail::get_local_result_impl<This, env_type, Env, Key>
+ , detail::get_local_result_impl<This, env_type, Context, Key>
                   , mpl::identity<detail::local_var_not_found>
>::type
                 type;
         };
 
- template <typename Env>
- typename result<get_local<Key>(Env&)>::type
- operator()(Env &env) const
+ template <typename Context>
+ typename result<get_local<Key>(Context&)>::type
+ operator()(Context &ctx) const
         {
             typedef
                 typename proto::detail::uncvref<
- typename functional::args::result<
- functional::args(Env)
- >::type
+ typename result_of::env<Context>::type
>::type
                 env_type;
 
             return this->evaluate(
- env
+ ctx
               , typename is_scoped_environment<env_type>::type()
             );
         }
 
         private:
             // is a scoped environment
- template <typename Env>
- typename result<get_local<Key>(Env&)>::type
- evaluate(Env & env, mpl::true_) const
+ template <typename Context>
+ typename result<get_local<Key>(Context&)>::type
+ evaluate(Context & ctx, mpl::true_) const
             {
                 typedef
                     typename proto::detail::uncvref<
- typename functional::args::result<
- functional::args(Env)
- >::type
+ typename result_of::env<Context>::type
>::type
                     env_type;
 
                 return
                     this->evaluate_scoped(
- env
+ ctx
                       , typename is_same<
                             typename proto::detail::uncvref<
                                 typename detail::find_local::impl<
                                     typename env_type::locals_type
- , Env &
+ , Context &
                                   , Key
>::result_type
>::type
@@ -390,31 +383,31 @@
 
             // is a scoped environment
             // --> we need to look in the outer environment
- template <typename Env>
- typename result<get_local<Key>(Env&)>::type
- evaluate_scoped(Env & env, mpl::false_) const
+ template <typename Context>
+ typename result<get_local<Key>(Context&)>::type
+ evaluate_scoped(Context & ctx, mpl::false_) const
             {
                 Key k;
                 return
                     detail::find_local()(
- functional::args()(env).locals
- , env
+ env(ctx).locals
+ , ctx
                       , k
                     );
             }
             
             // is a scoped environment
             // --> we have the local in our environment
- template <typename Env>
- typename result<get_local<Key>(Env&)>::type
- evaluate_scoped(Env & env, mpl::true_) const
+ template <typename Context>
+ typename result<get_local<Key>(Context&)>::type
+ evaluate_scoped(Context & ctx, mpl::true_) const
             {
- return get_local<Key>()(functional::args()(env).outer_env);
+ return get_local<Key>()(env(ctx).outer_env);
             }
             
- template <typename Env>
- typename result<get_local<Key>(Env&)>::type
- evaluate(Env & env, mpl::false_) const
+ template <typename Context>
+ typename result<get_local<Key>(Context&)>::type
+ evaluate(Context & ctx, mpl::false_) const
             {
                 return detail::local_var_not_found();
             }
@@ -427,8 +420,8 @@
         template <typename Sig>
         struct result;
 
- template <typename This, typename Local, typename Env>
- struct result<This(Local &, Env)>
+ template <typename This, typename Local, typename Context>
+ struct result<This(Local &, Context)>
         {
             typedef
                 typename expression::local_variable<Local>::type
@@ -436,18 +429,18 @@
 
             typedef get_local<lookup_grammar> get_local_type;
             typedef
- typename get_local_type::template result<get_local_type(Env)>::type
+ typename get_local_type::template result<get_local_type(Context)>::type
                 type;
         };
 
- template <typename Local, typename Env>
- typename result<local_var_eval(Local const &, Env&)>::type
- operator()(Local & local, Env & env)
+ template <typename Local, typename Context>
+ typename result<local_var_eval(Local const &, Context&)>::type
+ operator()(Local & local, Context & ctx)
         {
             typedef
                 typename expression::local_variable<Local>::type
                 lookup_grammar;
- return get_local<lookup_grammar>()(env);
+ return get_local<lookup_grammar>()(ctx);
         }
     };
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/try_catch.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/try_catch.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/try_catch.hpp 2011-01-25 10:56:46 EST (Tue, 25 Jan 2011)
@@ -139,16 +139,16 @@
             : proto::or_<
                 proto::when<
                     rule::catch_all
- , evaluator(proto::_child_c<0>, proto::_data)
+ , evaluator(proto::_child_c<0>, proto::_data, int())
>
               , proto::when<
                     rule::catch_
- , evaluator(proto::_child_c<1>, proto::_data)
+ , evaluator(proto::_child_c<1>, proto::_data, int())
>
               , proto::when<
                     rule::try_catch
                   , mpl::and_<
- evaluator(proto::_child_c<0>, proto::_data)
+ evaluator(proto::_child_c<0>, proto::_data, int())
                       , proto::fold<
                             proto::functional::pop_front(proto::_)
                           , mpl::true_()

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/test/scope/dynamic_tests.cpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/test/scope/dynamic_tests.cpp (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/test/scope/dynamic_tests.cpp 2011-01-25 10:56:46 EST (Tue, 25 Jan 2011)
@@ -6,13 +6,13 @@
 ==============================================================================*/
 #include <iostream>
 #include <string>
+#include <cmath>
 
 #include <boost/detail/lightweight_test.hpp>
 #include <boost/phoenix/core.hpp>
 #include <boost/phoenix/operator.hpp>
 #include <boost/phoenix/scope/dynamic.hpp>
 
-/*
 struct my_dynamic : ::boost::phoenix::dynamic<int, std::string, double>
 {
     my_dynamic() : num(init<0>(this)), message(init<1>(this)), real(init<2>(this)) {}
@@ -21,16 +21,15 @@
     member2 message;
     member3 real;
 };
-*/
 
 // You may also use the macro below to achieve the same as above:
 //
-BOOST_PHOENIX_DYNAMIC(
- my_dynamic,
- (int, num)
- (std::string, message)
- (double, real)
-);
+//BOOST_PHOENIX_DYNAMIC(
+// my_dynamic,
+// (int, num)
+// (std::string, message)
+// (double, real)
+//);
 
 int
 main()
@@ -65,13 +64,13 @@
 
             (std::cout << clos.message << clos.num << ", " << clos.real << '\n')();
             BOOST_TEST(clos.num() == 987);
- BOOST_TEST(clos.real() == clos.num() * 1e30);
+ BOOST_TEST(std::fabs((clos.num() * 1e30) - clos.real()) < 1e-8);
             BOOST_TEST(clos.message() == "Abracadabra ");
         }
 
         (std::cout << clos.message << clos.num << ", " << clos.real << '\n')();
         BOOST_TEST(clos.num() == 123+456);
- BOOST_TEST(clos.real() == clos.num() / 56.5);
+ BOOST_TEST(std::fabs(clos.real() - (clos.num() / 56.5)) < 1e-8 );
         BOOST_TEST(clos.message() == "Hello " + std::string("World "));
     }
 

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/test/scope/let_tests.cpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/test/scope/let_tests.cpp (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/test/scope/let_tests.cpp 2011-01-25 10:56:46 EST (Tue, 25 Jan 2011)
@@ -50,7 +50,7 @@
             (x) == x
         );
     }
-
+/*
     {
         int x = 1, y = 10;
         BOOST_TEST(
@@ -182,6 +182,7 @@
         let(_a = _1)[_a = _2](i, 2);
         BOOST_TEST(i == 2);
     }
+ */
 
     return boost::report_errors();
 }


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk