$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r63011 - in sandbox/SOC/2010/phoenix3/boost/phoenix: core support
From: joel_at_[hidden]
Date: 2010-06-15 22:46:50
Author: djowel
Date: 2010-06-15 22:46:50 EDT (Tue, 15 Jun 2010)
New Revision: 63011
URL: http://svn.boost.org/trac/boost/changeset/63011
Log:
minor tweaks
Removed:
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/actor_result.hpp
Text files modified: 
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/actor.hpp         |    54 +++++++++++++++++++++------------------ 
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/environment.hpp   |     8 +++++                                   
   sandbox/SOC/2010/phoenix3/boost/phoenix/support/element_at.hpp |     4 ++                                      
   3 files changed, 40 insertions(+), 26 deletions(-)
Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/actor.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/actor.hpp	(original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/actor.hpp	2010-06-15 22:46:50 EDT (Tue, 15 Jun 2010)
@@ -43,24 +43,38 @@
         template <typename Expr>
         struct actor<Expr>
         {
-            typedef typename ::boost::phoenix::actor<Expr>::nullary_result type;
+            static const int arity = result_of::arity<Expr>::type::value;
+
+            typedef typename
+                mpl::eval_if_c<
+                    arity == 0 // avoid calling result_of::actor when this is true
+                  , boost::result_of<eval_grammar(Expr const&, fusion::vector0<>&)>
+                  , mpl::identity<detail::error_expecting_arguments>
+                >::type
+            type;
         };
         
         template <typename Expr, typename A0>
         struct actor<Expr, A0>
-            : boost::result_of<eval_grammar(::boost::phoenix::actor<Expr> const &, fusion::vector1<A0>&)>
+            : boost::result_of<eval_grammar(
+                ::boost::phoenix::actor<Expr> const&, fusion::vector1<A0>&)>
         {};
         
         template <typename Expr, typename A0, typename A1>
         struct actor<Expr, A0, A1>
-            : boost::result_of<eval_grammar(::boost::phoenix::actor<Expr> const &, fusion::vector2<A0, A1>&)>
+            : boost::result_of<eval_grammar(
+                ::boost::phoenix::actor<Expr> const&, fusion::vector2<A0, A1>&)>
         {};
     }
 
     ////////////////////////////////////////////////////////////////////////////
-    // The actor class. The main thing! In phoenix, everything is an actor
-    // This class is responsible for full function evaluation. Partial
-    // function evaluation involves creating a hierarchy of actor objects.
+    //
+    //  actor
+    //
+    //      The actor class. The main thing! In phoenix, everything is an actor
+    //      This class is responsible for full function evaluation. Partial
+    //      function evaluation involves creating a hierarchy of actor objects.
+    //
     ////////////////////////////////////////////////////////////////////////////
     template <typename Expr>
     struct actor
@@ -69,24 +83,13 @@
         BOOST_PROTO_EXTENDS_ASSIGN()
         BOOST_PROTO_EXTENDS_SUBSCRIPT()
 
-        static const int arity = result_of::arity<Expr>::type::value;
-
-        typedef typename
-            mpl::eval_if_c<
-                arity == 0 // avoid calling result_of::actor when this is true
-              , boost::result_of<eval_grammar(Expr const &, fusion::vector0<>&)>
-              , mpl::identity<detail::error_expecting_arguments>
-            >::type
-        nullary_result;
-
         template <typename Sig>
         struct result;
 
         template <typename This>
         struct result<This()>
-        {
-            typedef nullary_result type;
-        };
+            : result_of::actor<Expr>
+        {};
 
         template <typename This, typename A0>
         struct result<This(A0)>
@@ -98,7 +101,7 @@
             : result_of::actor<Expr, A0, A1>
         {};
 
-        nullary_result
+        typename result_of::actor<Expr>::type
         operator()() const
         {
             BOOST_PROTO_ASSERT_MATCHES( *this, eval_grammar );
@@ -133,11 +136,12 @@
     };
 }
 
-    template<typename Expr>
-    struct result_of<phoenix::actor<Expr>() >
-    {
-        typedef typename phoenix::actor<Expr>::nullary_result type;
-    };
+//  $$$ Why is this needed??? $$$
+//    template<typename Expr>
+//    struct result_of<phoenix::actor<Expr>() >
+//    {
+//        typedef typename phoenix::actor<Expr>::nullary_result type;
+//    };
 
 }
 
Deleted: sandbox/SOC/2010/phoenix3/boost/phoenix/core/actor_result.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/actor_result.hpp	2010-06-15 22:46:50 EDT (Tue, 15 Jun 2010)
+++ (empty file)
@@ -1,43 +0,0 @@
-/*=============================================================================
-    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 PHOENIX_CORE_ACTOR_RESULT_HPP
-#define PHOENIX_CORE_ACTOR_RESULT_HPP
-
-#include <boost/phoenix/core/meta_grammar.hpp>
-#include <boost/fusion/container/vector/vector10.hpp>
-#include <boost/utility/result_of.hpp>
-
-#include <boost/mpl/void.hpp>
-
-namespace boost { namespace phoenix
-{
-    ////////////////////////////////////////////////////////////////////////////
-    // Return type computation 
-    ////////////////////////////////////////////////////////////////////////////
-    template <typename Sig, typename Enable = void>
-    struct actor_result;
-
-    template <typename Actor>
-    struct actor_result<Actor()>
-      : boost::result_of<eval_grammar(Actor&, fusion::vector0<>&)>
-    {};
-
-    template <typename Actor, typename A0>
-    struct actor_result<Actor(A0)>
-      : boost::result_of<eval_grammar(Actor&, fusion::vector1<A0>&)>
-    {};
-
-    template <typename Actor, typename A0, typename A1>
-    struct actor_result<Actor(A0, A1)>
-      : boost::result_of<eval_grammar(Actor&, fusion::vector2<A0, A1>&)>
-    {};
-    
-    /*... more ...*/
-}}
-
-#endif
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	2010-06-15 22:46:50 EDT (Tue, 15 Jun 2010)
@@ -8,6 +8,8 @@
 #define PHOENIX_CORE_ENVIRONMENT_HPP
 
 #include <boost/fusion/support/is_sequence.hpp>
+#include <boost/fusion/container/vector/vector10.hpp>
+#include <boost/utility/enable_if.hpp>
 
 namespace boost { namespace phoenix 
 {
@@ -38,6 +40,12 @@
             return fusion::at_c<N::value>(env);
         }
     };
+    
+//    template <typename Actor, typename Env, typename Enable = void>
+//    struct get_signature<Actor, Env, 
+//        typename enable_if<fusion::traits::is_sequence<T> >::type>
+//    {
+//    };
 }}
 
 #endif
Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/support/element_at.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/support/element_at.hpp	(original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/support/element_at.hpp	2010-06-15 22:46:50 EDT (Tue, 15 Jun 2010)
@@ -13,13 +13,15 @@
 
 namespace boost { namespace phoenix
 {
-
     ////////////////////////////////////////////////////////////////////////////
+    //
     // Actors carry specific information with it. Primitive actors may hold
     // simple primitive data, like values (e.g. int). Composites hold a tuple
     // of proto expressions that evaluate to actors (using fusion vector).
     // The following facilities extract the "elements" from an actor. An
     // element is just a proto expression that evaluates to an actor.
+    //
+    ////////////////////////////////////////////////////////////////////////////
     namespace result_of
     {
         // Get the Nth element value type from Expr (N is an integral constant)