we will move to plan B. Define a second region in your fsm, with only one dummy state, then add for every event you want to process
independently of your "regular" states a transition in the fsm from this dummy state to itself (or give this state an internal transition table).
As every region gets a chance to process any event, you will get the same effect and the reduced compilation time.
Thanks, this is exactly what I was looking for! I implemented this and it works perfectly, and it cut down my transition table significantly!
The next question applies to another smaller subset of events I need to deal with. These can also happen regardless of what state the machine is
in, but transition the machine to a one my "regular" states. I can use a similar approach with these, but obviously I need an additional method to
put the machine back to the dummy state in addition to the "regular" state the incoming event transitions the machine to. How would I implement
this, or something that accomplishes something similar?
Thanks!
Pete
Hi, it took a little long but I managed to make plan A work. If you provide an internal transition table (internal_transition_table) in your fsm definition, you can avoid having to define a second region with a single state. Instead you get a transition looking like this: struct internal_transition_table : boost::mpl::vector< Internal < event , action , guard >
{};
In this case, action and guard are functors but it works with other rows too. You will need the latest trunk version. HTH, Christophe