|
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