Boost logo

Boost :

Subject: Re: [boost] [msm] Version 2.0 available
From: Andreas Huber (ahd6974-spamboostorgtrap_at_[hidden])
Date: 2009-11-12 12:16:41


>>:-) You won't get any flames from me. Yes, I don't agree with some of the
>>points in MsmSession_Handout.pdf (e.g. 2.4, a user in his right mind would
>>put Stopped, Open, Paused and Playing into an outer CDLoaded state and
>>then
>>only say if (state_downcast<const CDLoaded *> != 0)).
>
> True, it is a possible solution. But 1) you don't always want to
> refactor your state machine and

But you'd have to refactor an equivalent MSM Machine too (you'd need to
introduce the flag), right?

> 2) sometimes you can't.
> For example, to take the example in the Statechart
> documentation(http://www.boost.org/doc/libs/1_40_0/libs/statechart/doc/tutorial.html#StateQueries),
>
> if ( ( state_downcast< const NumLockOff * >() != 0 ) &&
> ( state_downcast< const CapsLockOff * >() != 0 ) &&
> ( state_downcast< const ScrollLockOff * >() != 0 ) )
>
> could have been replaced by
> if(fsm.is_flag_active<IsOffState,Active::Flag_AND>()). And in this
> case I don't see a working refactoring solution.

Agreed. The example is somewhat far-fetched, but such queries are needed
sometimes (mostly to work around the limitation that statechart doesn't
offer join bars).

Regards,

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

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk