Boost logo

Boost :

From: Andrey Semashev (andysem_at_[hidden])
Date: 2006-12-16 18:28:21


Hi,

I would like to purpose a new library addition to Boost: Boost.FSM.
FSM stands for Finite State Machine, so the library is aimed to ease
creation and support of state machines in C++.

State machine is a programming concept that allows to differentiate
behavior of objects depending in their internal state. A simple
example of such is a static variable in a function body. Before the
first call to the function the memory that should hold the variable is
in uninitialized state. During the first function call the variable
constructs (in other words, it passes to an initialized state). And
during any consequent calls the initialized variable is used (i.e. in
the initialized state the function call does not lead to the variable
construction).

Of course, such simple logic may easily be implemented without any
library support, using some boolean flags or state identifiers. But as
the state machine complexity raises adding a new state to the machine
gets more difficult and error-prone. This library is intended to hide
basic state machine infrastructure and let the library user to focus
on states and transitions between them.

I've uploaded the library implementation, documentation and test to
the Vault:

http://boost-consulting.com/vault/index.php?action=downloadfile&filename=state_machine.zip&directory=&

The implementation and documentation are quite stable, though there
may be typos and mistakes in the documentation. The test still needs
some cosmetic changes and a Jamfile, but it can be used as an example
of the library usage.

Please, post here your opinions on wether this library should have its
place in Boost. Thank you.

PS: Notes and suggestions about the implementation and documentation
are also appreciated.

-- 
Best regards,
 Andrey                          mailto:andysem_at_[hidden]

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