Boost logo

Boost Users :

Subject: Re: [Boost-users] [statechart] forward_event()
From: Andreas Huber (ahd6974-spamboostorgtrap_at_[hidden])
Date: 2009-10-09 11:07:11


Hi

> I have a state [A] with three orthogonal substates [X,Y,Z]. The states [A]
> and [X] provide custom reactions for an event [E]. If processing event [E]
> the state machine calls first the custom reaction in [A]. This method
> returns with forward_event() ; After this the custom reaction in [A] is
> called again. And then custom reaction in [X] is called.
>
> This is a little cumbersome. Why is the custom reaction in [A] called
> twice?
>
> And why is the outermost state called first? It would be something easier
> to work vice versa. First the more "specialized" inner states could do
> there work and then the "generalized" outer states can do the everything
> else.

This behavior is as designed, for an in-depth description please see:

<http://www.boost.org/libs/statechart/doc/reference.html#process_event>

Reaction search always starts with an *arbitrary* innermost state and then
first works its way outward. Only when the outermost state has been reached
is the next innermost state checked for a suitable reaction. This behavior
stems form the fact that all reactions defined in outer states are
"inherited" by their direct and indirect inner states, as mandated by the
UML standard.

What are you trying to achieve? Maybe I can suggest a more suitable
implementation.

HTH,

-- 
Andreas Huber
When replying by private email, please remove the words spam and trap
from the address shown in the header. 

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net