Boost logo

Boost :

From: Robert Bell (belvis_at_[hidden])
Date: 2004-05-28 18:15:45


Andreas Huber wrote:
> F2. The UML standard defines that all currently active states are left when
> a state machine is terminated. I do not quote the text here as in the UML
> standard this is not a single definition but consists of what a final state
> is (2.12.2.5) and how states are exited when a transition is made
> (2.12.4.6). What is called "terminating the state machine" in this post (and
> in the boost::fsm documentation) is called "making a transition to the final
> state" in UML.

[and snip]

> A1. When a state machine object is destructed, the modeled state machine
> must also be terminated (i.e. the destructor of the state machine
> unconditionally terminates the state machine before returning to the
> client). Actually, the UML standard in one place (2.12.4.4) hints in this
> direction but it is far from clear whether this assumption is covered by the
> UML standard (and could thus be put in the hard facts section).

F2 defines termination as "making a transition to the final state". It's
far from clear that destroying a state machine should make a transition
to the final state. Specifically, if the machine is in a state which has
no transition to the final state, what does it mean to terminate the
machine? If the machine is in such a state when it is destroyed, does it
make sense to pretend it can transition to the final state when no such
transition exists?

I would think that when a state machine object is destroyed, no actions
(exit or otherwise) should be executed; rather, it should just tear down
the state machine and release its resources (state objects, transitions,
whatever). What am I missing?

Bob


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