[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
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
> {};
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_m... as opposed to http://www.boost.org/libs/statechart/doc/reference.html#ClassTemplatesimple_...
struct StateA1 : sc::simple_state
> {}; 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