$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Andreas Huber (ahd6974-spamboostorgtrap_at_[hidden])
Date: 2007-08-29 18:11:06
Hi Leandro
> I saw your email[1] via the gmane web interface (did you Cc me?
Not exactly, I forwarded the message:
To: llucarella_at_[hidden]
Message-ID: <37229.1564.qm_at_[hidden]>
> maybe
> you mail was eaten by my antispam =).
Probably...
> I don't really know how to handle "partial" completion transitions (I
> mean, with guards). But simple completion transitions could be expressed
> something like:
>
> struct B;
> struct A: sc::simple_state< A, Machine >
> {
> typedef sc::completion_transition< B > reactions;
> };
>
> I guess is better to have partial support than no support at all =)
It seems what you want to do with completion transitions can easily be
achieved by posting an event in the entry action of a state? That is, the
only additional work you'd have to do in comparison to a library supported
scenario is to derive from state instead of simple_state and post an event
in the ctor? A state that automatically posts an event in its entry action
is useful in other scenarios, please see Dynamic choice points under:
<http://www.boost.org/libs/statechart/doc/rationale.html#Limitations>
I'm considering to add such a class. I'll have to think about the naming and
the exact interface though.
> Another simple question about statechart: it can handle this?
>
> ,-----------------.
> | S |<--- T
> | |
> o--+--> A --> B <--o |
> | |
> `-----------------´
>
> I want the state machine to start at A, but any other time S is entered,
> I want to start at B. AFAIK this is possible in UML.
Really? A pointer would be appreciated.
> Can I express that
> in boost.statechart?
Not directly, again you could find out which state you want to enter in a
initial helper state entry action and then post an appropriate event.
> I think I hit an static assertion when trying to do
> that (/usr/include/boost/statechart/simple_state.hpp:885: error: invalid
> application of sizeof to incomplete type
> boost::STATIC_ASSERTION_FAILURE<false>).
You passed mpl::list filled with multiple initial states? If so, then you
tried to create a state with multiple orthogonal regions:
<http://www.boost.org/libs/statechart/doc/tutorial.html#OrthogonalStates>
-- Andreas Huber When replying by private email, please remove the words spam and trap from the address shown in the header.