Boost logo

Boost-Commit :

From: joel_at_[hidden]
Date: 2008-04-17 20:59:39


Author: djowel
Date: 2008-04-17 20:59:39 EDT (Thu, 17 Apr 2008)
New Revision: 44526
URL: http://svn.boost.org/trac/boost/changeset/44526

Log:
action-dispatch tweaks for phoenix special handling
Text files modified:
   trunk/boost/spirit/home/support/detail/action_dispatch.hpp | 50 ++++++++++++++++++++++++++++++++++++++++
   1 files changed, 50 insertions(+), 0 deletions(-)

Modified: trunk/boost/spirit/home/support/detail/action_dispatch.hpp
==============================================================================
--- trunk/boost/spirit/home/support/detail/action_dispatch.hpp (original)
+++ trunk/boost/spirit/home/support/detail/action_dispatch.hpp 2008-04-17 20:59:39 EDT (Thu, 17 Apr 2008)
@@ -10,6 +10,7 @@
 #define BOOST_SPIRIT_ACTION_DISPATCH_APR_18_2008_0720AM
 
 #include <boost/spirit/home/support/detail/values.hpp>
+#include <boost/spirit/home/phoenix/core/actor.hpp>
 
 namespace boost { namespace spirit { namespace detail
 {
@@ -17,6 +18,15 @@
     bool action_dispatch(F const& f, Attribute& attr, Context& context)
     {
         bool pass = true;
+ f(attr, context, pass);
+ return pass;
+ }
+
+ template <typename Eval, typename Attribute, typename Context>
+ bool action_dispatch(phoenix::actor<Eval> const& f
+ , Attribute& attr, Context& context)
+ {
+ bool pass = true;
         f(pass_value<Attribute>::call(attr), context, pass);
         return pass;
     }
@@ -26,7 +36,9 @@
     bool action_dispatch(RT(*f)(A0&, A1&, A2&)
       , Attribute& attr, Context& context)
     {
+ bool pass = true;
         f(attr, context, pass);
+ return pass;
     }
 
     template <typename RT, typename A0, typename A1, typename A2
@@ -34,7 +46,45 @@
     bool action_dispatch(RT(&f)(A0&, A1&, A2&)
       , Attribute& attr, Context& context)
     {
+ bool pass = true;
         f(attr, context, pass);
+ return pass;
+ }
+
+ template <typename RT, typename A0, typename A1
+ , typename Attribute, typename Context>
+ bool action_dispatch(RT(*f)(A0&, A1&)
+ , Attribute& attr, Context& context)
+ {
+ f(attr, context);
+ return true;
+ }
+
+ template <typename RT, typename A0, typename A1
+ , typename Attribute, typename Context>
+ bool action_dispatch(RT(&f)(A0&, A1&)
+ , Attribute& attr, Context& context)
+ {
+ f(attr, context);
+ return true;
+ }
+
+ template <typename RT, typename A0
+ , typename Attribute, typename Context>
+ bool action_dispatch(RT(*f)(A0&)
+ , Attribute& attr, Context& context)
+ {
+ f(attr);
+ return true;
+ }
+
+ template <typename RT, typename A0
+ , typename Attribute, typename Context>
+ bool action_dispatch(RT(&f)(A0&)
+ , Attribute& attr, Context& context)
+ {
+ f(attr);
+ return true;
     }
 }}}
 


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