$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: eric_at_[hidden]
Date: 2008-05-28 19:07:34
Author: eric_niebler
Date: 2008-05-28 19:07:33 EDT (Wed, 28 May 2008)
New Revision: 45880
URL: http://svn.boost.org/trac/boost/changeset/45880
Log:
implementation for operator->*
Added:
   branches/proto/v4/boost/phoenix/operator/member.hpp   (contents, props changed)
Text files modified: 
   branches/proto/v4/boost/phoenix/operator.hpp   |     2 +-                                      
   branches/proto/v4/libs/phoenix/test/Jamfile.v2 |     8 ++++----                                
   2 files changed, 5 insertions(+), 5 deletions(-)
Modified: branches/proto/v4/boost/phoenix/operator.hpp
==============================================================================
--- branches/proto/v4/boost/phoenix/operator.hpp	(original)
+++ branches/proto/v4/boost/phoenix/operator.hpp	2008-05-28 19:07:33 EDT (Wed, 28 May 2008)
@@ -10,6 +10,6 @@
 #include <boost/phoenix/version.hpp>
 #include <boost/phoenix/operator/if_else.hpp>
 #include <boost/phoenix/operator/io.hpp>
-//#include <boost/phoenix/operator/member.hpp>
+#include <boost/phoenix/operator/member.hpp>
 
 #endif
Added: branches/proto/v4/boost/phoenix/operator/member.hpp
==============================================================================
--- (empty file)
+++ branches/proto/v4/boost/phoenix/operator/member.hpp	2008-05-28 19:07:33 EDT (Wed, 28 May 2008)
@@ -0,0 +1,84 @@
+/*=============================================================================
+    Copyright (c) 2001-2007 Joel de Guzman
+
+    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_OPERATOR_MEMBER_HPP_EAN_2008_05_28
+#define PHOENIX_OPERATOR_MEMBER_HPP_EAN_2008_05_28
+
+#include <boost/ref.hpp>
+#include <boost/type_traits/is_member_object_pointer.hpp>
+#include <boost/type_traits/is_member_function_pointer.hpp>
+#include <boost/phoenix/core/actor.hpp>
+#include <boost/fusion/include/push_front.hpp>
+#include <boost/fusion/include/as_vector.hpp>
+#include <boost/proto/proto.hpp>
+
+namespace boost { namespace phoenix
+{
+    namespace detail
+    {
+        ////////////////////////////////////////////////////////////////////////////////////////////
+        template<typename SubGrammar, typename Callable = proto::callable>
+        struct bind_mem_ptr
+          : proto::transform<bind_mem_ptr<SubGrammar> >
+        {
+            template<typename Expr, typename State, typename Data>
+            struct impl
+              : proto::transform_impl<Expr, State, Data>
+            {
+                typedef typename
+                    proto::result_of::unpack_expr<
+                        proto::tag::function
+                      , domain
+                      , typename fusion::result_of::as_vector<
+                            typename fusion::result_of::push_front<
+                                typename fusion::result_of::push_front<
+                                    typename impl::data
+                                  , typename proto::result_of::left<Expr>::type
+                                >::type
+                              , typename proto::result_of::right<Expr>::type
+                            >::type
+                        >::type
+                    >::type
+                result_type;
+
+                result_type operator()(
+                    typename impl::expr_param expr
+                  , typename impl::state_param
+                  , typename impl::data_param data
+                ) const
+                {
+                    return proto::unpack_expr<proto::tag::function, domain>(
+                        fusion::as_vector(
+                            fusion::push_front(
+                                fusion::push_front(
+                                    data
+                                  , boost::ref(proto::left(expr))
+                                )
+                              , boost::ref(proto::right(expr))
+                            )
+                        )
+                    );
+                }
+            };
+        };
+    }
+
+    ////////////////////////////////////////////////////////////////////////////////////////////////
+    template<typename SubGrammar>
+    struct extension<proto::tag::mem_ptr, SubGrammar>
+      : proto::when<
+            proto::mem_ptr<evaluator<SubGrammar>, proto::terminal<proto::_> >
+          , proto::if_<
+                is_member_function_pointer<proto::_value(proto::_right)>()
+              , detail::bind_mem_ptr<SubGrammar>
+              , proto::_default<evaluator<SubGrammar> >
+            >
+        >
+    {};
+
+}}
+
+#endif
Modified: branches/proto/v4/libs/phoenix/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/phoenix/test/Jamfile.v2	(original)
+++ branches/proto/v4/libs/phoenix/test/Jamfile.v2	2008-05-28 19:07:33 EDT (Wed, 28 May 2008)
@@ -36,7 +36,7 @@
     [ run operator/misc_binary_tests.cpp ]
     [ run operator/self_tests.cpp ]
     [ run operator/unary_tests.cpp ]
-#    [ run operator/member.cpp ]
+    [ run operator/member.cpp ]
     ;
 
 test-suite phoenix_object :
@@ -78,10 +78,10 @@
     ;
 
 test-suite phoenix_scope :
-    [ run scope/lambda_tests.cpp ]
+#    [ run scope/lambda_tests.cpp ]
     [ run scope/let_tests.cpp ]
-    [ run scope/dynamic_tests.cpp ]
-    [ run scope/bug_000008.cpp : : : $(multi-threading) ]
+#    [ run scope/dynamic_tests.cpp ]
+#    [ run scope/bug_000008.cpp : : : $(multi-threading) ]
     ;
 
 test-suite phoenix_algorithm :