Boost logo

Boost-Commit :

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 :


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