Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r72033 - in branches/release/boost/msm: . back front front/detail front/euml mpl_graph/detail
From: christophe.j.henry_at_[hidden]
Date: 2011-05-18 17:34:30


Author: chenry
Date: 2011-05-18 17:34:28 EDT (Wed, 18 May 2011)
New Revision: 72033
URL: http://svn.boost.org/trac/boost/changeset/72033

Log:
merged revisions 68194-72031
Added:
   branches/release/boost/msm/back/any_event.hpp (contents, props changed)
      - copied, changed from r68195, /trunk/boost/msm/back/any_event.hpp
   branches/release/boost/msm/front/euml/phoenix_placeholders.hpp (props changed)
      - copied unchanged from r71944, /trunk/boost/msm/front/euml/phoenix_placeholders.hpp
   branches/release/boost/msm/msm_grammar.hpp (contents, props changed)
      - copied, changed from r71734, /trunk/boost/msm/msm_grammar.hpp
Removed:
   branches/release/boost/msm/mpl_graph/detail/as_mpl_map.hpp
Properties modified:
   branches/release/boost/msm/ (props changed)
   branches/release/boost/msm/back/ (props changed)
   branches/release/boost/msm/back/args.hpp (props changed)
   branches/release/boost/msm/back/bind_helpers.hpp (props changed)
   branches/release/boost/msm/back/common_types.hpp (props changed)
   branches/release/boost/msm/back/copy_policies.hpp (props changed)
   branches/release/boost/msm/back/default_compile_policy.hpp (props changed)
   branches/release/boost/msm/back/dispatch_table.hpp (props changed)
   branches/release/boost/msm/back/favor_compile_time.hpp (contents, props changed)
   branches/release/boost/msm/back/fold_to_list.hpp (contents, props changed)
   branches/release/boost/msm/back/history_policies.hpp (props changed)
   branches/release/boost/msm/back/metafunctions.hpp (contents, props changed)
   branches/release/boost/msm/back/mpl_graph_fsm_check.hpp (props changed)
   branches/release/boost/msm/back/no_fsm_check.hpp (props changed)
   branches/release/boost/msm/back/queue_container_circular.hpp (props changed)
   branches/release/boost/msm/back/queue_container_deque.hpp (props changed)
   branches/release/boost/msm/back/state_machine.hpp (contents, props changed)
   branches/release/boost/msm/back/tools.hpp (props changed)
   branches/release/boost/msm/common.hpp (contents, props changed)
   branches/release/boost/msm/front/ (props changed)
   branches/release/boost/msm/front/common_states.hpp (props changed)
   branches/release/boost/msm/front/completion_event.hpp (props changed)
   branches/release/boost/msm/front/detail/ (props changed)
   branches/release/boost/msm/front/detail/common_states.hpp (props changed)
   branches/release/boost/msm/front/detail/row2_helper.hpp (props changed)
   branches/release/boost/msm/front/euml/ (props changed)
   branches/release/boost/msm/front/euml/algorithm.hpp (props changed)
   branches/release/boost/msm/front/euml/common.hpp (contents, props changed)
   branches/release/boost/msm/front/euml/container.hpp (props changed)
   branches/release/boost/msm/front/euml/euml.hpp (contents, props changed)
   branches/release/boost/msm/front/euml/euml_typeof.hpp (props changed)
   branches/release/boost/msm/front/euml/guard_grammar.hpp (contents, props changed)
   branches/release/boost/msm/front/euml/iteration.hpp (props changed)
   branches/release/boost/msm/front/euml/operator.hpp (props changed)
   branches/release/boost/msm/front/euml/querying.hpp (props changed)
   branches/release/boost/msm/front/euml/state_grammar.hpp (contents, props changed)
   branches/release/boost/msm/front/euml/stl.hpp (props changed)
   branches/release/boost/msm/front/euml/stt_grammar.hpp (contents, props changed)
   branches/release/boost/msm/front/euml/transformation.hpp (props changed)
   branches/release/boost/msm/front/functor_row.hpp (contents, props changed)
   branches/release/boost/msm/front/internal_row.hpp (props changed)
   branches/release/boost/msm/front/row2.hpp (props changed)
   branches/release/boost/msm/front/state_machine_def.hpp (props changed)
   branches/release/boost/msm/front/states.hpp (props changed)
   branches/release/boost/msm/proto_config.hpp (contents, props changed)
   branches/release/boost/msm/row_tags.hpp (props changed)
Text files modified:
   branches/release/boost/msm/back/any_event.hpp | 7
   branches/release/boost/msm/back/favor_compile_time.hpp | 45 +--
   branches/release/boost/msm/back/fold_to_list.hpp | 27 +
   branches/release/boost/msm/back/metafunctions.hpp | 6
   branches/release/boost/msm/back/state_machine.hpp | 109 +++++++-
   branches/release/boost/msm/common.hpp | 2
   branches/release/boost/msm/front/euml/common.hpp | 123 +++++----
   branches/release/boost/msm/front/euml/euml.hpp | 3
   branches/release/boost/msm/front/euml/guard_grammar.hpp | 2
   branches/release/boost/msm/front/euml/state_grammar.hpp | 485 ++++++++++++++++++++++-----------------
   branches/release/boost/msm/front/euml/stt_grammar.hpp | 42 +-
   branches/release/boost/msm/front/functor_row.hpp | 1
   branches/release/boost/msm/msm_grammar.hpp | 1
   branches/release/boost/msm/proto_config.hpp | 18 -
   14 files changed, 503 insertions(+), 368 deletions(-)

Copied: branches/release/boost/msm/back/any_event.hpp (from r68195, /trunk/boost/msm/back/any_event.hpp)
==============================================================================
--- /trunk/boost/msm/back/any_event.hpp (original)
+++ branches/release/boost/msm/back/any_event.hpp 2011-05-18 17:34:28 EDT (Wed, 18 May 2011)
@@ -25,14 +25,13 @@
 class holder : public placeholder
 {
 public:
- holder(EventType const& evt, FsmType& fsm): event_(evt),fsm_(fsm){}
+ holder(EventType const& evt, FsmType& fsm){}
     virtual ::boost::msm::back::HandledEnum process_event() const
     {
- return fsm_.process_event(event_);
+ //default. Will not be called
+ return HANDLED_TRUE;
     }
 private:
- EventType const& event_;
- FsmType& fsm_;
 };
 
 class any_event

Modified: branches/release/boost/msm/back/favor_compile_time.hpp
==============================================================================
--- branches/release/boost/msm/back/favor_compile_time.hpp (original)
+++ branches/release/boost/msm/back/favor_compile_time.hpp 2011-05-18 17:34:28 EDT (Wed, 18 May 2011)
@@ -17,47 +17,33 @@
 #include <boost/mpl/filter_view.hpp>
 #include <boost/mpl/for_each.hpp>
 #include <boost/mpl/bool.hpp>
-#include <boost/any.hpp>
 
 #include <boost/msm/common.hpp>
 #include <boost/msm/back/metafunctions.hpp>
 #include <boost/msm/back/common_types.hpp>
 #include <boost/msm/back/dispatch_table.hpp>
+#include <boost/msm/back/any_event.hpp>
 
 namespace boost { namespace msm { namespace back
 {
-template <class Fsm>
-struct process_any_event_helper
-{
- process_any_event_helper(msm::back::HandledEnum& res_,Fsm* self_,::boost::any any_event_):
- res(res_),self(self_),any_event(any_event_),finished(false){}
- template <class Event>
- void operator()(boost::msm::wrap<Event> const&)
- {
- if ( ! finished && ::boost::any_cast<Event>(&any_event)!=0)
- {
- finished = true;
- res = self->process_event(::boost::any_cast<Event>(any_event));
- }
- }
-private:
- msm::back::HandledEnum& res;
- Fsm* self;
- ::boost::any any_event;
- bool finished;
-};
 
 #define BOOST_MSM_BACK_GENERATE_PROCESS_EVENT(fsmname) \
     namespace boost { namespace msm { namespace back{ \
+ template<class EventType> \
+ class holder<EventType,fsmname> : public placeholder \
+ { \
+ public: \
+ holder(EventType const& evt, fsmname& fsm): event_(evt),fsm_(fsm){} \
+ virtual ::boost::msm::back::HandledEnum process_event() const \
+ {return fsm_.process_event(event_);} \
+ private: \
+ EventType const& event_; \
+ fsmname& fsm_; \
+ }; \
     template<> \
- ::boost::msm::back::HandledEnum fsmname::process_any_event( ::boost::any const& any_event) \
+ ::boost::msm::back::HandledEnum fsmname::process_any_event( any_event const& evt)const \
     { \
- typedef ::boost::msm::back::recursive_get_transition_table<fsmname>::type stt; \
- typedef ::boost::msm::back::generate_event_set<stt>::type all_events; \
- ::boost::msm::back::HandledEnum res= ::boost::msm::back::HANDLED_FALSE; \
- ::boost::mpl::for_each<all_events, ::boost::msm::wrap< ::boost::mpl::placeholders::_1> > \
- (::boost::msm::back::process_any_event_helper<fsmname>(res,this,any_event)); \
- return res; \
+ return evt.process_event(); \
     } \
     }}}
 
@@ -106,7 +92,8 @@
     template <class TransitionState>
     static HandledEnum call_submachine(Fsm& fsm, int region, int state, Event const& evt)
     {
- return (fsm.template get_state<TransitionState&>()).process_any_event( ::boost::any(evt));
+ return (fsm.template get_state<TransitionState&>()).process_any_event
+ ( any_event(evt,fsm.template get_state<TransitionState&>()) );
     }
     // A function object for use with mpl::for_each that stuffs
     // transitions into cells.

Modified: branches/release/boost/msm/back/fold_to_list.hpp
==============================================================================
--- branches/release/boost/msm/back/fold_to_list.hpp (original)
+++ branches/release/boost/msm/back/fold_to_list.hpp 2011-05-18 17:34:28 EDT (Wed, 18 May 2011)
@@ -13,6 +13,7 @@
 #include <boost/msm/proto_config.hpp>
 #include <boost/proto/core.hpp>
 #include <boost/proto/transform.hpp>
+#include <boost/msm/msm_grammar.hpp>
 #include <boost/fusion/container/list/cons.hpp>
 
 namespace boost { namespace msm { namespace back
@@ -20,7 +21,19 @@
  struct state_copy_tag
  {
  };
- ::boost::proto::terminal<state_copy_tag>::type const states_={{}};
+
+template<class X = proto::is_proto_expr>
+struct define_states_creation
+{
+ BOOST_PROTO_BASIC_EXTENDS(
+ proto::terminal<state_copy_tag>::type
+ , define_states_creation
+ , boost::msm::msm_domain
+ )
+};
+
+define_states_creation<> const states_ = {{{}}};
+
  struct FoldToList
   : ::boost::proto::or_<
         // Don't add the states_ terminal to the list
@@ -30,11 +43,19 @@
>
         // Put all other terminals at the head of the
         // list that we're building in the "state" parameter
+ // first states for the eUML states
       , ::boost::proto::when<
- ::boost::proto::terminal< ::boost::proto::_>
+ ::boost::proto::terminal< state_tag >
+ , boost::fusion::cons< ::boost::proto::_, ::boost::proto::_state>(
+ ::boost::proto::_, ::boost::proto::_state
+ )
+ >
+ // then states from other front-ends
+ , ::boost::proto::when<
+ ::boost::proto::terminal< proto::_ >
             , boost::fusion::cons< ::boost::proto::_value, ::boost::proto::_state>(
                 ::boost::proto::_value, ::boost::proto::_state
- )
+ )
>
         // For left-shift operations, first fold the right
         // child to a list using the current state. Use

Modified: branches/release/boost/msm/back/metafunctions.hpp
==============================================================================
--- branches/release/boost/msm/back/metafunctions.hpp (original)
+++ branches/release/boost/msm/back/metafunctions.hpp 2011-05-18 17:34:28 EDT (Wed, 18 May 2011)
@@ -647,6 +647,12 @@
     typedef typename StateType::initial_event type;
 };
 
+template <class StateType>
+struct get_final_event
+{
+ typedef typename StateType::final_event type;
+};
+
 template <class TransitionTable, class InitState>
 struct build_one_orthogonal_region
 {

Modified: branches/release/boost/msm/back/state_machine.hpp
==============================================================================
--- branches/release/boost/msm/back/state_machine.hpp (original)
+++ branches/release/boost/msm/back/state_machine.hpp 2011-05-18 17:34:28 EDT (Wed, 18 May 2011)
@@ -44,9 +44,6 @@
 #include <boost/bind.hpp>
 #include <boost/bind/apply.hpp>
 #include <boost/function.hpp>
-#ifndef BOOST_NO_RTTI
-#include <boost/any.hpp>
-#endif
 
 #include <boost/serialization/base_object.hpp>
 
@@ -63,12 +60,14 @@
 #include <boost/msm/back/dispatch_table.hpp>
 #include <boost/msm/back/no_fsm_check.hpp>
 #include <boost/msm/back/queue_container_deque.hpp>
+#include <boost/msm/back/any_event.hpp>
 
 BOOST_MPL_HAS_XXX_TRAIT_DEF(accept_sig)
 BOOST_MPL_HAS_XXX_TRAIT_DEF(no_automatic_create)
 BOOST_MPL_HAS_XXX_TRAIT_DEF(non_forwarding_flag)
 BOOST_MPL_HAS_XXX_TRAIT_DEF(direct_entry)
 BOOST_MPL_HAS_XXX_TRAIT_DEF(initial_event)
+BOOST_MPL_HAS_XXX_TRAIT_DEF(final_event)
 BOOST_MPL_HAS_XXX_TRAIT_DEF(do_serialize)
 BOOST_MPL_HAS_XXX_TRAIT_DEF(history_policy)
 BOOST_MPL_HAS_XXX_TRAIT_DEF(fsm_check)
@@ -87,6 +86,7 @@
 {
     typedef int direct_entry;
     typedef StateType active_state;
+ typedef Event contained_event;
 
     direct_entry_event(Event const& evt):m_event(evt){}
     Event const& m_event;
@@ -259,6 +259,7 @@
     typedef HistoryPolicy history_policy;
 
     struct InitEvent { };
+ struct ExitEvent { };
     // flag handling
     struct Flag_AND
     {
@@ -278,6 +279,12 @@
         ::boost::mpl::identity<InitEvent>
>::type fsm_initial_event;
 
+ // if the front-end fsm provides an exit_event typedef, replace ExitEvent by this one
+ typedef typename ::boost::mpl::eval_if<
+ typename has_final_event<Derived>::type,
+ get_final_event<Derived>,
+ ::boost::mpl::identity<ExitEvent>
+ >::type fsm_final_event;
 
     template <class ExitPoint>
     struct exit_pt : public ExitPoint
@@ -1036,7 +1043,32 @@
         // give a chance to handle an anonymous (eventless) transition
         handle_eventless_transitions_helper<library_sm> eventless_helper(this,true);
         eventless_helper.process_completion_event();
+ }
+
+ // start the state machine (calls entry of the initial state passing incomingEvent to on_entry's)
+ template <class Event>
+ void start(Event const& incomingEvent)
+ {
+ // call on_entry on this SM
+ (static_cast<Derived*>(this))->on_entry(incomingEvent,*this);
+ ::boost::mpl::for_each<initial_states, boost::msm::wrap<mpl::placeholders::_1> >
+ (call_init<Event>(incomingEvent,this));
+ // give a chance to handle an anonymous (eventless) transition
+ handle_eventless_transitions_helper<library_sm> eventless_helper(this,true);
+ eventless_helper.process_completion_event();
+ }
 
+ // stop the state machine (calls exit of the current state)
+ void stop()
+ {
+ do_exit(fsm_final_event(),*this);
+ }
+
+ // stop the state machine (calls exit of the current state passing finalEvent to on_exit's)
+ template <class Event>
+ void stop(Event const& finalEvent)
+ {
+ do_exit(finalEvent,*this);
     }
 
     // Main function used by clients of the derived FSM to make
@@ -1256,7 +1288,27 @@
     {
         return m_history;
     }
- // get a state
+ // get a state (const version)
+ // as a pointer
+ template <class State>
+ typename ::boost::enable_if<typename ::boost::is_pointer<State>::type,State >::type
+ get_state(::boost::msm::back::dummy<0> = 0) const
+ {
+ return const_cast<State >
+ (&
+ (::boost::fusion::at_key<
+ typename ::boost::remove_const<typename ::boost::remove_pointer<State>::type>::type>(m_substate_list)));
+ }
+ // as a reference
+ template <class State>
+ typename ::boost::enable_if<typename ::boost::is_reference<State>::type,State >::type
+ get_state(::boost::msm::back::dummy<1> = 0) const
+ {
+ return const_cast<State >
+ ( ::boost::fusion::at_key<
+ typename ::boost::remove_const<typename ::boost::remove_reference<State>::type>::type>(m_substate_list) );
+ }
+ // get a state (non const version)
     // as a pointer
     template <class State>
     typename ::boost::enable_if<typename ::boost::is_pointer<State>::type,State >::type
@@ -1272,7 +1324,6 @@
     {
         return ::boost::fusion::at_key<typename ::boost::remove_reference<State>::type>(m_substate_list);
     }
-
     // checks if a flag is active using the BinaryOp as folding function
     template <class Flag,class BinaryOp>
     bool is_flag_active() const
@@ -1684,7 +1735,7 @@
         {
             // end of processing
             template<class Event>
- static void process(Event const& evt,library_sm*,HandledEnum&){}
+ static void process(Event const& ,library_sm*,HandledEnum&){}
         };
         public:
         region_processing_helper(library_sm* self_,HandledEnum& result_)
@@ -1731,9 +1782,7 @@
     template <class Event>
     void no_action(Event const&){}
 
-#ifndef BOOST_NO_RTTI
- HandledEnum process_any_event( ::boost::any const& evt);
-#endif
+ HandledEnum process_any_event( any_event const& evt) const;
 
 private:
     // composite accept implementation. First calls accept on the composite, then accept on all its active states.
@@ -1927,7 +1976,7 @@
 // the IBM compiler seems to have problems with nested classes
 // the same seems to apply to the Apple version of gcc 4.0.1 (just in case we do for < 4.1)
 // and also to MS VC < 8
-#if defined (__IBMCPP__) || (defined (__APPLE_CC__) && (__GNUC__ == 4 && __GNUC_MINOR__ < 1)) || (defined(_MSC_VER) && (_MSC_VER < 1400))
+#if defined (__IBMCPP__) || (__GNUC__ == 4 && __GNUC_MINOR__ < 1) || (defined(_MSC_VER) && (_MSC_VER < 1400))
      public:
 #endif
     template<class ContainingSM>
@@ -1936,7 +1985,7 @@
         m_is_included=true;
         ::boost::fusion::for_each(m_substate_list,add_state<ContainingSM>(this,sm));
     }
-#if defined (__IBMCPP__) || (defined (__APPLE_CC__) && (__GNUC__ == 4 && __GNUC_MINOR__ < 1)) || (defined(_MSC_VER) && (_MSC_VER < 1400))
+#if defined (__IBMCPP__) || (__GNUC__ == 4 && __GNUC_MINOR__ < 1) || (defined(_MSC_VER) && (_MSC_VER < 1400))
      private:
 #endif
     // A function object for use with mpl::for_each that stuffs
@@ -2139,7 +2188,7 @@
      };
      // start for states machines which are themselves embedded in other state machines (composites)
      template <class Event>
- void start(Event const& incomingEvent)
+ void internal_start(Event const& incomingEvent)
      {
          region_start_helper< ::boost::mpl::int_<0> >::do_start(this,incomingEvent);
          // give a chance to handle an anonymous (eventless) transition
@@ -2177,7 +2226,7 @@
              operator()(EventType const& evt,FsmType& fsm, ::boost::msm::back::dummy<0> = 0)
          {
              (static_cast<Derived*>(self))->on_entry(evt,fsm);
- self->start(evt);
+ self->internal_start(evt);
          }
 
          // this variant is for the direct entry case (just one entry, not a sequence of entries)
@@ -2199,7 +2248,7 @@
              BOOST_STATIC_ASSERT(find_region_id<typename EventType::active_state::wrapped_entry>::region_index <= nr_regions::value);
              // just set the correct zone, the others will be default/history initialized
              self->m_states[find_region_id<typename EventType::active_state::wrapped_entry>::region_index] = state_id;
- self->start(evt.m_event);
+ self->internal_start(evt.m_event);
          }
 
          // this variant is for the fork entry case (a sequence on entries)
@@ -2220,7 +2269,7 @@
                                     ::boost::msm::wrap< ::boost::mpl::placeholders::_1> >
                                                         (fork_helper<EventType>(self,evt));
              // set the correct zones, the others (if any) will be default/history initialized
- self->start(evt.m_event);
+ self->internal_start(evt.m_event);
          }
 
          // this variant is for the pseudo state entry case
@@ -2235,7 +2284,7 @@
              int state_id = get_state_id<stt,typename EventType::active_state::wrapped_entry>::value;
              // given region starts with the entry pseudo state as active state
              self->m_states[find_region_id<typename EventType::active_state::wrapped_entry>::region_index] = state_id;
- self->start(evt.m_event);
+ self->internal_start(evt.m_event);
              // and we process the transition in the zone of the newly active state
              // (entry pseudo states are, according to UML, a state connecting 1 transition outside to 1 inside
              self->process_event(evt.m_event);
@@ -2338,7 +2387,7 @@
     // called for completion events. Default address set in the dispatch_table at init
     // prevents no-transition detection for completion events
     template <class Event>
- static HandledEnum default_eventless_transition(library_sm& fsm, int, int , Event const& e)
+ static HandledEnum default_eventless_transition(library_sm& fsm, int, int , Event const&)
     {
         return HANDLED_FALSE;
     }
@@ -2352,8 +2401,8 @@
     }
     // removes one event from the message queue and processes it
     template <class StateType>
- typename ::boost::disable_if<typename is_no_message_queue<StateType>::type,void >::type
- process_message_queue(StateType*)
+ void process_message_queue(StateType*,
+ typename ::boost::disable_if<typename is_no_message_queue<StateType>::type,void >::type* = 0)
     {
         if (!m_events_queue.m_events_queue.empty())
         {
@@ -2363,11 +2412,27 @@
         }
     }
     template <class StateType>
- typename ::boost::enable_if<typename is_no_message_queue<StateType>::type,void >::type
- process_message_queue(StateType*)
+ void process_message_queue(StateType*,
+ typename ::boost::enable_if<typename is_no_message_queue<StateType>::type,void >::type* = 0)
     {
         // nothing to process
     }
+ // helper function. In cases where the event is wrapped (target is a direct entry states)
+ // we want to send only the real event to on_entry, not the wrapper.
+ template <class EventType>
+ static
+ typename boost::enable_if<typename has_direct_entry<EventType>::type,typename EventType::contained_event const& >::type
+ remove_direct_entry_event_wrapper(EventType const& evt)
+ {
+ return evt.m_event;
+ }
+ template <class EventType>
+ static typename boost::disable_if<typename has_direct_entry<EventType>::type,EventType const& >::type
+ remove_direct_entry_event_wrapper(EventType const& evt)
+ {
+ // identity. No wrapper
+ return evt;
+ }
     // calls the entry/exit or on_entry/on_exit depending on the state type
     // (avoids calling virtually)
     // variant for FSMs
@@ -2388,7 +2453,7 @@
     execute_entry(StateType& astate,EventType const& evt,FsmType& fsm, ::boost::msm::back::dummy<1> = 0)
     {
         // simple call to on_entry
- astate.on_entry(evt,fsm);
+ astate.on_entry(remove_direct_entry_event_wrapper(evt),fsm);
     }
     // variant for exit pseudo states
     template <class StateType,class EventType,class FsmType>

Modified: branches/release/boost/msm/common.hpp
==============================================================================
--- branches/release/boost/msm/common.hpp (original)
+++ branches/release/boost/msm/common.hpp 2011-05-18 17:34:28 EDT (Wed, 18 May 2011)
@@ -19,6 +19,8 @@
 template <class T>
 struct wrap{};
 
+// tag to use in grammars where states are seen (init_<<, states_<<...)
+struct state_tag{};
 
 } } // boost::msm
 #endif //BOOST_MSM_COMMON_H

Modified: branches/release/boost/msm/front/euml/common.hpp
==============================================================================
--- branches/release/boost/msm/front/euml/common.hpp (original)
+++ branches/release/boost/msm/front/euml/common.hpp 2011-05-18 17:34:28 EDT (Wed, 18 May 2011)
@@ -60,6 +60,8 @@
 #include <boost/preprocessor/arithmetic/dec.hpp>
 #include <boost/preprocessor/repetition/repeat_from_to.hpp>
 #include <boost/preprocessor/cat.hpp>
+
+#include <boost/msm/msm_grammar.hpp>
 #include <boost/msm/front/functor_row.hpp>
 
 namespace proto = boost::proto;
@@ -179,7 +181,7 @@
 struct euml_terminal;
 
 struct sm_domain
- : proto::domain< proto::generator<euml_terminal>, terminal_grammar >
+ : proto::domain< proto::generator<euml_terminal>, terminal_grammar, boost::msm::msm_domain >
 {};
 
 struct state_grammar :
@@ -226,7 +228,7 @@
     };
 };
 template <class STATE>
-struct euml_state: proto::extends<typename proto::terminal<state_tag>::type, STATE, state_domain>
+struct euml_state: proto::extends<typename proto::terminal< boost::msm::state_tag>::type, STATE, state_domain>
 {
     typedef state_tag euml_tag_type;
     using proto::extends<typename proto::terminal<state_tag>::type, STATE, state_domain>::operator=;
@@ -303,9 +305,9 @@
     typedef int activate_deferred_events;
     Deferred_Events(){}
 };
-No_Exception const no_exception;
-No_Msg_Queue const no_msg_queue;
-Deferred_Events const deferred_events;
+No_Exception const no_exception=No_Exception();
+No_Msg_Queue const no_msg_queue=No_Msg_Queue();
+Deferred_Events const deferred_events=Deferred_Events();
 
 struct invalid_type{};
 struct make_invalid_type
@@ -357,7 +359,7 @@
         return true;
     }
 };
-NoAction const no_action;
+NoAction const no_action = NoAction();
 
 struct fsm_artefact_tag {};
 template <class Index=void>
@@ -408,7 +410,7 @@
         typedef GetSource_<Arg1> type;
     };
 };
-GetSource_Helper const source_;
+GetSource_Helper const source_ = GetSource_Helper();
 
 template <class Index=void>
 struct GetTarget_ : euml_action<GetTarget_<Index> >
@@ -458,7 +460,7 @@
         typedef GetTarget_<Arg1> type;
     };
 };
-GetTarget_Helper const target_;
+GetTarget_Helper const target_ = GetTarget_Helper();
 
 template <class Index=void>
 struct GetState_ : euml_action<GetState_<Index> >
@@ -510,7 +512,7 @@
         typedef GetState_<Arg1> type;
     };
 };
-GetState_Helper const state_;
+GetState_Helper const state_ = GetState_Helper();
 
 template <class Index=void>
 struct GetEvent_ : euml_action<GetEvent_<Index> >
@@ -585,7 +587,7 @@
         typedef GetEvent_<Arg1> type;
     };
 };
-GetEvent_Helper const event_;
+GetEvent_Helper const event_ = GetEvent_Helper();
 
 template <class Index=void>
 struct GetFsm_ : euml_action<GetFsm_<Index> >
@@ -660,7 +662,7 @@
         typedef GetFsm_<Arg1> type;
     };
 };
-GetFsm_Helper const fsm_;
+GetFsm_Helper const fsm_ = GetFsm_Helper();
 
 template <class StateName,class Param1>
 struct SubState_ : euml_action<SubState_<StateName, Param1> >
@@ -732,7 +734,7 @@
         typedef SubState_<Arg1,Arg2> type;
     };
 };
-SubState_Helper const substate_;
+SubState_Helper const substate_ = SubState_Helper();
 
 template <class Target,class Index>
 struct GetAttribute_ : euml_action<GetAttribute_<Target, Index> >
@@ -794,7 +796,7 @@
         typedef GetAttribute_<Arg1,Arg2> type;
     };
 };
-GetAttribute_Helper const attribute_;
+GetAttribute_Helper const attribute_ = GetAttribute_Helper();
 
 template <class Index>
 struct Source_ : euml_action<Source_<Index> >
@@ -966,7 +968,7 @@
     typedef ::boost::mpl::set<state_action_tag,action_tag> tag_type;
 
     template <class EVT,class FSM,class SourceState,class TargetState>
- bool operator()(EVT const& evt,FSM&,SourceState& ,TargetState& )
+ bool operator()(EVT const&,FSM&,SourceState& ,TargetState& )
     {
         return true;
     }
@@ -976,7 +978,7 @@
         return true;
     }
 };
-True_ const true_;
+True_ const true_ = True_();
 
 struct False_ : euml::euml_action<False_>
 {
@@ -996,7 +998,7 @@
     typedef ::boost::mpl::set<state_action_tag,action_tag> tag_type;
 
     template <class EVT,class FSM,class SourceState,class TargetState>
- bool operator()(EVT const& evt,FSM&,SourceState& ,TargetState& )
+ bool operator()(EVT const&,FSM&,SourceState& ,TargetState& )
     {
         return false;
     }
@@ -1006,7 +1008,7 @@
         return false;
     }
 };
-False_ const false_;
+False_ const false_ = False_();
 
 template <int Val>
 struct Int_ : euml_action<Int_<Val> >
@@ -1328,7 +1330,7 @@
         typedef Process_<Arg1,Arg2,Arg3,Arg4,Arg5> type;
     };
 };
-Process_Helper const process_;
+Process_Helper const process_ = Process_Helper();
 
 template <class ToProcessEvt,class Value,class Param1, class Param2, class Param3>
 struct Process2_ : euml_action<Process2_<ToProcessEvt,Value, Param1, Param2, Param3> >
@@ -1466,7 +1468,7 @@
         typedef Process2_<Arg1,Arg2,Arg3,Arg4,Arg5> type;
     };
 };
-Process2_Helper const process2_;
+Process2_Helper const process2_ = Process2_Helper();
 
 template <class Flag,class Param1=void, class Enable=void >
 struct Get_Flag_ : euml_action<Get_Flag_<Flag,Param1,Enable> > {};
@@ -1546,7 +1548,7 @@
         typedef Get_Flag_<Arg1,Arg2> type;
     };
 };
-Get_Flag_Helper const is_flag_;
+Get_Flag_Helper const is_flag_ = Get_Flag_Helper();
 
 // deferring an event
 struct DeferEvent_ : euml_action< DeferEvent_ >
@@ -1572,7 +1574,7 @@
         typedef DeferEvent_ type;
     };
 };
-Defer_Helper const defer_;
+Defer_Helper const defer_ = Defer_Helper();
 
 struct explicit_tag {};
 struct Explicit_Helper : proto::extends< proto::terminal<explicit_tag>::type, Explicit_Helper, sm_domain>
@@ -1589,7 +1591,7 @@
         typedef typename Arg1::template direct<Arg2> type;
     };
 };
-Explicit_Helper const explicit_;
+Explicit_Helper const explicit_ = Explicit_Helper();
 
 struct entry_pt_tag {};
 struct Entry_Pt_Helper : proto::extends< proto::terminal<entry_pt_tag>::type, Entry_Pt_Helper, sm_domain>
@@ -1606,7 +1608,7 @@
         typedef typename Arg1::template entry_pt<Arg2> type;
     };
 };
-Entry_Pt_Helper const entry_pt_;
+Entry_Pt_Helper const entry_pt_ = Entry_Pt_Helper();
 
 struct exit_pt_tag {};
 struct Exit_Pt_Helper : proto::extends< proto::terminal<exit_pt_tag>::type, Exit_Pt_Helper, sm_domain>
@@ -1623,7 +1625,7 @@
         typedef typename Arg1::template exit_pt<Arg2> type;
     };
 };
-Exit_Pt_Helper const exit_pt_;
+Exit_Pt_Helper const exit_pt_ = Exit_Pt_Helper();
 
 #ifdef BOOST_MSVC
 #define BOOST_MSM_EUML_FUNCTION(functor,function,function_name,result_trans,result_state) \
@@ -1794,7 +1796,7 @@
         functor ## Helper , sm_domain> { functor ## Helper(){} \
         template <class Arg1,class Arg2,class Arg3,class Arg4,class Arg5,class Arg6> \
         struct In {typedef functor <Arg1,Arg2,Arg3,Arg4,Arg5,Arg6> type;}; }; \
- functor ## Helper const function_name ;
+ functor ## Helper const function_name = functor ## Helper ();
 
 #define BOOST_MSM_EUML_METHOD(functor,function,function_name,result_trans,result_state) \
     template <class Param1=void , class Param2=void , class Param3=void , class Param4=void, \
@@ -1945,7 +1947,7 @@
         functor ## Helper , sm_domain> { functor ## Helper(){} \
         template <class Arg1,class Arg2,class Arg3,class Arg4,class Arg5,class Arg6> \
         struct In {typedef functor <Arg1,Arg2,Arg3,Arg4,Arg5,Arg6> type;}; }; \
- functor ## Helper const function_name ;
+ functor ## Helper const function_name = functor ## Helper ();
 
 #else
 
@@ -2075,7 +2077,7 @@
         functor ## Helper , sm_domain> { functor ## Helper(){} \
         template <class Arg1,class Arg2,class Arg3,class Arg4,class Arg5> \
         struct In {typedef functor <Arg1,Arg2,Arg3,Arg4,Arg5> type;}; }; \
- functor ## Helper const function_name ;
+ functor ## Helper const function_name = functor ## Helper ();
 
 #define BOOST_MSM_EUML_METHOD(functor,function,function_name,result_trans,result_state) \
     template <class Param1=void , class Param2=void , class Param3=void , class Param4=void, \
@@ -2201,7 +2203,7 @@
         functor ## Helper , sm_domain> { functor ## Helper(){} \
         template <class Arg1,class Arg2,class Arg3,class Arg4,class Arg5> \
         struct In {typedef functor <Arg1,Arg2,Arg3,Arg4,Arg5> type;}; }; \
- functor ## Helper const function_name ;
+ functor ## Helper const function_name = functor ## Helper ();
 
 #endif
 
@@ -2247,15 +2249,29 @@
         instance_name ## _helper(){} \
         typedef instance_name ## _impl action_name; \
     }; \
- instance_name ## _helper instance_name; \
+ static instance_name ## _helper instance_name; \
     struct instance_name ## _impl : instance_name ## _helper
 
+#define BOOST_MSM_EUML_DECLARE_ACTION(instance_name) \
+ struct instance_name ; \
+ struct instance_name ## _helper : msm::front::euml::euml_action<instance_name > \
+ { \
+ instance_name ## _helper(){} \
+ typedef instance_name action_name; \
+ }; \
+ struct instance_name : instance_name ## _helper
+
 
 #define BOOST_MSM_EUML_EVENT(instance_name) \
     struct instance_name ## _helper : msm::front::euml::euml_event<instance_name ## _helper>{ \
     instance_name ## _helper(){} \
- instance_name ## _helper const& operator()(){return *this;} }; \
- instance_name ## _helper instance_name;
+ instance_name ## _helper const& operator()() const {return *this;} }; \
+ static instance_name ## _helper instance_name;
+
+#define BOOST_MSM_EUML_DECLARE_EVENT(instance_name) \
+ struct instance_name : msm::front::euml::euml_event<instance_name >{ \
+ instance_name(){} \
+ instance_name const& operator()() const {return *this;} };
 
 #define MSM_EUML_CONCAT(param1,param2) param1
 #define MSM_EUML_EVENT_INSTANCE_HELPER_EXECUTE1(z, n, unused) ARG ## n arg ## n
@@ -2280,7 +2296,7 @@
 #define MSM_EUML_EVENT_INSTANCE_HELPER_ATTRIBUTE_MAP(z, n, unused) \
     template <BOOST_PP_ENUM_PARAMS(n, class ARG),class T> \
     void init(BOOST_PP_ENUM(n, MSM_EUML_EVENT_INSTANCE_HELPER_EXECUTE1, ~ ), \
- T,typename ::boost::enable_if< typename boost::mpl::eval_if< typename ::boost::fusion::traits::is_sequence<T>::type,size_helper<T,n>,::boost::mpl::false_>::type,void >::type* dummyval=0) \
+ T,typename ::boost::enable_if< typename boost::mpl::eval_if< typename ::boost::fusion::traits::is_sequence<T>::type,size_helper<T,n>,::boost::mpl::false_>::type,void >::type* =0) \
     { \
         BOOST_PP_REPEAT_FROM_TO(0,n , \
         MSM_EUML_EVENT_HELPER_GET_ATTRIBUTE, ~) \
@@ -2314,7 +2330,7 @@
         BOOST_PP_REPEAT_FROM_TO(1,BOOST_PP_ADD(FUSION_MAX_MAP_SIZE ,1), \
         MSM_EUML_EVENT_INSTANCE_HELPER_OPERATOR_IMPL, instance_name) \
     }; \
- instance_name ## _helper const instance_name;
+ static instance_name ## _helper instance_name;
 
 #define BOOST_MSM_EUML_EVENT_NAME(instance_name) instance_name ## _helper
 
@@ -2322,7 +2338,10 @@
 
 #define BOOST_MSM_EUML_FLAG(instance_name) \
     struct instance_name ## _helper : msm::front::euml::euml_flag<instance_name ## _helper>{}; \
- instance_name ## _helper instance_name;
+ static instance_name ## _helper instance_name;
+
+#define BOOST_MSM_EUML_DECLARE_FLAG(instance_name) \
+ struct instance_name : msm::front::euml::euml_flag<instance_name >{};
 
 #define BOOST_MSM_EUML_STATE_NAME(instance_name) instance_name ## _helper
 
@@ -2374,33 +2393,33 @@
 // following macros declare a state type and create an instance
 #define BOOST_MSM_EUML_STATE(expr,instance_name) \
     struct instance_name ## tag{}; \
- typedef BOOST_TYPEOF(build_state<instance_name ## tag> expr) instance_name ## _helper; \
- instance_name ## _helper const instance_name;
+ typedef BOOST_TYPEOF(build_state<instance_name ## tag> expr) instance_name ## _helper; \
+ static instance_name ## _helper instance_name;
 
-#define BOOST_MSM_EUML_INTERRUPT_STATE(expr,instance_name) \
+#define BOOST_MSM_EUML_INTERRUPT_STATE(expr,instance_name) \
     struct instance_name ## tag{}; \
- typedef BOOST_TYPEOF(build_interrupt_state<instance_name ## tag> expr) instance_name ## _helper; \
- instance_name ## _helper const instance_name;
+ typedef BOOST_TYPEOF(build_interrupt_state<instance_name ## tag> expr) instance_name ## _helper; \
+ static instance_name ## _helper instance_name;
 
-#define BOOST_MSM_EUML_TERMINATE_STATE(expr,instance_name) \
+#define BOOST_MSM_EUML_TERMINATE_STATE(expr,instance_name) \
     struct instance_name ## tag{}; \
- typedef BOOST_TYPEOF(build_terminate_state<instance_name ## tag> expr) instance_name ## _helper; \
- instance_name ## _helper const instance_name;
+ typedef BOOST_TYPEOF(build_terminate_state<instance_name ## tag> expr) instance_name ## _helper; \
+ static instance_name ## _helper instance_name;
 
-#define BOOST_MSM_EUML_EXPLICIT_ENTRY_STATE(region,expr,instance_name) \
- struct instance_name ## tag{}; \
+#define BOOST_MSM_EUML_EXPLICIT_ENTRY_STATE(region,expr,instance_name) \
+ struct instance_name ## tag{}; \
     typedef BOOST_TYPEOF(build_explicit_entry_state<instance_name ## tag BOOST_MSM_EUML_ENTRY_STATE_HELPER(region) > expr) instance_name ## _helper; \
- instance_name ## _helper const instance_name;
+ static instance_name ## _helper instance_name;
 
 #define BOOST_MSM_EUML_ENTRY_STATE(region,expr,instance_name) \
     struct instance_name ## tag{}; \
     typedef BOOST_TYPEOF(build_entry_state<instance_name ## tag BOOST_MSM_EUML_ENTRY_STATE_HELPER(region) > expr) instance_name ## _helper; \
- instance_name ## _helper const instance_name;
+ static instance_name ## _helper instance_name;
 
 #define BOOST_MSM_EUML_EXIT_STATE(expr,instance_name) \
     struct instance_name ## tag{}; \
- typedef BOOST_TYPEOF(build_exit_state<instance_name ## tag> expr) instance_name ## _helper; \
- instance_name ## _helper const instance_name;
+ typedef BOOST_TYPEOF(build_exit_state<instance_name ## tag> expr) instance_name ## _helper; \
+ static instance_name ## _helper instance_name;
 
 
 #ifndef BOOST_MSVC
@@ -2408,12 +2427,12 @@
 #define BOOST_MSM_EUML_TRANSITION_TABLE(expr,instance_name) \
     typedef BOOST_TYPEOF(BOOST_MSM_EUML_BUILD_STT_HELPER BOOST_MSM_EUML_BUILD_STT_HELPER2(expr)) instance_name ## _def; \
     struct instance_name ## _helper : public instance_name ## _def{instance_name ## _helper(){}}; \
- instance_name ## _helper const instance_name;
+ static instance_name ## _helper instance_name;
 
 #define BOOST_MSM_EUML_INTERNAL_TRANSITION_TABLE(expr,instance_name) \
     typedef BOOST_TYPEOF(BOOST_MSM_EUML_BUILD_INTERNAL_STT_HELPER BOOST_MSM_EUML_BUILD_STT_HELPER2(expr)) instance_name ## _def; \
     struct instance_name ## _helper : public instance_name ## _def{instance_name ## _helper(){}}; \
- instance_name ## _helper const instance_name;
+ static instance_name ## _helper instance_name;
 
 #else
 
@@ -2421,13 +2440,13 @@
     struct instance_name ## _helper : \
     public BOOST_TYPEOF(BOOST_MSM_EUML_BUILD_STT_HELPER BOOST_MSM_EUML_BUILD_STT_HELPER2(expr)) \
     {instance_name ## _helper(){}} ; \
- instance_name ## _helper const instance_name;
+ static instance_name ## _helper instance_name;
 
 #define BOOST_MSM_EUML_INTERNAL_TRANSITION_TABLE(expr,instance_name) \
     struct instance_name ## _helper : \
     public BOOST_TYPEOF(BOOST_MSM_EUML_BUILD_INTERNAL_STT_HELPER BOOST_MSM_EUML_BUILD_STT_HELPER2(expr)) \
     {instance_name ## _helper(){}} ; \
- instance_name ## _helper const instance_name;
+ static instance_name ## _helper instance_name;
 
 #endif
 

Modified: branches/release/boost/msm/front/euml/euml.hpp
==============================================================================
--- branches/release/boost/msm/front/euml/euml.hpp (original)
+++ branches/release/boost/msm/front/euml/euml.hpp 2011-05-18 17:34:28 EDT (Wed, 18 May 2011)
@@ -16,5 +16,8 @@
 #include <boost/msm/front/euml/guard_grammar.hpp>
 #include <boost/msm/front/euml/state_grammar.hpp>
 #include <boost/msm/front/euml/stt_grammar.hpp>
+#ifdef BOOST_MSM_EUML_PHOENIX_SUPPORT
+#include <boost/msm/front/euml/phoenix_placeholders.hpp>
+#endif
 
 #endif //BOOST_MSM_FRONT_EUML_EUML_H

Modified: branches/release/boost/msm/front/euml/guard_grammar.hpp
==============================================================================
--- branches/release/boost/msm/front/euml/guard_grammar.hpp (original)
+++ branches/release/boost/msm/front/euml/guard_grammar.hpp 2011-05-18 17:34:28 EDT (Wed, 18 May 2011)
@@ -342,7 +342,7 @@
>,
         proto::when<
             proto::terminal<proto::_>,
- proto::_child
+ proto::_value
>
>
 {};

Modified: branches/release/boost/msm/front/euml/state_grammar.hpp
==============================================================================
--- branches/release/boost/msm/front/euml/state_grammar.hpp (original)
+++ branches/release/boost/msm/front/euml/state_grammar.hpp 2011-05-18 17:34:28 EDT (Wed, 18 May 2011)
@@ -11,6 +11,10 @@
 #ifndef BOOST_MSM_FRONT_EUML_STATE_GRAMMAR_H
 #define BOOST_MSM_FRONT_EUML_STATE_GRAMMAR_H
 
+#ifdef BOOST_MSM_EUML_PHOENIX_SUPPORT
+#include <boost/phoenix/core/meta_grammar.hpp>
+#endif
+
 #include <boost/msm/front/euml/common.hpp>
 #include <boost/fusion/container/vector.hpp>
 #include <boost/fusion/include/pair.hpp>
@@ -210,6 +214,51 @@
>
 {};
 
+#ifdef BOOST_MSM_EUML_PHOENIX_SUPPORT
+struct CustomPhoenixGrammar
+ : proto::switch_<CustomPhoenixGrammar>
+{
+ template <typename Tag, typename Dummy = void>
+ struct case_
+ : proto::and_<
+ proto::not_<BuildGuards> ,
+ proto::not_<BuildActionSequence>,
+ boost::phoenix::meta_grammar::case_<Tag>
+ >
+ {};
+};
+#endif
+
+struct GuardGrammar
+ : proto::or_<
+#ifdef BOOST_MSM_EUML_PHOENIX_SUPPORT
+ proto::when<
+ CustomPhoenixGrammar ,
+ proto::_
+ >,
+#endif
+ proto::when<
+ BuildGuards ,
+ BuildGuards
+ >
+ >
+ {};
+
+struct ActionGrammar
+ : proto::or_<
+#ifdef BOOST_MSM_EUML_PHOENIX_SUPPORT
+ proto::when<
+ CustomPhoenixGrammar ,
+ proto::_
+ >,
+#endif
+ proto::when<
+ BuildActionSequence ,
+ BuildActionSequence
+ >
+ >
+ {};
+
 struct BuildActionsCases
 {
     // The primary template matches nothing:
@@ -504,7 +553,7 @@
>,
         proto::when<
             proto::terminal<proto::_>,
- proto::_child
+ proto::_value
>
>
 {};
@@ -520,7 +569,7 @@
         typedef ::boost::fusion::pair<attr_name ## _,attr_type> attribute_type; \
         attr_name ## _ (){} \
     }; \
-attr_name ## _ const attr_name;
+attr_name ## _ const attr_name = attr_name ## _();
 
 struct make_attributes_tag
 {
@@ -673,12 +722,12 @@
 func_state<
 StateNameTag,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type,
 typename boost::result_of<BuildFlags(Configure)>::type,
@@ -687,8 +736,8 @@
>
 build_state(Expr1 const& ,Expr2 const& , Attr const&, Configure const&, BASE )
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
     typedef typename boost::result_of<BuildFlags(Configure)>::type flags_type;
     typedef typename boost::result_of<BuildDeferred(Configure)>::type deferred_type;
@@ -700,12 +749,12 @@
 func_state<
 StateNameTag,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type,
 typename boost::result_of<BuildFlags(Configure)>::type,
@@ -713,8 +762,8 @@
>
 build_state(Expr1 const& ,Expr2 const& ,Attr const&, Configure const&)
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
     typedef typename boost::result_of<BuildFlags(Configure)>::type flags_type;
     typedef typename boost::result_of<BuildDeferred(Configure)>::type deferred_type;
@@ -726,19 +775,19 @@
 func_state<
 StateNameTag,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type
>
 build_state(Expr1 const& ,Expr2 const& ,Attr const&)
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
     return func_state<StateNameTag,entry_action,exit_action,attributes_type>();
 }
@@ -748,18 +797,18 @@
 func_state<
 StateNameTag,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type
>
 build_state(Expr1 const& ,Expr2 const& )
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     return func_state<StateNameTag,entry_action,exit_action>();
 }
 
@@ -768,14 +817,14 @@
 func_state<
 StateNameTag,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 NoAction
>
 build_state(Expr1 const& )
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
     return func_state<StateNameTag,entry_action,NoAction>();
 }
 template<class StateNameTag>
@@ -874,13 +923,13 @@
 STT,
 typename boost::result_of<BuildInit(Init)>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type
>
 build_sm(STT ,Init , Expr1 const&)
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
     typedef typename boost::result_of<BuildInit(Init)>::type init_type;
     return func_state_machine<StateNameTag,STT,init_type,entry_action>();
 }
@@ -892,19 +941,19 @@
 STT,
 typename boost::result_of<BuildInit(Init)>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type
>
 build_sm(STT ,Init , Expr1 const& ,Expr2 const& )
 {
     typedef typename boost::result_of<BuildInit(Init)>::type init_type;
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     return func_state_machine<StateNameTag,STT,init_type,entry_action,exit_action>();
 }
 
@@ -915,20 +964,20 @@
 STT,
 typename boost::result_of<BuildInit(Init)>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type
>
 build_sm(STT ,Init , Expr1 const& ,Expr2 const& ,Attr const&)
 {
     typedef typename boost::result_of<BuildInit(Init)>::type init_type;
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
     return func_state_machine<StateNameTag,STT,init_type,entry_action,exit_action,attributes_type>();
 }
@@ -940,12 +989,12 @@
 STT,
 typename boost::result_of<BuildInit(Init)>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type,
 typename boost::result_of<BuildFlags(Configure)>::type,
@@ -955,8 +1004,8 @@
 build_sm(STT ,Init , Expr1 const& ,Expr2 const& , Attr const&, Configure const& )
 {
     typedef typename boost::result_of<BuildInit(Init)>::type init_type;
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
     typedef typename boost::result_of<BuildFlags(Configure)>::type flags_type;
     typedef typename boost::result_of<BuildDeferred(Configure)>::type deferred_type;
@@ -973,28 +1022,28 @@
 STT,
 typename boost::result_of<BuildInit(Init)>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type,
 typename boost::result_of<BuildFlags(Configure)>::type,
 typename boost::result_of<BuildDeferred(Configure)>::type,
 typename boost::result_of<BuildConfigure(Configure)>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr3,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr3)>,
+ typename proto::matches<Expr3,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr3)>,
     make_invalid_type>::type
>
 build_sm(STT ,Init , Expr1 const& ,Expr2 const& ,Attr const&, Configure const&, Expr3 const& )
 {
     typedef typename boost::result_of<BuildInit(Init)>::type init_type;
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
- typedef typename boost::result_of<BuildActionSequence(Expr3)>::type no_transition_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr3)>::type no_transition_action;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
     typedef typename boost::result_of<BuildFlags(Configure)>::type flags_type;
     typedef typename boost::result_of<BuildDeferred(Configure)>::type deferred_type;
@@ -1010,36 +1059,36 @@
 STT,
 typename boost::result_of<BuildInit(Init)>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type,
 typename boost::result_of<BuildFlags(Configure)>::type,
 typename boost::result_of<BuildDeferred(Configure)>::type,
 typename boost::result_of<BuildConfigure(Configure)>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr3,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr3)>,
+ typename proto::matches<Expr3,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr3)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr4,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr4)>,
+ typename proto::matches<Expr4,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr4)>,
     make_invalid_type>::type
>
 build_sm(STT ,Init , Expr1 const& ,Expr2 const& , Attr const&, Configure const&, Expr3 const&, Expr4 const& )
 {
     typedef typename boost::result_of<BuildInit(Init)>::type init_type;
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildFlags(Configure)>::type flags_type;
     typedef typename boost::result_of<BuildDeferred(Configure)>::type deferred_type;
     typedef typename boost::result_of<BuildConfigure(Configure)>::type config_type;
- typedef typename boost::result_of<BuildActionSequence(Expr3)>::type no_transition_action;
- typedef typename boost::result_of<BuildActionSequence(Expr4)>::type on_exception_action;
+ typedef typename boost::result_of<ActionGrammar(Expr3)>::type no_transition_action;
+ typedef typename boost::result_of<ActionGrammar(Expr4)>::type on_exception_action;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
     return func_state_machine<StateNameTag,STT,init_type,entry_action,exit_action,attributes_type,flags_type,deferred_type,
                               config_type,no_transition_action,on_exception_action>();
@@ -1052,37 +1101,37 @@
 STT,
 typename boost::result_of<BuildInit(Init)>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type,
 typename boost::result_of<BuildFlags(Configure)>::type,
 typename boost::result_of<BuildDeferred(Configure)>::type,
 typename boost::result_of<BuildConfigure(Configure)>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr3,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr3)>,
+ typename proto::matches<Expr3,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr3)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr4,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr4)>,
+ typename proto::matches<Expr4,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr4)>,
     make_invalid_type>::type,
 BASE
>
 build_sm(STT ,Init , Expr1 const& ,Expr2 const& ,Attr const& , Configure const&, Expr3 const&, Expr4 const& , BASE )
 {
     typedef typename boost::result_of<BuildInit(Init)>::type init_type;
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildFlags(Configure)>::type flags_type;
     typedef typename boost::result_of<BuildDeferred(Configure)>::type deferred_type;
     typedef typename boost::result_of<BuildConfigure(Configure)>::type config_type;
- typedef typename boost::result_of<BuildActionSequence(Expr3)>::type no_transition_action;
- typedef typename boost::result_of<BuildActionSequence(Expr4)>::type on_exception_action;
+ typedef typename boost::result_of<ActionGrammar(Expr3)>::type no_transition_action;
+ typedef typename boost::result_of<ActionGrammar(Expr4)>::type on_exception_action;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
     return func_state_machine<StateNameTag,STT,init_type,entry_action,exit_action,attributes_type,flags_type,deferred_type,
                               config_type,no_transition_action,on_exception_action,BASE>();
@@ -1101,12 +1150,12 @@
 func_state<
 StateNameTag,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type,
 typename ::boost::mpl::push_back< typename boost::result_of<BuildFlags(Configure)>::type,
@@ -1116,8 +1165,8 @@
>
 build_terminate_state(Expr1 const& ,Expr2 const& , Attr const&, Configure const&, BASE )
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename ::boost::mpl::push_back<
         typename boost::result_of<BuildFlags(Configure)>::type,
         ::boost::msm::TerminateFlag >::type flags_type;
@@ -1131,12 +1180,12 @@
 func_state<
 StateNameTag,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type,
 typename ::boost::mpl::push_back< typename boost::result_of<BuildFlags(Configure)>::type,
@@ -1145,8 +1194,8 @@
>
 build_terminate_state(Expr1 const& ,Expr2 const& ,Attr const&, Configure const&)
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename ::boost::mpl::push_back<
         typename boost::result_of<BuildFlags(Configure)>::type,
         ::boost::msm::TerminateFlag >::type flags_type;
@@ -1161,20 +1210,20 @@
 func_state<
 StateNameTag,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type,
 ::boost::mpl::vector<boost::msm::TerminateFlag>
>
 build_terminate_state(Expr1 const& ,Expr2 const& ,Attr const&)
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
     return func_state<StateNameTag,entry_action,exit_action,attributes_type, ::boost::mpl::vector< ::boost::msm::TerminateFlag> >();
 }
@@ -1184,20 +1233,20 @@
 func_state<
 StateNameTag,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 ::boost::fusion::vector<>,
 ::boost::mpl::vector<boost::msm::TerminateFlag>
>
 build_terminate_state(Expr1 const& ,Expr2 const& )
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     return func_state<StateNameTag,entry_action,exit_action,
                       ::boost::fusion::vector<>, ::boost::mpl::vector< ::boost::msm::TerminateFlag> >();
 }
@@ -1207,8 +1256,8 @@
 func_state<
 StateNameTag,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 NoAction,
 ::boost::fusion::vector<>,
@@ -1216,7 +1265,7 @@
>
 build_terminate_state(Expr1 const& )
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
     return func_state<StateNameTag,entry_action,NoAction,::boost::fusion::vector<>,::boost::mpl::vector<boost::msm::TerminateFlag> >();
 }
 template<class StateNameTag>
@@ -1238,12 +1287,12 @@
 func_state<
 StateNameTag,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type,
 typename ::boost::mpl::push_back<
@@ -1256,8 +1305,8 @@
>
 build_interrupt_state(EndInterruptEvent const&,Expr1 const& ,Expr2 const& , Attr const&, Configure const&, BASE )
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
     typedef typename ::boost::mpl::push_back<
                 typename ::boost::mpl::push_back<
@@ -1274,12 +1323,12 @@
 func_state<
 StateNameTag,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type,
 typename ::boost::mpl::push_back<
@@ -1291,8 +1340,8 @@
>
 build_interrupt_state(EndInterruptEvent const&,Expr1 const& ,Expr2 const& ,Attr const&, Configure const&)
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
 
     typedef typename ::boost::mpl::push_back<
@@ -1311,20 +1360,20 @@
 func_state<
 StateNameTag,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type,
 ::boost::mpl::vector<boost::msm::InterruptedFlag, boost::msm::EndInterruptFlag<EndInterruptEvent> >
>
 build_interrupt_state(EndInterruptEvent const&,Expr1 const& ,Expr2 const& ,Attr const&)
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
     return func_state<StateNameTag,entry_action,exit_action,attributes_type,
                      ::boost::mpl::vector< boost::msm::InterruptedFlag, boost::msm::EndInterruptFlag<EndInterruptEvent> > >();
@@ -1335,20 +1384,20 @@
 func_state<
 StateNameTag,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 ::boost::fusion::vector<>,
 ::boost::mpl::vector<boost::msm::InterruptedFlag, boost::msm::EndInterruptFlag<EndInterruptEvent> >
>
 build_interrupt_state(EndInterruptEvent const&,Expr1 const& ,Expr2 const& )
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     return func_state<StateNameTag,entry_action,exit_action,
                       ::boost::fusion::vector<>,
                       ::boost::mpl::vector< boost::msm::InterruptedFlag, boost::msm::EndInterruptFlag<EndInterruptEvent> > >();
@@ -1359,8 +1408,8 @@
 func_state<
 StateNameTag,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 NoAction,
 ::boost::fusion::vector<>,
@@ -1368,7 +1417,7 @@
>
 build_interrupt_state(EndInterruptEvent const&, Expr1 const&)
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
     return func_state<StateNameTag,entry_action,NoAction, ::boost::fusion::vector<>,
                      ::boost::mpl::vector<boost::msm::InterruptedFlag, boost::msm::EndInterruptFlag<EndInterruptEvent> > >();
 }
@@ -1394,12 +1443,12 @@
 StateNameTag,
 ZoneIndex,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type,
 typename boost::result_of<BuildFlags(Configure)>::type,
@@ -1408,8 +1457,8 @@
>
 build_entry_state(Expr1 const& ,Expr2 const& , Attr const&, Configure const&, BASE )
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildFlags(Configure)>::type flags_type;
     typedef typename boost::result_of<BuildDeferred(Configure)>::type deferred_type;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
@@ -1422,12 +1471,12 @@
 StateNameTag,
 ZoneIndex,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type,
 typename boost::result_of<BuildFlags(Configure)>::type,
@@ -1435,8 +1484,8 @@
>
 build_entry_state(Expr1 const& ,Expr2 const& ,Attr const&, Configure const&)
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildFlags(Configure)>::type flags_type;
     typedef typename boost::result_of<BuildDeferred(Configure)>::type deferred_type;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
@@ -1449,19 +1498,19 @@
 StateNameTag,
 ZoneIndex,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type
>
 build_entry_state(Expr1 const& ,Expr2 const& ,Attr const&)
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
     return entry_func_state<StateNameTag,ZoneIndex,entry_action,exit_action,attributes_type>();
 }
@@ -1472,18 +1521,18 @@
 StateNameTag,
 ZoneIndex,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type
>
 build_entry_state(Expr1 const& ,Expr2 const& )
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     return entry_func_state<StateNameTag,ZoneIndex,entry_action,exit_action>();
 }
 
@@ -1493,14 +1542,14 @@
 StateNameTag,
 ZoneIndex,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 NoAction
>
 build_entry_state(Expr1 const& )
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
     return entry_func_state<StateNameTag,ZoneIndex,entry_action,NoAction>();
 }
 
@@ -1523,12 +1572,12 @@
 StateNameTag,
 Event,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type,
 typename boost::result_of<BuildFlags(Configure)>::type,
@@ -1537,8 +1586,8 @@
>
 build_exit_state(Event const&,Expr1 const& ,Expr2 const& , Attr const&, Configure const&, BASE )
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildFlags(Configure)>::type flags_type;
     typedef typename boost::result_of<BuildDeferred(Configure)>::type deferred_type;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
@@ -1551,12 +1600,12 @@
 StateNameTag,
 Event,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type,
 typename boost::result_of<BuildFlags(Configure)>::type,
@@ -1564,8 +1613,8 @@
>
 build_exit_state(Event const&,Expr1 const& ,Expr2 const& ,Attr const&, Configure const&)
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildFlags(Configure)>::type flags_type;
     typedef typename boost::result_of<BuildDeferred(Configure)>::type deferred_type;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
@@ -1578,19 +1627,19 @@
 StateNameTag,
 Event,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type
>
 build_exit_state(Event const&,Expr1 const& ,Expr2 const& ,Attr const&)
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
     return exit_func_state<StateNameTag,Event,entry_action,exit_action,attributes_type>();
 }
@@ -1601,18 +1650,18 @@
 StateNameTag,
 Event,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type
>
 build_exit_state(Event const&,Expr1 const& ,Expr2 const& )
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     return exit_func_state<StateNameTag,Event,entry_action,exit_action>();
 }
 
@@ -1622,14 +1671,14 @@
 StateNameTag,
 Event,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 NoAction
>
 build_exit_state(Event const&, Expr1 const& )
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
     return exit_func_state<StateNameTag,Event,entry_action,NoAction>();
 }
 
@@ -1652,12 +1701,12 @@
 StateNameTag,
 ZoneIndex,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type,
 typename boost::result_of<BuildFlags(Configure)>::type,
@@ -1666,8 +1715,8 @@
>
 build_explicit_entry_state(Expr1 const& ,Expr2 const& , Attr const&, Configure const&, BASE )
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildFlags(Configure)>::type flags_type;
     typedef typename boost::result_of<BuildDeferred(Configure)>::type deferred_type;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
@@ -1680,12 +1729,12 @@
 StateNameTag,
 ZoneIndex,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type,
 typename boost::result_of<BuildFlags(Configure)>::type,
@@ -1693,8 +1742,8 @@
>
 build_explicit_entry_state(Expr1 const& ,Expr2 const& ,Attr const&, Configure const&)
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildFlags(Configure)>::type flags_type;
     typedef typename boost::result_of<BuildDeferred(Configure)>::type deferred_type;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
@@ -1707,19 +1756,19 @@
 StateNameTag,
 ZoneIndex,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type,
 typename boost::result_of<BuildAttributes(Attr)>::type
>
 build_explicit_entry_state(Expr1 const& ,Expr2 const& ,Attr const&)
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     typedef typename boost::result_of<BuildAttributes(Attr)>::type attributes_type;
     return explicit_entry_func_state<StateNameTag,ZoneIndex,entry_action,exit_action,attributes_type>();
 }
@@ -1730,18 +1779,18 @@
 StateNameTag,
 ZoneIndex,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr2,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr2)>,
+ typename proto::matches<Expr2,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr2)>,
     make_invalid_type>::type
>
 build_explicit_entry_state(Expr1 const& ,Expr2 const& )
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
- typedef typename boost::result_of<BuildActionSequence(Expr2)>::type exit_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr2)>::type exit_action;
     return explicit_entry_func_state<StateNameTag,ZoneIndex,entry_action,exit_action>();
 }
 
@@ -1751,14 +1800,14 @@
 StateNameTag,
 ZoneIndex,
 typename ::boost::mpl::eval_if<
- typename proto::matches<Expr1,BuildActionSequence>::type,
- boost::result_of<BuildActionSequence(Expr1)>,
+ typename proto::matches<Expr1,ActionGrammar>::type,
+ boost::result_of<ActionGrammar(Expr1)>,
     make_invalid_type>::type,
 NoAction
>
 build_explicit_entry_state(Expr1 const& )
 {
- typedef typename boost::result_of<BuildActionSequence(Expr1)>::type entry_action;
+ typedef typename boost::result_of<ActionGrammar(Expr1)>::type entry_action;
     return explicit_entry_func_state<StateNameTag,ZoneIndex,entry_action,NoAction>();
 }
 

Modified: branches/release/boost/msm/front/euml/stt_grammar.hpp
==============================================================================
--- branches/release/boost/msm/front/euml/stt_grammar.hpp (original)
+++ branches/release/boost/msm/front/euml/stt_grammar.hpp 2011-05-18 17:34:28 EDT (Wed, 18 May 2011)
@@ -104,12 +104,15 @@
     typedef TempRow<typename Right::Source,typename Right::Evt,typename Left::Target
                    ,typename Right::Action,typename Right::Guard> type;
 };
+
 struct BuildEventPlusGuard
- : proto::when<
- proto::subscript<proto::terminal<event_tag>,BuildGuards >,
- TempRow<none,proto::_left,none,none,BuildGuards(proto::_right)>()
+ : proto::or_<
+ proto::when<
+ proto::subscript<proto::terminal<event_tag>, GuardGrammar >,
+ TempRow<none,proto::_left,none,none, GuardGrammar(proto::_right)>(proto::_right)
>
-{};
+ >
+ {};
 
 struct BuildSourceState
    : proto::or_<
@@ -126,8 +129,8 @@
 
 struct BuildSourcePlusGuard
     : proto::when<
- proto::subscript<BuildSourceState,BuildGuards >,
- TempRow<BuildSourceState(proto::_left),none,none,none,BuildGuards(proto::_right)>()
+ proto::subscript<BuildSourceState,GuardGrammar >,
+ TempRow<BuildSourceState(proto::_left),none,none,none,GuardGrammar(proto::_right)>(proto::_right)
>
 {};
 
@@ -139,19 +142,17 @@
                 TempRow<none,proto::_,none>() >
         // event / action
        , proto::when<
- proto::divides<proto::terminal<event_tag>,BuildActionSequence >,
- TempRow<none,proto::_left,none,
- BuildActionSequence(proto::_right) >() >
+ proto::divides<proto::terminal<event_tag>,ActionGrammar >,
+ TempRow<none,proto::_left,none,ActionGrammar(proto::_right) >(proto::_right) >
         // event [ guard ]
        , proto::when<
- proto::subscript<proto::terminal<event_tag>,BuildGuards >,
- TempRow<none,proto::_left,none,none,BuildGuards(proto::_right)>() >
+ proto::subscript<proto::terminal<event_tag>,GuardGrammar >,
+ TempRow<none,proto::_left,none,none,GuardGrammar(proto::_right)>(proto::_right) >
         // event [ guard ] / action
        , proto::when<
- proto::divides<BuildEventPlusGuard,
- BuildActionSequence >,
+ proto::divides<BuildEventPlusGuard, ActionGrammar>,
                 fusion_event_action_guard<BuildEventPlusGuard(proto::_left),
- TempRow<none,none,none,BuildActionSequence(proto::_right)>()
+ TempRow<none,none,none,ActionGrammar(proto::_right)>(proto::_right)
>()
>
>
@@ -164,19 +165,18 @@
                 TempRow<BuildSourceState(proto::_),none,none>() >
         // == source / action
        , proto::when<
- proto::divides<BuildSourceState,BuildActionSequence >,
- TempRow<BuildSourceState(proto::_left),none,none,
- BuildActionSequence(proto::_right) >() >
+ proto::divides<BuildSourceState,ActionGrammar >,
+ TempRow<BuildSourceState(proto::_left),none,none,ActionGrammar(proto::_right) >(proto::_right) >
         // == source [ guard ]
        , proto::when<
- proto::subscript<BuildSourceState,BuildGuards >,
- TempRow<BuildSourceState(proto::_left),none,none,none,BuildGuards(proto::_right)>() >
+ proto::subscript<BuildSourceState,GuardGrammar >,
+ TempRow<BuildSourceState(proto::_left),none,none,none,GuardGrammar(proto::_right)>(proto::_right) >
         // == source [ guard ] / action
        , proto::when<
                 proto::divides<BuildSourcePlusGuard,
- BuildActionSequence >,
+ ActionGrammar >,
                 fusion_source_action_guard<BuildSourcePlusGuard(proto::_left),
- TempRow<none,none,none,BuildActionSequence(proto::_right)>()
+ TempRow<none,none,none,ActionGrammar(proto::_right)>(proto::_right)
>()
>
>

Modified: branches/release/boost/msm/front/functor_row.hpp
==============================================================================
--- branches/release/boost/msm/front/functor_row.hpp (original)
+++ branches/release/boost/msm/front/functor_row.hpp 2011-05-18 17:34:28 EDT (Wed, 18 May 2011)
@@ -256,7 +256,6 @@
         // no action, no guard
         typedef sm__i_row_tag row_type_tag;
     };
- struct state_tag{};
     struct event_tag{};
     struct action_tag{};
     struct state_action_tag{};

Deleted: branches/release/boost/msm/mpl_graph/detail/as_mpl_map.hpp
==============================================================================
--- branches/release/boost/msm/mpl_graph/detail/as_mpl_map.hpp 2011-05-18 17:34:28 EDT (Wed, 18 May 2011)
+++ (empty file)
@@ -1,100 +0,0 @@
-// Copyright 2008-2010 Gordon Woodhull
-// 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)
-
-// this is an experiment at implementing a metafunction that's
-// present in fusion but not in mpl
-// based on fusion/container/map/detail/as_map.hpp
-/*=============================================================================
- Copyright (c) 2001-2006 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 BOOST_PP_IS_ITERATING
-#if !defined(AS_MPL_MAP_HPP)
-#define AS_MPL_MAP_HPP
-
-#define AS_MPL_MAP_SIZE 20
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/repeat.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/inc.hpp>
-#include <boost/preprocessor/dec.hpp>
-#include <boost/mpl/map.hpp>
-#include <boost/mpl/deref.hpp>
-#include <boost/mpl/next.hpp>
-
-namespace boost { namespace mpl {
-
- namespace detail {
- template <int size>
- struct as_map;
-
- }
- template<typename Seq>
- struct as_map : detail::as_map<mpl::size<Seq>::value>::template
- apply<typename mpl::begin<Seq>::type> {};
-
- namespace detail
-{
- template <int size>
- struct as_map;
-
- template <>
- struct as_map<0>
- {
- template <typename Iterator>
- struct apply
- {
- typedef map<> type;
- };
-
- };
-
-#define BOOST_AS_MPL_MAP_NEXT_ITERATOR(z, n, data) \
- typedef typename mpl::next<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(I, BOOST_PP_INC(n));
-
-#define BOOST_AS_MPL_MAP_DEREF_ITERATOR(z, n, data) \
- typedef typename mpl::deref<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(T, n);
-
-#define BOOST_PP_FILENAME_1 <boost/msm/mpl_graph/detail/as_mpl_map.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, AS_MPL_MAP_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_AS_MPL_MAP_NEXT_ITERATOR
-#undef BOOST_AS_MPL_MAP_DEREF_ITERATOR
-
-}}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- template <>
- struct as_map<N>
- {
- template <typename I0>
- struct apply
- {
- BOOST_PP_REPEAT(N, BOOST_AS_MPL_MAP_NEXT_ITERATOR, _)
- BOOST_PP_REPEAT(N, BOOST_AS_MPL_MAP_DEREF_ITERATOR, _)
- typedef map<BOOST_PP_ENUM_PARAMS(N, T)> type;
- };
-
- };
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-

Copied: branches/release/boost/msm/msm_grammar.hpp (from r71734, /trunk/boost/msm/msm_grammar.hpp)
==============================================================================
--- /trunk/boost/msm/msm_grammar.hpp (original)
+++ branches/release/boost/msm/msm_grammar.hpp 2011-05-18 17:34:28 EDT (Wed, 18 May 2011)
@@ -11,6 +11,7 @@
 #ifndef BOOST_MSM_GRAMMAR_H
 #define BOOST_MSM_GRAMMAR_H
 
+#include <boost/msm/common.hpp>
 
 
 namespace boost { namespace msm

Modified: branches/release/boost/msm/proto_config.hpp
==============================================================================
--- branches/release/boost/msm/proto_config.hpp (original)
+++ branches/release/boost/msm/proto_config.hpp 2011-05-18 17:34:28 EDT (Wed, 18 May 2011)
@@ -13,22 +13,6 @@
 
 #define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#ifdef BOOST_MSVC
- #if BOOST_PROTO_MAX_ARITY <= 7
- #ifdef BOOST_MPL_LIMIT_METAFUNCTION_ARITY
- #undef BOOST_MPL_LIMIT_METAFUNCTION_ARITY
- #endif
- #define BOOST_MPL_LIMIT_METAFUNCTION_ARITY 7
- #define BOOST_PROTO_MAX_ARITY 7
- #endif
-#else
- #if BOOST_PROTO_MAX_ARITY <= 6
- #ifdef BOOST_MPL_LIMIT_METAFUNCTION_ARITY
- #undef BOOST_MPL_LIMIT_METAFUNCTION_ARITY
- #endif
- #define BOOST_MPL_LIMIT_METAFUNCTION_ARITY 6
- #define BOOST_PROTO_MAX_ARITY 6
- #endif
-#endif
+#include <boost/proto/proto_fwd.hpp>
 
 #endif //BOOST_MSM_PROTO_CONFIG_H


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