mirror of
https://github.com/boostorg/statechart.git
synced 2026-01-31 08:42:10 +00:00
https://svn.boost.org/svn/boost/trunk ........ r44071 | andreas_huber69 | 2008-04-06 08:16:00 -0700 (Sun, 06 Apr 2008) | 1 line Adapted fifo_scheduler<> to the changed allocator interface of boost::function. ........ r44073 | pdimov | 2008-04-06 09:23:42 -0700 (Sun, 06 Apr 2008) | 1 line Add MT runs of yield_k_test and spinlock_try_test. ........ r44074 | pdimov | 2008-04-06 09:53:11 -0700 (Sun, 06 Apr 2008) | 1 line detail/spinlock_pool.hpp added. ........ r44078 | ramey | 2008-04-06 13:01:48 -0700 (Sun, 06 Apr 2008) | 1 line change BOOST_IS_ABSTRACT to BOOST_ASSUME_ABSTRACT ........ r44079 | ramey | 2008-04-06 13:02:54 -0700 (Sun, 06 Apr 2008) | 1 line change BOOST_IS_ABSTRACT to BOOST_ASSUME_ABSTRACT ........ r44080 | ramey | 2008-04-06 13:03:21 -0700 (Sun, 06 Apr 2008) | 1 line change BOOST_IS_ABSTRACT to BOOST_ASSUME_ABSTRACT ........ r44081 | ramey | 2008-04-06 13:03:59 -0700 (Sun, 06 Apr 2008) | 1 line change BOOST_IS_ABSTRACT to BOOST_ASSUME_ABSTRACT ........ r44082 | ramey | 2008-04-06 13:04:20 -0700 (Sun, 06 Apr 2008) | 1 line enhanced test to detect more errors ........ r44083 | ramey | 2008-04-06 13:05:56 -0700 (Sun, 06 Apr 2008) | 2 lines remove supperfluous abstract.hpp header ........ r44086 | jurko | 2008-04-06 15:36:59 -0700 (Sun, 06 Apr 2008) | 1 line Made the msvc toolset registration example consistent with its comment and added an additional one specifying the exact msvc version. Many stylistic comment changes. ........ r44087 | jurko | 2008-04-07 02:55:18 -0700 (Mon, 07 Apr 2008) | 10 lines Solved the problem with child process returning the value 259 (Windows constant STILL_ACTIVE) causing bjam never to detect that it exited and therefore keep running in an endless loop. Done by relying on the Windows WaitForMultipleObjects() function to detect when a process has exited instead of GetExitCodeProcess(). The later function's MSDN article (http://msdn2.microsoft.com/en-us/library/ms683189(VS.85).aspx) warns about this problem. Solved the problem with bjam going into an active wait state, hogging up processor resources, when waiting for one of its child processes to terminate while not all of its available child process slots are being used. To see this bug in action, try compiling a simple C++ program on a 2 processor PC with the -j 2 command-line option and watching how much processor resources bjam uses while linking. Was caused by treating unused process slots as used in the try_wait() function, causing the WaitForMultipleObjects() Windows API call to exit instantly with an error which was then getting incorrectly interpreted as a timeout, starting the whole cycle anew. Solved a race condition between bjam's output reading/child process termination detection and the child process's output generation/termination which could have caused bjam not to collect the terminated process's final output. Extracted all GetExitCodeProcess() API calls into one location so it no longer gets called in three separate places. Minor comment changes in code touched by previous fixes. ........ r44088 | jurko | 2008-04-07 03:32:09 -0700 (Mon, 07 Apr 2008) | 4 lines Fixed a bug with bjam not handling the '\' root Windows path correctly without its drive letter being specified. One effect could be seen by MkDir rule on such a path always attempting to create its base folder even if that folder already exists. For example if you attempted to create folder '\Projects\XYZ\BuildDir' it would incorrectly think that '\Projects' folder does not exist and attempt to create it - thus causing the whole build to fail due to the underlying OS mkdir command failing. This was caused by the file_dirscan() function in the filent.c module not working correctly when passed '\' as its dir. It then messed up when formatting its file-selection parameter for the _findfirst()/findfirst() API and constructed it as '\/*' which caused that API to fail and return -1 which was in turn being interpreted as 'file not found'. ........ r44089 | anthonyw | 2008-04-07 06:09:36 -0700 (Mon, 07 Apr 2008) | 1 line Added locked-> owns_lock change to breaking changes ........ r44091 | johnmaddock | 2008-04-07 08:58:51 -0700 (Mon, 07 Apr 2008) | 4 lines Merged changes from sandbox to Trunk: New special functions for truncation and rounding, plus exponential integrals and zeta. New non central distributions. Updated equation png's so that they are all consistent. ........ r44093 | johnmaddock | 2008-04-07 09:34:28 -0700 (Mon, 07 Apr 2008) | 1 line Updated last commit info, plus compiler compatibility and news. ........ r44094 | ramey | 2008-04-07 10:05:38 -0700 (Mon, 07 Apr 2008) | 4 lines updated markup for serialization library eliminated deprecated tests enabled tests on vacpp ........ r44095 | ramey | 2008-04-07 10:07:00 -0700 (Mon, 07 Apr 2008) | 1 line change BOOST_IS_ABSTRACT to BOOST_ASSUME_ABSTRACT ........ r44096 | ramey | 2008-04-07 10:23:07 -0700 (Mon, 07 Apr 2008) | 1 line changed type traits macro to BOOST_TT_BROKEN_COMPILER_SPEC ........ r44104 | emildotchevski | 2008-04-07 12:00:45 -0700 (Mon, 07 Apr 2008) | 1 line fixed compile errors on various platforms ........ [SVN r44111]
218 lines
8.2 KiB
HTML
218 lines
8.2 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://www.boost.org/development/tests/trunk/user/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-4 described on the <a href=
|
|
"../../../more/getting_started.html">Boost Getting Started Page</a>.
|
|
Since Boost.Statechart is a header-only library, you should now know
|
|
enough to compile the examples in the tutorial in your favorite
|
|
environment (except PingPong which requires Boost.Thread binaries)</li>
|
|
|
|
<li>Optional: If you want to compile the PingPong example or use <a href=
|
|
"reference.html#ClassTemplatefifo_scheduler">fifo_scheduler<></a>
|
|
in your project, you need to get hold of the Boost.Thread binaries and
|
|
link against them, see steps 5-6 on the Boost Getting Started Page</li>
|
|
|
|
<li>Optional: If you want to run the tests, you need to get the bjam
|
|
executable, as described under step 5.2 on the Boost Getting Started
|
|
Page. After doing so, bjam should be installed in your <code>PATH</code>.
|
|
Open a command prompt and change the current directory to
|
|
<code>boost_1_34_0/libs/statechart/test</code>. Type
|
|
<pre>
|
|
bjam --toolset=<i>your-toolset</i>
|
|
</pre>
|
|
|
|
<p>(where <code><i>your-toolset</i></code> is one of the names
|
|
documented under step 5.2.2 on the Boost Getting Started Page) and hit
|
|
CR. After the test run, failures (if any) are indicated at the end of
|
|
the output, in the form of a "<code>...failed updating X
|
|
targets...</code>" message. For some platforms certain failures are
|
|
expected, see <a href="#SupportedPlatforms">Supported
|
|
platforms</a>.</p>
|
|
</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 -->09 April, 2007<!--webbot bot="Timestamp" endspan i-checksum="30014" --></p>
|
|
|
|
<p><i>Copyright © 2003-<!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y" startspan -->2007<!--webbot bot="Timestamp" endspan i-checksum="778" -->
|
|
<a href="contact.html">Andreas Huber Dönni</a></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>
|