mirror of
https://github.com/boostorg/statechart.git
synced 2026-02-01 21:02:09 +00:00
220 lines
8.1 KiB
HTML
220 lines
8.1 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Language" content="en-us">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
|
|
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
|
|
<meta name="ProgId" content="FrontPage.Editor.Document">
|
|
<link rel="stylesheet" type="text/css" href="../../../boost.css">
|
|
|
|
<title>The Boost Statechart Library - Overview</title>
|
|
</head>
|
|
|
|
<body link="#0000FF" vlink="#800080">
|
|
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
|
|
"header">
|
|
<tr>
|
|
<td valign="top" width="300">
|
|
<h3><a href="../../../index.htm"><img alt="C++ Boost" src=
|
|
"../../../boost.png" border="0" width="277" height="86"></a></h3>
|
|
</td>
|
|
|
|
<td valign="top">
|
|
<h1 align="center">The Boost Statechart Library</h1>
|
|
|
|
<p align="center">(formerly known as boost::fsm)</p>
|
|
|
|
<h2 align="center">Overview</h2>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<hr>
|
|
|
|
<h2>Contents</h2>
|
|
|
|
<dl class="index">
|
|
<dt><a href="#Overview">Overview</a></dt>
|
|
|
|
<dd><a href="#SupportedPlatforms">Supported platforms</a></dd>
|
|
|
|
<dd><a href="#GettingStarted">Getting started</a></dd>
|
|
|
|
<dd><a href="#Audience">Audience</a></dd>
|
|
|
|
<dt> </dt>
|
|
|
|
<dt><a href="tutorial.html">Tutorial</a> [pdf: <a href=
|
|
"tutorial.pdf">English</a>, <a href=
|
|
"http://prdownloads.sourceforge.jp/jyugem/7127/fsm-tutorial-jp.pdf">Japanese</a>]</dt>
|
|
|
|
<dt><a href="uml_mapping.html">UML to Boost.Statechart mapping
|
|
summary</a></dt>
|
|
|
|
<dt><a href="faq.html">Frequently Asked Questions (FAQs)</a></dt>
|
|
|
|
<dt><a href="configuration.html">Configuration</a></dt>
|
|
|
|
<dt><a href="definitions.html">Definitions</a></dt>
|
|
|
|
<dt><a href="reference.html">Reference</a> [pdf: <a href=
|
|
"reference.pdf">English</a>]</dt>
|
|
|
|
<dt><a href="rationale.html">Rationale</a> [pdf: <a href=
|
|
"rationale.pdf">English</a>]</dt>
|
|
|
|
<dt><a href="performance.html">Performance</a></dt>
|
|
|
|
<dt><a href="acknowledgments.html">Acknowledgments</a></dt>
|
|
|
|
<dt><a href="future_and_history.html#ToDoList">To-do list</a></dt>
|
|
|
|
<dt><a href="future_and_history.html#ChangeHistory">Change
|
|
history</a></dt>
|
|
</dl>
|
|
<hr>
|
|
|
|
<h2><a name="Overview" id="Overview">Overview</a></h2>
|
|
|
|
<p>Welcome to Boost.Statechart, a C++ library for finite state machines.
|
|
Features include:</p>
|
|
|
|
<ul>
|
|
<li>Straightforward transformation from UML statechart to executable C++
|
|
code and vice versa. Currently, this needs to be done manually both ways
|
|
but it should not be difficult to automate these tasks</li>
|
|
|
|
<li>Comprehensive <a href=
|
|
"http://www.omg.org/cgi-bin/doc?formal/03-03-01">UML semantics</a>
|
|
support:
|
|
|
|
<ul>
|
|
<li>Hierarchical (composite, nested) states</li>
|
|
|
|
<li>Orthogonal (concurrent) states</li>
|
|
|
|
<li>Entry-, exit- and transition-actions</li>
|
|
|
|
<li>Guards</li>
|
|
|
|
<li>Shallow/deep history</li>
|
|
|
|
<li>Event deferral</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>Error handling support</li>
|
|
|
|
<li>Maximum type-safety</li>
|
|
|
|
<li>Compile-time statechart validation</li>
|
|
|
|
<li>Support for asynchronous state machines and multi-threading</li>
|
|
|
|
<li>State-local storage</li>
|
|
|
|
<li>Generic design allowing for the customization of memory management,
|
|
error handling and threading</li>
|
|
</ul>
|
|
|
|
<h3><a name="SupportedPlatforms" id="SupportedPlatforms">Supported
|
|
platforms</a></h3>
|
|
|
|
<p>Whether and how Boost.Statechart will work on your platform is best
|
|
determined on the <a href=
|
|
"http://engineering.meta-comm.com/boost-regression/CVS-RC_1_34_0/developer/statechart.html">
|
|
status page</a>.
|
|
If the cells in your compilers column are all green, the library
|
|
should work as advertised. Cells of different color indicate possible
|
|
problems; follow the links for details. Before employing the library I
|
|
would also advise to run the tests (see <a href="#GettingStarted">Getting
|
|
started</a>) on your particular platform in all the modes (debug, release,
|
|
etc.) that are later used during development (the status page shows debug
|
|
mode results only). The closer the test compiler switches mirror the ones
|
|
that are later used during development, the less likely are future
|
|
surprises. An example of such a surprise is Intel 9.0 with MSVC 7.1 base
|
|
toolset, where DllTestNormal and DllTestNative pass in debug mode but fail
|
|
in release mode.</p>
|
|
|
|
<h3><a name="GettingStarted" id="GettingStarted">Getting started</a></h3>
|
|
|
|
<ol>
|
|
<li>Follow the steps 1-3 described on the <a href=
|
|
"../../../more/getting_started.html">Boost Getting Started Page</a>.
|
|
After doing so, somewhere on your hard drive you should have a directory
|
|
containing the boost distribution (e.g. under
|
|
<code>D:\Data\boost_1_34_0</code>), the bjam executable installed in
|
|
your <code>PATH</code> and your toolset configured in
|
|
<a href="../../../tools/build/v2/user-config.jam">user-config.jam</a>.
|
|
</li>
|
|
|
|
<li>Open a command prompt and change the current directory to
|
|
<code>D:\Data\boost_1_34_0\libs\statechart\examples</code></li>
|
|
|
|
<li>To compile the examples in debug mode, type <code>bjam</code> and hit
|
|
CR. Please refer to the bjam command line documentation for other options.
|
|
After the build has finished you will find all executables in
|
|
<code>D:\Data\boost_1_34_0\libs\statechart\examples\run</code>. In
|
|
addition to the examples discussed in the tutorial, this script also
|
|
builds the Performance executable in different variants, which show the
|
|
effects of various choices on runtime performance, executable size, etc.
|
|
Moreover, the Handcrafted executable is also built, which serves to
|
|
compare performance of a simple Boost.Statechart machine with its
|
|
handcrafted equivalent</li>
|
|
|
|
<li>Optional: To run the tests, invoke bjam in the directory
|
|
<code>D:\Data\boost_1_33_0\libs\statechart\test</code></li>
|
|
</ol>
|
|
|
|
<h3><a name="Audience" id="Audience">Audience</a></h3>
|
|
|
|
<p>Throughout all Boost.Statechart documentation it is assumed that the
|
|
reader is familiar with the state machine concept, UML statecharts and most
|
|
of the UML state machine terminology. The following links might be
|
|
interesting if this is not the case:</p>
|
|
|
|
<ul>
|
|
<li><a href=
|
|
"http://www.objectmentor.com/resources/articles/umlfsm.pdf">
|
|
http://www.objectmentor.com/resources/articles/umlfsm.pdf</a>
|
|
introduces state machines and UML statecharts</li>
|
|
|
|
<li><a href=
|
|
"http://www.sts.tu-harburg.de/teaching/ws-99.00/OOA+D/StateDiagrams.pdf">
|
|
http://www.sts.tu-harburg.de/teaching/ws-99.00/OOA+D/StateDiagrams.pdf</a>
|
|
explains most of the UML statechart elements and terminology</li>
|
|
|
|
<li>The inventor of statecharts, David Harel, presents a thorough but
|
|
still very readable discussion in his original paper: : <a href=
|
|
"http://www.wisdom.weizmann.ac.il/~dharel/SCANNED.PAPERS/Statecharts.pdf">
|
|
http://www.wisdom.weizmann.ac.il/~dharel/SCANNED.PAPERS/Statecharts.pdf</a></li>
|
|
|
|
<li>The UML specifications (formal) can be found here: <a href=
|
|
"http://www.omg.org/cgi-bin/doc?formal/03-03-01">
|
|
http://www.omg.org/cgi-bin/doc?formal/03-03-01</a>
|
|
(see chapters 2.12 and 3.74)</li>
|
|
</ul>
|
|
|
|
<p>Some of the used terminology cannot be found in the UML specifications,
|
|
please see <a href="definitions.html">Definitions</a> for more
|
|
information.</p>
|
|
<hr>
|
|
|
|
<p><a href="http://validator.w3.org/check?uri=referer"><img border="0"
|
|
src="http://www.w3.org/Icons/valid-html401"
|
|
alt="Valid HTML 4.01 Transitional" height="31" width="88"></a></p>
|
|
|
|
<p>Revised
|
|
<!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->12 July, 2006<!--webbot bot="Timestamp" endspan i-checksum="21145" --></p>
|
|
|
|
<p><i>© Copyright <a href="contact.html">Andreas Huber Dönni</a>
|
|
2003-<!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y" startspan -->2006<!--webbot bot="Timestamp" endspan i-checksum="770" --></i></p>
|
|
|
|
<p><i>Distributed under the Boost Software License, Version 1.0. (See
|
|
accompanying file <a href="../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
|
|
copy at <a href=
|
|
"http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</i></p>
|
|
</body>
|
|
</html>
|