[statechart] orthogonal states in state_machine?
I would like to create a state_machine class that contains some context information that can be written by orthogonal<0> and read by orthogonal<1>. Graphically: _______________ | State Machine | |_______________|______________ | | | StateA1 <------> StateA2 | | - - - - - - - - - - - - - - | | StateB1 <------> StateB2 | |_______________________________| I declare using struct StateA1, StateB1; struct MyStateMachine : sc::state_machine< MyStateMachine, mpl::list<StateA1, StateB1> > {}; struct StateA1 : sc::simple_state<StateA1, MyStateMachine::orthogonal<0> > {}; but get a compile error on line 2 as "orthogonal not a member of MyStateMachine". Do I need to declare one state in MyStateMachine, and make the mpl::list a second template argument to it in order to get what I want? Thanks in advance, Chris
Hi Chris
I would like to create a state_machine class that contains some context information that can be written by orthogonal<0> and read by orthogonal<1>. Graphically: _______________ | State Machine | |_______________|______________ | | | StateA1 <------> StateA2 | | - - - - - - - - - - - - - - | | StateB1 <------> StateB2 | |_______________________________|
I declare using
struct StateA1, StateB1; struct MyStateMachine : sc::state_machine< MyStateMachine, mpl::list<StateA1, StateB1> > {};
The InitialState parameter of the state_machine class template cannot be an mpl::list<>. Please see <http://www.boost.org/libs/statechart/doc/reference.html#ClassTemplatestate_machine> as opposed to <http://www.boost.org/libs/statechart/doc/reference.html#ClassTemplatesimple_state>
struct StateA1 : sc::simple_state<StateA1, MyStateMachine::orthogonal<0> > {};
but get a compile error on line 2 as "orthogonal not a member of MyStateMachine". Do I need to declare one state in MyStateMachine, and make the mpl::list a second template argument to it in order to get what I want?
Yes, only a state can contain orthogonal regions. HTH, -- Andreas Huber When replying by private email, please remove the words spam and trap from the address shown in the header.
participants (2)
-
Andreas Huber
-
Chris Paulse