
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@mail.ru