|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r63159 - in branches/release/libs/msm: . doc/HTML doc/HTML/examples doc/PDF doc/PDF/examples doc/images doc/src test
From: christophe.j.henry_at_[hidden]
Date: 2010-06-20 15:42:18
Author: chenry
Date: 2010-06-20 15:42:15 EDT (Sun, 20 Jun 2010)
New Revision: 63159
URL: http://svn.boost.org/trac/boost/changeset/63159
Log:
merged from trunk
Added:
branches/release/libs/msm/doc/HTML/examples/SCComposite.cpp
- copied unchanged from r63158, /trunk/libs/msm/doc/HTML/examples/SCComposite.cpp
branches/release/libs/msm/doc/HTML/examples/SCSimple.cpp
- copied unchanged from r63158, /trunk/libs/msm/doc/HTML/examples/SCSimple.cpp
branches/release/libs/msm/doc/PDF/examples/SCComposite.cpp
- copied unchanged from r63158, /trunk/libs/msm/doc/PDF/examples/SCComposite.cpp
branches/release/libs/msm/doc/PDF/examples/SCSimple.cpp
- copied unchanged from r63158, /trunk/libs/msm/doc/PDF/examples/SCSimple.cpp
branches/release/libs/msm/doc/images/entrytutorial.jpg
- copied unchanged from r63158, /trunk/libs/msm/doc/images/entrytutorial.jpg
Removed:
branches/release/libs/msm/doc/HTML/boost.css
branches/release/libs/msm/doc/HTML/docutils.css
branches/release/libs/msm/doc/HTML/examples/SC Composite.cpp
branches/release/libs/msm/doc/HTML/examples/SC Simple.cpp
branches/release/libs/msm/doc/HTML/minimal.css
branches/release/libs/msm/doc/HTML/reference.css
branches/release/libs/msm/doc/PDF/examples/SC Composite.cpp
branches/release/libs/msm/doc/PDF/examples/SC Simple.cpp
branches/release/libs/msm/doc/images/entry tutorial.jpg
Properties modified:
branches/release/libs/msm/ (props changed)
Binary files modified:
branches/release/libs/msm/doc/PDF/msm.pdf
Text files modified:
branches/release/libs/msm/doc/HTML/ch03s02.html | 2 +-
branches/release/libs/msm/doc/HTML/ch04.html | 4 ++--
branches/release/libs/msm/doc/src/msm.xml | 19 ++++++++++++-------
branches/release/libs/msm/index.html | 6 ++++++
branches/release/libs/msm/test/SimpleInternalEuml.cpp | 1 +
5 files changed, 22 insertions(+), 10 deletions(-)
Deleted: branches/release/libs/msm/doc/HTML/boost.css
==============================================================================
--- branches/release/libs/msm/doc/HTML/boost.css 2010-06-20 15:42:15 EDT (Sun, 20 Jun 2010)
+++ (empty file)
@@ -1,66 +0,0 @@
-/*=============================================================================
- Copyright 2002 William E. Kempf
- Distributed under the Boost Software License, Version 1.0. (See accompany-
- ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-=============================================================================*/
-
-H1
-{
- FONT-SIZE: 200%;
- COLOR: #00008B;
-}
-H2
-{
- FONT-SIZE: 150%;
-}
-H3
-{
- FONT-SIZE: 125%;
-}
-H4
-{
- FONT-SIZE: 108%;
-}
-BODY
-{
- FONT-SIZE: 100%;
- BACKGROUND-COLOR: #ffffff;
- COLOR: #000000;
-}
-PRE
-{
- MARGIN-LEFT: 2em;
- FONT-FAMILY: Courier,
- monospace;
-}
-CODE
-{
- FONT-FAMILY: Courier,
- monospace;
-}
-CODE.as_pre
-{
- white-space: pre;
-}
-.index
-{
- TEXT-ALIGN: left;
-}
-.page-index
-{
- TEXT-ALIGN: left;
-}
-.definition
-{
- TEXT-ALIGN: left;
-}
-.footnote
-{
- FONT-SIZE: 66%;
- VERTICAL-ALIGN: super;
- TEXT-DECORATION: none;
-}
-.function-semantics
-{
- CLEAR: left;
-}
\ No newline at end of file
Modified: branches/release/libs/msm/doc/HTML/ch03s02.html
==============================================================================
--- branches/release/libs/msm/doc/HTML/ch03s02.html (original)
+++ branches/release/libs/msm/doc/HTML/ch03s02.html 2010-06-20 15:42:15 EDT (Sun, 20 Jun 2010)
@@ -561,7 +561,7 @@
rows is also provided.</p></div><div class="sect2" title="Explicit entry / entry and exit pseudo-state / fork"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1558"></a>Explicit entry / entry and exit pseudo-state / fork</h3></div></div></div><p>MSM (almost) fully supports these features, described in the <span class="command"><strong><a class="command" href="ch02s02.html#uml-history">small UML tutorial</a></strong></span>. Almost because
there are currently two limitations: </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>it is only possible to explicitly enter a sub- state of the
target but not a sub-sub state.</p></li><li class="listitem"><p>it is not possible to explicitly exit. Exit points must be
- used.</p></li></ul></div><p>Let us see a concrete example:</p><p><span class="inlinemediaobject"><img src="../images/entry%20tutorial.jpg" width="60%"></span></p><p>We find in this diagram:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>A “normal” activation of SubFsm2, triggered by event1. In each
+ used.</p></li></ul></div><p>Let us see a concrete example:</p><p><span class="inlinemediaobject"><img src="../images/entrytutorial.jpg" width="60%"></span></p><p>We find in this diagram:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>A “normal” activation of SubFsm2, triggered by event1. In each
region, the initial state is activated, i.e. SubState1 and
SubState1b.</p></li><li class="listitem"><p>An explicit entry into SubFsm2::SubState2 for region “1” with
event2 as trigger, meaning that in region “2” the initial state,
Modified: branches/release/libs/msm/doc/HTML/ch04.html
==============================================================================
--- branches/release/libs/msm/doc/HTML/ch04.html (original)
+++ branches/release/libs/msm/doc/HTML/ch04.html 2010-06-20 15:42:15 EDT (Sun, 20 Jun 2010)
@@ -2,8 +2,8 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Chapter 4. Performance / Compilers</title><link rel="stylesheet" href="boostbook.css" type="text/css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"><link rel="home" href="index.html" title="Meta State Machine (MSM) V2.10"><link rel="up" href="pt01.html" title="Part I. User' guide"><link rel="prev" href="ch03s05.html" title="Back-end"><link rel="next" href="ch04s02.html" title="Executable size"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4. Performance / Compilers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s05.html">Prev</a> </td><th width="60%" align="center">Part I. User' guide</th><td width="20%" align="right"> <a accesskey="n" href="ch04s02.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 4. Performan
ce / Compilers"><div class="titlepage"><div><div><h2 class="title"><a name="d0e3724"></a>Chapter 4. Performance / Compilers</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1">Speed</span></dt><dt><span class="sect1">Executable size</span></dt><dt><span class="sect1">Supported compilers</span></dt><dt><span class="sect1"> Limitations </span></dt><dt><span class="sect1"> Compilers corner </span></dt></dl></div><p>Tests were made on different PCs running Windows XP and Vista and compiled with
VC9 SP1 or Ubuntu and compiled with g++ 4.2 and 4.3. For these tests, the same
- player state machine was written using Boost.Statechart, as a <a class="link" href="examples/SC Simple.cpp" target="_top">state machine with only simple states</a>
- and as a <a class="link" href="examples/SC Composite.cpp" target="_top">state machine with a composite
+ player state machine was written using Boost.Statechart, as a <a class="link" href="examples/SCSimple.cpp" target="_top">state machine with only simple states</a>
+ and as a <a class="link" href="examples/SCComposite.cpp" target="_top">state machine with a composite
state</a>. The same simple and composite state machines are implemented with
MSM with a standard frontend <a class="link" href="examples/MsmSimple.cpp" target="_top">(simple)</a><a class="link" href="examples/MsmComposite.cpp" target="_top">(composite)</a>,
the simple one also with <a class="link" href="examples/MsmSimpleFunctors.cpp" target="_top">functors</a> and with <a class="link" href="examples/EumlSimple.cpp" target="_top">eUML</a>. As these simple machines need no terminate/interrupt states, no
Deleted: branches/release/libs/msm/doc/HTML/docutils.css
==============================================================================
--- branches/release/libs/msm/doc/HTML/docutils.css 2010-06-20 15:42:15 EDT (Sun, 20 Jun 2010)
+++ (empty file)
@@ -1,275 +0,0 @@
-/*
-:Author: David Goodger
-:Contact: goodger_at_[hidden]
-:Date: $Date: 2007-11-25 19:34:32 +0000 (Sun, 25 Nov 2007) $
-:Revision: $Revision: 41371 $
-:Copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
- border: 0 }
-
-table.borderless td, table.borderless th {
- /* Override padding for "table.docutils td" with "! important".
- The right padding separates the table cells. */
- padding: 0 0.5em 0 0 ! important }
-
-.first {
- /* Override more specific margin styles with "! important". */
- margin-top: 0 ! important }
-
-.last, .with-subtitle {
- margin-bottom: 0 ! important }
-
-.hidden {
- display: none }
-
-a.toc-backref {
- text-decoration: none ;
- color: black }
-
-blockquote.epigraph {
- margin: 2em 5em ; }
-
-dl.docutils dd {
- margin-bottom: 0.5em }
-
-/* Uncomment (and remove this text!) to get bold-faced definition list terms
-dl.docutils dt {
- font-weight: bold }
-*/
-
-div.abstract {
- margin: 2em 5em }
-
-div.abstract p.topic-title {
- font-weight: bold ;
- text-align: center }
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
- margin: 2em ;
- border: medium outset ;
- padding: 1em }
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title {
- font-weight: bold ;
- font-family: sans-serif }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title {
- color: red ;
- font-weight: bold ;
- font-family: sans-serif }
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
- compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
- margin-bottom: 0.5em }
-
-div.compound .compound-last, div.compound .compound-middle {
- margin-top: 0.5em }
-*/
-
-div.dedication {
- margin: 2em 5em ;
- text-align: center ;
- font-style: italic }
-
-div.dedication p.topic-title {
- font-weight: bold ;
- font-style: normal }
-
-div.figure {
- margin-left: 2em ;
- margin-right: 2em }
-
-div.footer, div.header {
- clear: both;
- font-size: smaller }
-
-div.line-block {
- display: block ;
- margin-top: 1em ;
- margin-bottom: 1em }
-
-div.line-block div.line-block {
- margin-top: 0 ;
- margin-bottom: 0 ;
- margin-left: 1.5em }
-
-div.sidebar {
- margin-left: 1em ;
- border: medium outset ;
- padding: 1em ;
- background-color: #ffffee ;
- width: 40% ;
- float: right ;
- clear: right }
-
-div.sidebar p.rubric {
- font-family: sans-serif ;
- font-size: medium }
-
-div.system-messages {
- margin: 5em }
-
-div.system-messages h1 {
- color: red }
-
-div.system-message {
- border: medium outset ;
- padding: 1em }
-
-div.system-message p.system-message-title {
- color: red ;
- font-weight: bold }
-
-div.topic {
- margin: 2em }
-
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
- margin-top: 0.4em }
-
-h1.title {
- text-align: center }
-
-h2.subtitle {
- text-align: center }
-
-hr.docutils {
- width: 75% }
-
-img.align-left {
- clear: left }
-
-img.align-right {
- clear: right }
-
-ol.simple, ul.simple {
- margin-bottom: 1em }
-
-ol.arabic {
- list-style: decimal }
-
-ol.loweralpha {
- list-style: lower-alpha }
-
-ol.upperalpha {
- list-style: upper-alpha }
-
-ol.lowerroman {
- list-style: lower-roman }
-
-ol.upperroman {
- list-style: upper-roman }
-
-p.attribution {
- text-align: right ;
- margin-left: 50% }
-
-p.caption {
- font-style: italic }
-
-p.credits {
- font-style: italic ;
- font-size: smaller }
-
-p.label {
- white-space: nowrap }
-
-p.rubric {
- font-weight: bold ;
- font-size: larger ;
- color: maroon ;
- text-align: center }
-
-p.sidebar-title {
- font-family: sans-serif ;
- font-weight: bold ;
- font-size: larger }
-
-p.sidebar-subtitle {
- font-family: sans-serif ;
- font-weight: bold }
-
-p.topic-title {
- font-weight: bold }
-
-pre.address {
- margin-bottom: 0 ;
- margin-top: 0 ;
- font-family: serif ;
- font-size: 100% }
-
-pre.literal-block, pre.doctest-block {
- margin-left: 2em ;
- margin-right: 2em }
-
-span.classifier {
- font-family: sans-serif ;
- font-style: oblique }
-
-span.classifier-delimiter {
- font-family: sans-serif ;
- font-weight: bold }
-
-span.interpreted {
- font-family: sans-serif }
-
-span.option {
- white-space: nowrap }
-
-span.pre {
- white-space: pre }
-
-span.problematic {
- color: red }
-
-span.section-subtitle {
- /* font-size relative to parent (h1..h6 element) */
- font-size: 80% }
-
-table.citation {
- border-left: solid 1px gray;
- margin-left: 1px }
-
-table.docinfo {
- margin: 2em 4em }
-
-table.docutils {
- margin-top: 0.5em ;
- margin-bottom: 0.5em }
-
-table.footnote {
- border-left: solid 1px black;
- margin-left: 1px }
-
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
- padding-left: 0.5em ;
- padding-right: 0.5em ;
- vertical-align: top }
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
- font-weight: bold ;
- text-align: left ;
- white-space: nowrap ;
- padding-left: 0 }
-
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
- font-size: 100% }
-
-ul.auto-toc {
- list-style-type: none }
Deleted: branches/release/libs/msm/doc/HTML/examples/SC Composite.cpp
==============================================================================
--- branches/release/libs/msm/doc/HTML/examples/SC Composite.cpp 2010-06-20 15:42:15 EDT (Sun, 20 Jun 2010)
+++ (empty file)
@@ -1,207 +0,0 @@
-// Copyright 2010 Christophe Henry
-// henry UNDERSCORE christophe AT hotmail DOT com
-// This is an extended version of the state machine available in the boost::mpl library
-// Distributed under the same license as the original.
-// Copyright for the original version:
-// Copyright 2005 David Abrahams and Aleksey Gurtovoy. Distributed
-// under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#include <boost/statechart/event.hpp>
-#include <boost/statechart/state_machine.hpp>
-#include <boost/statechart/simple_state.hpp>
-#include <boost/statechart/transition.hpp>
-#include "boost/mpl/list.hpp"
-
-#include <vector>
-
-#include <iostream>
-#ifdef WIN32
-#include "windows.h"
-#else
-#include <sys/time.h>
-#endif
-
-namespace sc = boost::statechart;
-namespace mpl = boost::mpl;
-
-namespace test_sc
-{
-
- //events
- struct play : sc::event< play > {};
- struct end_pause : sc::event< end_pause > {};
- struct stop : sc::event< stop > {};
- struct pause : sc::event< pause > {};
- struct open_close : sc::event< open_close > {};
- struct cd_detected : sc::event< cd_detected > {};
- struct NextSong: sc::event< NextSong > {};
- struct PreviousSong : sc::event< PreviousSong >{};
-
- struct Empty;
- struct Open;
- struct Stopped;
- struct Playing;
- struct Paused;
- // SM
- struct player : sc::state_machine< player, Empty >
- {
- void open_drawer(open_close const&) { /*std::cout << "player::open_drawer\n";*/ }
- void store_cd_info(cd_detected const& cd) {/*std::cout << "player::store_cd_info\n";*/ }
- void close_drawer(open_close const&) { /*std::cout << "player::close_drawer\n";*/ }
- void start_playback(play const&) { /*std::cout << "player::start_playback\n";*/ }
- void stopped_again(stop const&) {/*std::cout << "player::stopped_again\n";*/}
- void stop_playback(stop const&) { /*std::cout << "player::stop_playback\n";*/ }
- void pause_playback(pause const&) { /*std::cout << "player::pause_playback\n"; */}
- void stop_and_open(open_close const&) { /*std::cout << "player::stop_and_open\n";*/ }
- void resume_playback(end_pause const&) { /*std::cout << "player::resume_playback\n";*/ }
- };
-
- struct Empty : sc::simple_state< Empty, player >
- {
- Empty() { /*std::cout << "entering Empty" << std::endl;*/ } // entry
- ~Empty() { /*std::cout << "leaving Empty" << std::endl;*/ } // exit
- typedef mpl::list<
- sc::transition< open_close, Open,
- player, &player::open_drawer >,
- sc::transition< cd_detected, Stopped,
- player, &player::store_cd_info > > reactions;
-
- };
- struct Open : sc::simple_state< Open, player >
- {
- Open() { /*std::cout << "entering Open" << std::endl;*/ } // entry
- ~Open() { /*std::cout << "leaving Open" << std::endl;*/ } // exit
- typedef sc::transition< open_close, Empty,
- player, &player::close_drawer > reactions;
-
- };
- struct Stopped : sc::simple_state< Stopped, player >
- {
- Stopped() { /*std::cout << "entering Stopped" << std::endl;*/ } // entry
- ~Stopped() { /*std::cout << "leaving Stopped" << std::endl;*/ } // exit
- typedef mpl::list<
- sc::transition< play, Playing,
- player, &player::start_playback >,
- sc::transition< open_close, Open,
- player, &player::open_drawer >,
- sc::transition< stop, Stopped,
- player, &player::stopped_again > > reactions;
-
- };
- struct Song1;
- struct Playing : sc::simple_state< Playing, player,Song1 >
- {
- Playing() { /*std::cout << "entering Playing" << std::endl;*/ } // entry
- ~Playing() { /*std::cout << "leaving Playing" << std::endl;*/ } // exit
- typedef mpl::list<
- sc::transition< stop, Stopped,
- player, &player::stop_playback >,
- sc::transition< pause, Paused,
- player, &player::pause_playback >,
- sc::transition< open_close, Open,
- player, &player::stop_and_open > > reactions;
- void start_next_song(NextSong const&) { /*std::cout << "Playing::start_next_song\n";*/ }
- void start_prev_song(PreviousSong const&) { /*std::cout << "Playing::start_prev_song\n";*/ }
- };
- struct Song2;
- struct Song1 : sc::simple_state< Song1, Playing >
- {
- Song1() { /*std::cout << "entering Song1" << std::endl;*/ } // entry
- ~Song1() { /*std::cout << "leaving Song1" << std::endl;*/ } // exit
- typedef sc::transition< NextSong, Song2,
- Playing, &Playing::start_next_song > reactions;
- };
- struct Song3;
- struct Song2 : sc::simple_state< Song2, Playing >
- {
- Song2() { /*std::cout << "entering Song2" << std::endl;*/ } // entry
- ~Song2() { /*std::cout << "leaving Song2" << std::endl;*/ } // exit
- typedef mpl::list<
- sc::transition< NextSong, Song3,
- Playing, &Playing::start_next_song >,
- sc::transition< PreviousSong, Song1,
- Playing, &Playing::start_prev_song > > reactions;
- };
- struct Song3 : sc::simple_state< Song3, Playing >
- {
- Song3() { /*std::cout << "entering Song3" << std::endl;*/ } // entry
- ~Song3() { /*std::cout << "leaving Song3" << std::endl;*/ } // exit
- typedef sc::transition< PreviousSong, Song2,
- Playing, &Playing::start_prev_song > reactions;
- };
- struct Paused : sc::simple_state< Paused, player >
- {
- Paused() { /*std::cout << "entering Paused" << std::endl;*/ } // entry
- ~Paused() { /*std::cout << "leaving Paused" << std::endl;*/ } // exit
- typedef mpl::list<
- sc::transition< end_pause, Playing,
- player, &player::resume_playback >,
- sc::transition< stop, Stopped,
- player, &player::stop_playback >,
- sc::transition< open_close, Open,
- player, &player::stop_and_open > > reactions;
- };
-}
-
-
-#ifndef WIN32
-long mtime(struct timeval& tv1,struct timeval& tv2)
-{
- return (tv2.tv_sec-tv1.tv_sec) *1000000 + ((tv2.tv_usec-tv1.tv_usec));
-}
-#endif
-
-int main()
-{
- test_sc::player p;
- p.initiate();
- // for timing
-#ifdef WIN32
- LARGE_INTEGER res;
- ::QueryPerformanceFrequency(&res);
- LARGE_INTEGER li,li2;
- ::QueryPerformanceCounter(&li);
-#else
- struct timeval tv1,tv2;
- gettimeofday(&tv1,NULL);
-#endif
-
- for (int i=0;i<100;++i)
- {
- p.process_event(test_sc::open_close());
- p.process_event(test_sc::open_close());
- p.process_event(test_sc::cd_detected());
- p.process_event(test_sc::play());
- for (int j=0;j<100;++j)
- {
- p.process_event(test_sc::NextSong());
- p.process_event(test_sc::NextSong());
- p.process_event(test_sc::PreviousSong());
- p.process_event(test_sc::PreviousSong());
- }
-
- p.process_event(test_sc::pause());
- // go back to Playing
- p.process_event(test_sc::end_pause());
- p.process_event(test_sc::pause());
- p.process_event(test_sc::stop());
- // event leading to the same state
- p.process_event(test_sc::stop());
- p.process_event(test_sc::open_close());
- p.process_event(test_sc::open_close());
- }
-#ifdef WIN32
- ::QueryPerformanceCounter(&li2);
-#else
- gettimeofday(&tv2,NULL);
-#endif
-#ifdef WIN32
- std::cout << "sc took in s:" << (double)(li2.QuadPart-li.QuadPart)/res.QuadPart <<"\n" <<std::endl;
-#else
- std::cout << "sc took in us:" << mtime(tv1,tv2) <<"\n" <<std::endl;
-#endif
- return 0;
-}
-
Deleted: branches/release/libs/msm/doc/HTML/examples/SC Simple.cpp
==============================================================================
--- branches/release/libs/msm/doc/HTML/examples/SC Simple.cpp 2010-06-20 15:42:15 EDT (Sun, 20 Jun 2010)
+++ (empty file)
@@ -1,169 +0,0 @@
-// Copyright 2010 Christophe Henry
-// henry UNDERSCORE christophe AT hotmail DOT com
-// This is an extended version of the state machine available in the boost::mpl library
-// Distributed under the same license as the original.
-// Copyright for the original version:
-// Copyright 2005 David Abrahams and Aleksey Gurtovoy. Distributed
-// under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#include <boost/statechart/event.hpp>
-#include <boost/statechart/state_machine.hpp>
-#include <boost/statechart/simple_state.hpp>
-#include <boost/statechart/transition.hpp>
-#include "boost/mpl/list.hpp"
-
-#include <vector>
-
-#include <iostream>
-#ifdef WIN32
-#include "windows.h"
-#else
-#include <sys/time.h>
-#endif
-
-namespace sc = boost::statechart;
-namespace mpl = boost::mpl;
-
-namespace test_sc
-{
-
- //events
- struct play : sc::event< play > {};
- struct end_pause : sc::event< end_pause > {};
- struct stop : sc::event< stop > {};
- struct pause : sc::event< pause > {};
- struct open_close : sc::event< open_close > {};
- struct cd_detected : sc::event< cd_detected > {};
-
-
- struct Empty;
- struct Open;
- struct Stopped;
- struct Playing;
- struct Paused;
- // SM
- struct player : sc::state_machine< player, Empty >
- {
- void open_drawer(open_close const&) { /*std::cout << "player::open_drawer\n";*/ }
- void store_cd_info(cd_detected const& cd) {/*std::cout << "player::store_cd_info\n";*/ }
- void close_drawer(open_close const&) { /*std::cout << "player::close_drawer\n";*/ }
- void start_playback(play const&) { /*std::cout << "player::start_playback\n";*/ }
- void stopped_again(stop const&) {/*std::cout << "player::stopped_again\n";*/}
- void stop_playback(stop const&) { /*std::cout << "player::stop_playback\n";*/ }
- void pause_playback(pause const&) { /*std::cout << "player::pause_playback\n"; */}
- void stop_and_open(open_close const&) { /*std::cout << "player::stop_and_open\n";*/ }
- void resume_playback(end_pause const&) { /*std::cout << "player::resume_playback\n";*/ }
- };
-
- struct Empty : sc::simple_state< Empty, player >
- {
- Empty() { /*std::cout << "entering Empty" << std::endl;*/ } // entry
- ~Empty() { /*std::cout << "leaving Empty" << std::endl;*/ } // exit
- typedef mpl::list<
- sc::transition< open_close, Open,
- player, &player::open_drawer >,
- sc::transition< cd_detected, Stopped,
- player, &player::store_cd_info > > reactions;
-
- };
- struct Open : sc::simple_state< Open, player >
- {
- Open() { /*std::cout << "entering Open" << std::endl;*/ } // entry
- ~Open() { /*std::cout << "leaving Open" << std::endl;*/ } // exit
- typedef sc::transition< open_close, Empty,
- player, &player::close_drawer > reactions;
-
- };
- struct Stopped : sc::simple_state< Stopped, player >
- {
- Stopped() { /*std::cout << "entering Stopped" << std::endl;*/ } // entry
- ~Stopped() { /*std::cout << "leaving Stopped" << std::endl;*/ } // exit
- typedef mpl::list<
- sc::transition< play, Playing,
- player, &player::start_playback >,
- sc::transition< open_close, Open,
- player, &player::open_drawer >,
- sc::transition< stop, Stopped,
- player, &player::stopped_again > > reactions;
-
- };
- struct Playing : sc::simple_state< Playing, player >
- {
- Playing() { /*std::cout << "entering Playing" << std::endl;*/ } // entry
- ~Playing() { /*std::cout << "leaving Playing" << std::endl;*/ } // exit
- typedef mpl::list<
- sc::transition< stop, Stopped,
- player, &player::stop_playback >,
- sc::transition< pause, Paused,
- player, &player::pause_playback >,
- sc::transition< open_close, Open,
- player, &player::stop_and_open > > reactions;
- };
- struct Paused : sc::simple_state< Paused, player >
- {
- Paused() { /*std::cout << "entering Paused" << std::endl;*/ } // entry
- ~Paused() { /*std::cout << "leaving Paused" << std::endl;*/ } // exit
- typedef mpl::list<
- sc::transition< end_pause, Playing,
- player, &player::resume_playback >,
- sc::transition< stop, Stopped,
- player, &player::stop_playback >,
- sc::transition< open_close, Open,
- player, &player::stop_and_open > > reactions;
- };
-}
-
-
-#ifndef WIN32
-long mtime(struct timeval& tv1,struct timeval& tv2)
-{
- return (tv2.tv_sec-tv1.tv_sec) *1000000 + ((tv2.tv_usec-tv1.tv_usec));
-}
-#endif
-
-
-int main()
-{
- test_sc::player p;
- p.initiate();
- // for timing
-#ifdef WIN32
- LARGE_INTEGER res;
- ::QueryPerformanceFrequency(&res);
- LARGE_INTEGER li,li2;
- ::QueryPerformanceCounter(&li);
-#else
- struct timeval tv1,tv2;
- gettimeofday(&tv1,NULL);
-#endif
- for (int i=0;i<100;++i)
- {
- p.process_event(test_sc::open_close());
- p.process_event(test_sc::open_close());
- p.process_event(test_sc::cd_detected());
- p.process_event(test_sc::play());
- p.process_event(test_sc::pause());
- // go back to Playing
- p.process_event(test_sc::end_pause());
- p.process_event(test_sc::pause());
- p.process_event(test_sc::stop());
- // event leading to the same state
- p.process_event(test_sc::stop());
- p.process_event(test_sc::open_close());
- p.process_event(test_sc::open_close());
- }
-#ifdef WIN32
- ::QueryPerformanceCounter(&li2);
-#else
- gettimeofday(&tv2,NULL);
-#endif
-#ifdef WIN32
- std::cout << "sc took in s:" << (double)(li2.QuadPart-li.QuadPart)/res.QuadPart <<"\n" <<std::endl;
-#else
- std::cout << "sc took in us:" << mtime(tv1,tv2) <<"\n" <<std::endl;
-#endif
- return 0;
-}
-
Deleted: branches/release/libs/msm/doc/HTML/minimal.css
==============================================================================
--- branches/release/libs/msm/doc/HTML/minimal.css 2010-06-20 15:42:15 EDT (Sun, 20 Jun 2010)
+++ (empty file)
@@ -1,29 +0,0 @@
-/*
-
- © Copyright Beman Dawes, 2007
-
- Distributed under the Boost Software License, Version 1.0.
- See www.boost.org/LICENSE_1_0.txt
-
-*/
-
-/*******************************************************************************
- Body
-*******************************************************************************/
-
-body { font-family: sans-serif; margin: 1em; }
-
-/*******************************************************************************
- Table
-*******************************************************************************/
-
-table { margin: 0.5em; }
-
-/*******************************************************************************
- Font sizes
-*******************************************************************************/
-
-p, td, li, blockquote { font-size: 10pt; }
-pre { font-size: 9pt; }
-
-/*** end ***/
\ No newline at end of file
Deleted: branches/release/libs/msm/doc/HTML/reference.css
==============================================================================
--- branches/release/libs/msm/doc/HTML/reference.css 2010-06-20 15:42:15 EDT (Sun, 20 Jun 2010)
+++ (empty file)
@@ -1,11 +0,0 @@
-/*============================================================================
- Copyright 2003-2004 Douglas Gregor
- Distributed under the Boost Software License, Version 1.0. (See accompany-
- ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-============================================================================*/
-
-PRE.synopsis {
- background-color: #e0ffff;
- border: thin solid blue;
- padding: 1em
-}
\ No newline at end of file
Deleted: branches/release/libs/msm/doc/PDF/examples/SC Composite.cpp
==============================================================================
--- branches/release/libs/msm/doc/PDF/examples/SC Composite.cpp 2010-06-20 15:42:15 EDT (Sun, 20 Jun 2010)
+++ (empty file)
@@ -1,207 +0,0 @@
-// Copyright 2010 Christophe Henry
-// henry UNDERSCORE christophe AT hotmail DOT com
-// This is an extended version of the state machine available in the boost::mpl library
-// Distributed under the same license as the original.
-// Copyright for the original version:
-// Copyright 2005 David Abrahams and Aleksey Gurtovoy. Distributed
-// under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#include <boost/statechart/event.hpp>
-#include <boost/statechart/state_machine.hpp>
-#include <boost/statechart/simple_state.hpp>
-#include <boost/statechart/transition.hpp>
-#include "boost/mpl/list.hpp"
-
-#include <vector>
-
-#include <iostream>
-#ifdef WIN32
-#include "windows.h"
-#else
-#include <sys/time.h>
-#endif
-
-namespace sc = boost::statechart;
-namespace mpl = boost::mpl;
-
-namespace test_sc
-{
-
- //events
- struct play : sc::event< play > {};
- struct end_pause : sc::event< end_pause > {};
- struct stop : sc::event< stop > {};
- struct pause : sc::event< pause > {};
- struct open_close : sc::event< open_close > {};
- struct cd_detected : sc::event< cd_detected > {};
- struct NextSong: sc::event< NextSong > {};
- struct PreviousSong : sc::event< PreviousSong >{};
-
- struct Empty;
- struct Open;
- struct Stopped;
- struct Playing;
- struct Paused;
- // SM
- struct player : sc::state_machine< player, Empty >
- {
- void open_drawer(open_close const&) { /*std::cout << "player::open_drawer\n";*/ }
- void store_cd_info(cd_detected const& cd) {/*std::cout << "player::store_cd_info\n";*/ }
- void close_drawer(open_close const&) { /*std::cout << "player::close_drawer\n";*/ }
- void start_playback(play const&) { /*std::cout << "player::start_playback\n";*/ }
- void stopped_again(stop const&) {/*std::cout << "player::stopped_again\n";*/}
- void stop_playback(stop const&) { /*std::cout << "player::stop_playback\n";*/ }
- void pause_playback(pause const&) { /*std::cout << "player::pause_playback\n"; */}
- void stop_and_open(open_close const&) { /*std::cout << "player::stop_and_open\n";*/ }
- void resume_playback(end_pause const&) { /*std::cout << "player::resume_playback\n";*/ }
- };
-
- struct Empty : sc::simple_state< Empty, player >
- {
- Empty() { /*std::cout << "entering Empty" << std::endl;*/ } // entry
- ~Empty() { /*std::cout << "leaving Empty" << std::endl;*/ } // exit
- typedef mpl::list<
- sc::transition< open_close, Open,
- player, &player::open_drawer >,
- sc::transition< cd_detected, Stopped,
- player, &player::store_cd_info > > reactions;
-
- };
- struct Open : sc::simple_state< Open, player >
- {
- Open() { /*std::cout << "entering Open" << std::endl;*/ } // entry
- ~Open() { /*std::cout << "leaving Open" << std::endl;*/ } // exit
- typedef sc::transition< open_close, Empty,
- player, &player::close_drawer > reactions;
-
- };
- struct Stopped : sc::simple_state< Stopped, player >
- {
- Stopped() { /*std::cout << "entering Stopped" << std::endl;*/ } // entry
- ~Stopped() { /*std::cout << "leaving Stopped" << std::endl;*/ } // exit
- typedef mpl::list<
- sc::transition< play, Playing,
- player, &player::start_playback >,
- sc::transition< open_close, Open,
- player, &player::open_drawer >,
- sc::transition< stop, Stopped,
- player, &player::stopped_again > > reactions;
-
- };
- struct Song1;
- struct Playing : sc::simple_state< Playing, player,Song1 >
- {
- Playing() { /*std::cout << "entering Playing" << std::endl;*/ } // entry
- ~Playing() { /*std::cout << "leaving Playing" << std::endl;*/ } // exit
- typedef mpl::list<
- sc::transition< stop, Stopped,
- player, &player::stop_playback >,
- sc::transition< pause, Paused,
- player, &player::pause_playback >,
- sc::transition< open_close, Open,
- player, &player::stop_and_open > > reactions;
- void start_next_song(NextSong const&) { /*std::cout << "Playing::start_next_song\n";*/ }
- void start_prev_song(PreviousSong const&) { /*std::cout << "Playing::start_prev_song\n";*/ }
- };
- struct Song2;
- struct Song1 : sc::simple_state< Song1, Playing >
- {
- Song1() { /*std::cout << "entering Song1" << std::endl;*/ } // entry
- ~Song1() { /*std::cout << "leaving Song1" << std::endl;*/ } // exit
- typedef sc::transition< NextSong, Song2,
- Playing, &Playing::start_next_song > reactions;
- };
- struct Song3;
- struct Song2 : sc::simple_state< Song2, Playing >
- {
- Song2() { /*std::cout << "entering Song2" << std::endl;*/ } // entry
- ~Song2() { /*std::cout << "leaving Song2" << std::endl;*/ } // exit
- typedef mpl::list<
- sc::transition< NextSong, Song3,
- Playing, &Playing::start_next_song >,
- sc::transition< PreviousSong, Song1,
- Playing, &Playing::start_prev_song > > reactions;
- };
- struct Song3 : sc::simple_state< Song3, Playing >
- {
- Song3() { /*std::cout << "entering Song3" << std::endl;*/ } // entry
- ~Song3() { /*std::cout << "leaving Song3" << std::endl;*/ } // exit
- typedef sc::transition< PreviousSong, Song2,
- Playing, &Playing::start_prev_song > reactions;
- };
- struct Paused : sc::simple_state< Paused, player >
- {
- Paused() { /*std::cout << "entering Paused" << std::endl;*/ } // entry
- ~Paused() { /*std::cout << "leaving Paused" << std::endl;*/ } // exit
- typedef mpl::list<
- sc::transition< end_pause, Playing,
- player, &player::resume_playback >,
- sc::transition< stop, Stopped,
- player, &player::stop_playback >,
- sc::transition< open_close, Open,
- player, &player::stop_and_open > > reactions;
- };
-}
-
-
-#ifndef WIN32
-long mtime(struct timeval& tv1,struct timeval& tv2)
-{
- return (tv2.tv_sec-tv1.tv_sec) *1000000 + ((tv2.tv_usec-tv1.tv_usec));
-}
-#endif
-
-int main()
-{
- test_sc::player p;
- p.initiate();
- // for timing
-#ifdef WIN32
- LARGE_INTEGER res;
- ::QueryPerformanceFrequency(&res);
- LARGE_INTEGER li,li2;
- ::QueryPerformanceCounter(&li);
-#else
- struct timeval tv1,tv2;
- gettimeofday(&tv1,NULL);
-#endif
-
- for (int i=0;i<100;++i)
- {
- p.process_event(test_sc::open_close());
- p.process_event(test_sc::open_close());
- p.process_event(test_sc::cd_detected());
- p.process_event(test_sc::play());
- for (int j=0;j<100;++j)
- {
- p.process_event(test_sc::NextSong());
- p.process_event(test_sc::NextSong());
- p.process_event(test_sc::PreviousSong());
- p.process_event(test_sc::PreviousSong());
- }
-
- p.process_event(test_sc::pause());
- // go back to Playing
- p.process_event(test_sc::end_pause());
- p.process_event(test_sc::pause());
- p.process_event(test_sc::stop());
- // event leading to the same state
- p.process_event(test_sc::stop());
- p.process_event(test_sc::open_close());
- p.process_event(test_sc::open_close());
- }
-#ifdef WIN32
- ::QueryPerformanceCounter(&li2);
-#else
- gettimeofday(&tv2,NULL);
-#endif
-#ifdef WIN32
- std::cout << "sc took in s:" << (double)(li2.QuadPart-li.QuadPart)/res.QuadPart <<"\n" <<std::endl;
-#else
- std::cout << "sc took in us:" << mtime(tv1,tv2) <<"\n" <<std::endl;
-#endif
- return 0;
-}
-
Deleted: branches/release/libs/msm/doc/PDF/examples/SC Simple.cpp
==============================================================================
--- branches/release/libs/msm/doc/PDF/examples/SC Simple.cpp 2010-06-20 15:42:15 EDT (Sun, 20 Jun 2010)
+++ (empty file)
@@ -1,169 +0,0 @@
-// Copyright 2010 Christophe Henry
-// henry UNDERSCORE christophe AT hotmail DOT com
-// This is an extended version of the state machine available in the boost::mpl library
-// Distributed under the same license as the original.
-// Copyright for the original version:
-// Copyright 2005 David Abrahams and Aleksey Gurtovoy. Distributed
-// under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#include <boost/statechart/event.hpp>
-#include <boost/statechart/state_machine.hpp>
-#include <boost/statechart/simple_state.hpp>
-#include <boost/statechart/transition.hpp>
-#include "boost/mpl/list.hpp"
-
-#include <vector>
-
-#include <iostream>
-#ifdef WIN32
-#include "windows.h"
-#else
-#include <sys/time.h>
-#endif
-
-namespace sc = boost::statechart;
-namespace mpl = boost::mpl;
-
-namespace test_sc
-{
-
- //events
- struct play : sc::event< play > {};
- struct end_pause : sc::event< end_pause > {};
- struct stop : sc::event< stop > {};
- struct pause : sc::event< pause > {};
- struct open_close : sc::event< open_close > {};
- struct cd_detected : sc::event< cd_detected > {};
-
-
- struct Empty;
- struct Open;
- struct Stopped;
- struct Playing;
- struct Paused;
- // SM
- struct player : sc::state_machine< player, Empty >
- {
- void open_drawer(open_close const&) { /*std::cout << "player::open_drawer\n";*/ }
- void store_cd_info(cd_detected const& cd) {/*std::cout << "player::store_cd_info\n";*/ }
- void close_drawer(open_close const&) { /*std::cout << "player::close_drawer\n";*/ }
- void start_playback(play const&) { /*std::cout << "player::start_playback\n";*/ }
- void stopped_again(stop const&) {/*std::cout << "player::stopped_again\n";*/}
- void stop_playback(stop const&) { /*std::cout << "player::stop_playback\n";*/ }
- void pause_playback(pause const&) { /*std::cout << "player::pause_playback\n"; */}
- void stop_and_open(open_close const&) { /*std::cout << "player::stop_and_open\n";*/ }
- void resume_playback(end_pause const&) { /*std::cout << "player::resume_playback\n";*/ }
- };
-
- struct Empty : sc::simple_state< Empty, player >
- {
- Empty() { /*std::cout << "entering Empty" << std::endl;*/ } // entry
- ~Empty() { /*std::cout << "leaving Empty" << std::endl;*/ } // exit
- typedef mpl::list<
- sc::transition< open_close, Open,
- player, &player::open_drawer >,
- sc::transition< cd_detected, Stopped,
- player, &player::store_cd_info > > reactions;
-
- };
- struct Open : sc::simple_state< Open, player >
- {
- Open() { /*std::cout << "entering Open" << std::endl;*/ } // entry
- ~Open() { /*std::cout << "leaving Open" << std::endl;*/ } // exit
- typedef sc::transition< open_close, Empty,
- player, &player::close_drawer > reactions;
-
- };
- struct Stopped : sc::simple_state< Stopped, player >
- {
- Stopped() { /*std::cout << "entering Stopped" << std::endl;*/ } // entry
- ~Stopped() { /*std::cout << "leaving Stopped" << std::endl;*/ } // exit
- typedef mpl::list<
- sc::transition< play, Playing,
- player, &player::start_playback >,
- sc::transition< open_close, Open,
- player, &player::open_drawer >,
- sc::transition< stop, Stopped,
- player, &player::stopped_again > > reactions;
-
- };
- struct Playing : sc::simple_state< Playing, player >
- {
- Playing() { /*std::cout << "entering Playing" << std::endl;*/ } // entry
- ~Playing() { /*std::cout << "leaving Playing" << std::endl;*/ } // exit
- typedef mpl::list<
- sc::transition< stop, Stopped,
- player, &player::stop_playback >,
- sc::transition< pause, Paused,
- player, &player::pause_playback >,
- sc::transition< open_close, Open,
- player, &player::stop_and_open > > reactions;
- };
- struct Paused : sc::simple_state< Paused, player >
- {
- Paused() { /*std::cout << "entering Paused" << std::endl;*/ } // entry
- ~Paused() { /*std::cout << "leaving Paused" << std::endl;*/ } // exit
- typedef mpl::list<
- sc::transition< end_pause, Playing,
- player, &player::resume_playback >,
- sc::transition< stop, Stopped,
- player, &player::stop_playback >,
- sc::transition< open_close, Open,
- player, &player::stop_and_open > > reactions;
- };
-}
-
-
-#ifndef WIN32
-long mtime(struct timeval& tv1,struct timeval& tv2)
-{
- return (tv2.tv_sec-tv1.tv_sec) *1000000 + ((tv2.tv_usec-tv1.tv_usec));
-}
-#endif
-
-
-int main()
-{
- test_sc::player p;
- p.initiate();
- // for timing
-#ifdef WIN32
- LARGE_INTEGER res;
- ::QueryPerformanceFrequency(&res);
- LARGE_INTEGER li,li2;
- ::QueryPerformanceCounter(&li);
-#else
- struct timeval tv1,tv2;
- gettimeofday(&tv1,NULL);
-#endif
- for (int i=0;i<100;++i)
- {
- p.process_event(test_sc::open_close());
- p.process_event(test_sc::open_close());
- p.process_event(test_sc::cd_detected());
- p.process_event(test_sc::play());
- p.process_event(test_sc::pause());
- // go back to Playing
- p.process_event(test_sc::end_pause());
- p.process_event(test_sc::pause());
- p.process_event(test_sc::stop());
- // event leading to the same state
- p.process_event(test_sc::stop());
- p.process_event(test_sc::open_close());
- p.process_event(test_sc::open_close());
- }
-#ifdef WIN32
- ::QueryPerformanceCounter(&li2);
-#else
- gettimeofday(&tv2,NULL);
-#endif
-#ifdef WIN32
- std::cout << "sc took in s:" << (double)(li2.QuadPart-li.QuadPart)/res.QuadPart <<"\n" <<std::endl;
-#else
- std::cout << "sc took in us:" << mtime(tv1,tv2) <<"\n" <<std::endl;
-#endif
- return 0;
-}
-
Modified: branches/release/libs/msm/doc/PDF/msm.pdf
==============================================================================
Binary files. No diff available.
Deleted: branches/release/libs/msm/doc/images/entry tutorial.jpg
==============================================================================
Binary file. No diff available.
Modified: branches/release/libs/msm/doc/src/msm.xml
==============================================================================
--- branches/release/libs/msm/doc/src/msm.xml (original)
+++ branches/release/libs/msm/doc/src/msm.xml 2010-06-20 15:42:15 EDT (Sun, 20 Jun 2010)
@@ -1348,7 +1348,7 @@
<para>Let us see a concrete example:</para>
<para><inlinemediaobject>
<imageobject>
- <imagedata fileref="images/entry%20tutorial.jpg" width="60%"
+ <imagedata fileref="images/entrytutorial.jpg" width="60%"
scalefit="1"/>
</imageobject>
</inlinemediaobject></para>
@@ -3176,10 +3176,15 @@
value before including any header if you need to overwrite the default. </para>
<para>You can also pass arguments by reference (or const-reference) using
boost::ref (or boost::cref):</para>
- <para>struct player_ : public msm::front::state_machine_def<player_> {
- player_(SomeType& t, int some_value){â¦} }; </para>
- <para>typedef msm::back::state_machine<player_ > player; SomeType data;
- player p(boost::ref(data),3);</para>
+ <programlisting>struct player_ : public msm::front::state_machine_def<player_>
+{
+ player_(SomeType& t, int some_value){â¦}
+};
+
+typedef msm::back::state_machine<player_ > player;
+SomeType data;
+player p(boost::ref(data),3);
+ </programlisting>
</sect2>
<sect2>
<title><command xml:id="backend-tradeof-rt-ct"/>Trading run-time speed for
@@ -3270,8 +3275,8 @@
<para>Tests were made on different PCs running Windows XP and Vista and compiled with
VC9 SP1 or Ubuntu and compiled with g++ 4.2 and 4.3. For these tests, the same
player state machine was written using Boost.Statechart, as a <link
- xlink:href="examples/SC Simple.cpp">state machine with only simple states</link>
- and as a <link xlink:href="examples/SC Composite.cpp">state machine with a composite
+ xlink:href="examples/SCSimple.cpp">state machine with only simple states</link>
+ and as a <link xlink:href="examples/SCComposite.cpp">state machine with a composite
state</link>. The same simple and composite state machines are implemented with
MSM with a standard frontend <link xlink:href="examples/MsmSimple.cpp"
>(simple)</link><link xlink:href="examples/MsmComposite.cpp">(composite)</link>,
Modified: branches/release/libs/msm/index.html
==============================================================================
--- branches/release/libs/msm/index.html (original)
+++ branches/release/libs/msm/index.html 2010-06-20 15:42:15 EDT (Sun, 20 Jun 2010)
@@ -11,6 +11,12 @@
<body>
Automatic redirection failed, please go to <a href=
"doc/HTML/index.html">doc/HTML/index.html</a>
+<p>© Copyright Christophe Henry, 2010</p>
+ <p>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
+ www.boost.org/LICENSE_1_0.txt)</p>
+
</body>
</html>
Modified: branches/release/libs/msm/test/SimpleInternalEuml.cpp
==============================================================================
--- branches/release/libs/msm/test/SimpleInternalEuml.cpp (original)
+++ branches/release/libs/msm/test/SimpleInternalEuml.cpp 2010-06-20 15:42:15 EDT (Sun, 20 Jun 2010)
@@ -68,6 +68,7 @@
// derive to be able to add an internal transition table
struct Empty_impl : public Empty_def
{
+ Empty_impl(){}
BOOST_MSM_EUML_DECLARE_INTERNAL_TRANSITION_TABLE((
internal_evt [internal_guard_fct] / ++source_(empty_internal_action_counter)
))
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk