Blame libs/statechart/doc/index.html

Packit 58578d
Packit 58578d
Packit 58578d
<html>
Packit 58578d
<head>
Packit 58578d
  <meta http-equiv="Content-Language" content="en-us">
Packit 58578d
  <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
Packit 58578d
  <meta name="GENERATOR" content="Microsoft FrontPage 6.0">
Packit 58578d
  <meta name="ProgId" content="FrontPage.Editor.Document">
Packit 58578d
  <link rel="stylesheet" type="text/css" href="../../../boost.css">
Packit 58578d
Packit 58578d
  <title>The Boost Statechart Library - Overview</title>
Packit 58578d
</head>
Packit 58578d
Packit 58578d
<body link="#0000FF" vlink="#800080">
Packit 58578d
  
Packit 58578d
  "header">
Packit 58578d
    
Packit 58578d
      
Packit 58578d
        

Packit 58578d
        "../../../boost.png" border="0" width="277" height="86">
Packit 58578d
      
Packit 58578d
Packit 58578d
      
Packit 58578d
        

The Boost Statechart Library

Packit 58578d
Packit 58578d
        

(formerly known as boost::fsm)

Packit 58578d
Packit 58578d
        

Overview

Packit 58578d
      
Packit 58578d
    
Packit 58578d
  
Packit 58578d
  
Packit 58578d
Packit 58578d
  

Contents

Packit 58578d
Packit 58578d
  
Packit 58578d
    
Overview
Packit 58578d
Packit 58578d
    
Supported platforms
Packit 58578d
Packit 58578d
    
Getting started
Packit 58578d
Packit 58578d
    
Audience
Packit 58578d
Packit 58578d
    
 
Packit 58578d
Packit 58578d
    
Tutorial [pdf:
Packit 58578d
    "tutorial.pdf">English, 
Packit 58578d
    "http://prdownloads.sourceforge.jp/jyugem/7127/fsm-tutorial-jp.pdf">Japanese]
Packit 58578d
Packit 58578d
    
UML to Boost.Statechart mapping
Packit 58578d
    summary
Packit 58578d
Packit 58578d
    
Frequently Asked Questions (FAQs)
Packit 58578d
Packit 58578d
    
Configuration
Packit 58578d
Packit 58578d
    
Definitions
Packit 58578d
Packit 58578d
    
Reference [pdf:
Packit 58578d
    "reference.pdf">English]
Packit 58578d
Packit 58578d
    
Rationale [pdf:
Packit 58578d
    "rationale.pdf">English]
Packit 58578d
Packit 58578d
    
Performance
Packit 58578d
Packit 58578d
    
Acknowledgments
Packit 58578d
Packit 58578d
    
To-do list
Packit 58578d
Packit 58578d
    
Change
Packit 58578d
    history
Packit 58578d
  
Packit 58578d
  
Packit 58578d
Packit 58578d
  

Overview

Packit 58578d
Packit 58578d
  

Welcome to Boost.Statechart, a C++ library for finite state machines.

Packit 58578d
  Features include:

Packit 58578d
Packit 58578d
  
    Packit 58578d
        
  • Straightforward transformation from UML statechart to executable C++
  • Packit 58578d
        code and vice versa. Currently, this needs to be done manually both ways
    Packit 58578d
        but it should not be difficult to automate these tasks
    Packit 58578d
    Packit 58578d
        
  • Comprehensive
  • Packit 58578d
        "http://www.omg.org/cgi-bin/doc?formal/03-03-01">UML semantics
    Packit 58578d
        support:
    Packit 58578d
    Packit 58578d
          
      Packit 58578d
              
    • Hierarchical (composite, nested) states
    • Packit 58578d
      Packit 58578d
              
    • Orthogonal (concurrent) states
    • Packit 58578d
      Packit 58578d
              
    • Entry-, exit- and transition-actions
    • Packit 58578d
      Packit 58578d
              
    • Guards
    • Packit 58578d
      Packit 58578d
              
    • Shallow/deep history
    • Packit 58578d
      Packit 58578d
              
    • Event deferral
    • Packit 58578d
            
      Packit 58578d
          
      Packit 58578d
      Packit 58578d
          
    • Error handling support
    • Packit 58578d
      Packit 58578d
          
    • Maximum type-safety
    • Packit 58578d
      Packit 58578d
          
    • Compile-time statechart validation
    • Packit 58578d
      Packit 58578d
          
    • Support for asynchronous state machines and multi-threading
    • Packit 58578d
      Packit 58578d
          
    • State-local storage
    • Packit 58578d
      Packit 58578d
          
    • Generic design allowing for the customization of memory management,
    • Packit 58578d
          error handling and threading
      Packit 58578d
        
      Packit 58578d
      Packit 58578d
        

      Supported

      Packit 58578d
        platforms
      Packit 58578d
      Packit 58578d
        

      Whether and how Boost.Statechart will work on your platform is best

      Packit 58578d
        determined on the 
      Packit 58578d
        "http://www.boost.org/development/tests/trunk/developer/statechart.html">
      Packit 58578d
        status page. If the cells in your compilers column are all green, the
      Packit 58578d
        library should work as advertised. Cells of different color indicate
      Packit 58578d
        possible problems; follow the links for details. Before employing the
      Packit 58578d
        library I would also advise to run the tests (see 
      Packit 58578d
        "#GettingStarted">Getting started) on your particular platform in all
      Packit 58578d
        the modes (debug, release, etc.) that are later used during development
      Packit 58578d
        (the status page shows debug mode results only). The closer the test
      Packit 58578d
        compiler switches mirror the ones that are later used during development,
      Packit 58578d
        the less likely are future surprises. An example of such a surprise is
      Packit 58578d
        Intel 9.0 with MSVC 7.1 base toolset, where DllTestNormal and DllTestNative
      Packit 58578d
        pass in debug mode but fail in release mode.

      Packit 58578d
      Packit 58578d
        

      Getting started

      Packit 58578d
      Packit 58578d
        
        Packit 58578d
            
      1. Follow the steps 1-4 described on the
      2. Packit 58578d
            "../../../more/getting_started.html">Boost Getting Started Page.
        Packit 58578d
            Since Boost.Statechart is a header-only library, you should now know
        Packit 58578d
            enough to compile the examples in the tutorial in your favorite
        Packit 58578d
            environment (except PingPong which requires Boost.Thread binaries)
        Packit 58578d
        Packit 58578d
            
      3. Optional: If you want to compile the PingPong example or use
      4. Packit 58578d
            "reference.html#ClassTemplatefifo_scheduler">fifo_scheduler<>
        Packit 58578d
            in your project, you need to get hold of the Boost.Thread binaries and
        Packit 58578d
            link against them, see steps 5-6 on the Boost Getting Started Page
        Packit 58578d
        Packit 58578d
            
      5. Optional: If you want to run the tests, you need to get the bjam
      6. Packit 58578d
            executable, as described under step 5.2 on the Boost Getting Started
        Packit 58578d
            Page. After doing so, bjam should be installed in your PATH.
        Packit 58578d
            Open a command prompt and change the current directory to
        Packit 58578d
            boost_1_38_0/libs/statechart/test. Type
        Packit 58578d
              
        Packit 58578d
        bjam --toolset=your-toolset
        Packit 58578d
        Packit 58578d
        Packit 58578d
              

        (where your-toolset is one of the names

        Packit 58578d
              documented under step 5.2.2 on the Boost Getting Started Page) and hit
        Packit 58578d
              CR. After the test run, failures (if any) are indicated at the end of
        Packit 58578d
              the output, in the form of  a "...failed updating X
        Packit 58578d
              targets..." message. For some platforms certain failures are
        Packit 58578d
              expected, see Supported
        Packit 58578d
              platforms.

        Packit 58578d
            
        Packit 58578d
          
        Packit 58578d
        Packit 58578d
          

        Audience

        Packit 58578d
        Packit 58578d
          

        Throughout all Boost.Statechart documentation it is assumed that the

        Packit 58578d
          reader is familiar with the state machine concept, UML statecharts and most
        Packit 58578d
          of the UML state machine terminology. The following links might be
        Packit 58578d
          interesting if this is not the case:

        Packit 58578d
        Packit 58578d
          
          Packit 58578d
              
        • Packit 58578d
              "http://www.objectmentor.com/resources/articles/umlfsm.pdf">http://www.objectmentor.com/resources/articles/umlfsm.pdf
          Packit 58578d
              introduces state machines and UML statecharts
          Packit 58578d
          Packit 58578d
              
        • Packit 58578d
              "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
          Packit 58578d
              explains most of the UML statechart elements and terminology
          Packit 58578d
          Packit 58578d
              
        • The inventor of statecharts, David Harel, presents a thorough but
        • Packit 58578d
              still very readable discussion in his original paper: : 
          Packit 58578d
              "http://www.wisdom.weizmann.ac.il/~dharel/SCANNED.PAPERS/Statecharts.pdf">
          Packit 58578d
              http://www.wisdom.weizmann.ac.il/~dharel/SCANNED.PAPERS/Statecharts.pdf
          Packit 58578d
          Packit 58578d
              
        • The UML specifications (formal) can be found here:
        • Packit 58578d
              "http://www.omg.org/cgi-bin/doc?formal/03-03-01">http://www.omg.org/cgi-bin/doc?formal/03-03-01
          Packit 58578d
              (see chapters 2.12 and 3.74)
          Packit 58578d
            
          Packit 58578d
          Packit 58578d
            

          Some of the used terminology cannot be found in the UML specifications,

          Packit 58578d
            please see Definitions for more
          Packit 58578d
            information.

          Packit 58578d
            
          Packit 58578d
          Packit 58578d
            

          Packit 58578d
            "../../../doc/images/valid-html401.png" alt="Valid HTML 4.01 Transitional"
          Packit 58578d
            height="31" width="88">

          Packit 58578d
          Packit 58578d
            

          Revised

          Packit 58578d
            09 April, 2007

          Packit 58578d
          Packit 58578d
            

          Copyright © 2003-2007

          Packit 58578d
             Andreas Huber Dönni

          Packit 58578d
          Packit 58578d
            

          Distributed under the Boost Software License, Version 1.0. (See

          Packit 58578d
            accompanying file LICENSE_1_0.txt or
          Packit 58578d
            copy at 
          Packit 58578d
            "http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt)

          Packit 58578d
          </body>
          Packit 58578d
          </html>