<!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 - Acknowledgments</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>

        <h2 align="center">Acknowledgments</h2>
      </td>
    </tr>
  </table>
  <hr>

  <p>Very special thanks go to:</p>

  <ul>
    <li>Aleksey Gurtovoy, the developer of the ingenious meta programming
    library (boost::mpl). The interface as well as the implementation of
    Boost.Statechart hugely benefit from Alekseys work. I would have given up
    long ago without mpl. Moreover, Aleksey's double dispatch implementation
    in <a href="http://www.mywikinet.com/mpl/fsm_example_25_jul_02.zip">his
    FSM framework</a> gave me fresh ideas after I had come to the conclusion
    that my <code>dynamic_cast</code>-based solution was too bad</li>
  </ul>

  <p>Special thanks go to:</p>

  <ul>
    <li>Mitsuo Fukasawa, who is the first person using Boost.Statechart in a
    real-world project. He gave invaluable feedback, convinced me to make
    history a top priority, translated the tutorial to Japanese and tested
    new releases on Linux</li>

    <li>Peter Petrov, who contributed various standard conformance fixes,
    commented on early redesigns of the
    <code>asynchronous_state_machine</code> and <code>fifo_scheduler</code>
    class templates and reviewed the documentation</li>

    <li>Peter Dimov and Douglas Gregor for developing other libraries
    (<code>bind</code>, <code>intrusive_ptr</code>,
    <code>atomic_count</code>, <code>function</code>) Boost.Statechart is
    building on</li>

    <li>Pavel Vozenilek for making many suggestions on how to improve code
    &amp; documentation, providing Intel 7.0 workarounds and managing the
    review</li>

    <li>the countless folks who worked and are still working on the boost
    infrastructure (config, regression tests, build, html templates, etc).
    Writing Boost.Statechart would have been much less fun without this
    foundation</li>

    <li>David Abrahams and Darryl Green for being persistent enough to
    convince me that the exit action to state destructor mapping is sometimes
    not a good idea</li>

    <li>Paul A Bristow, Keith Burton, Jeff Garland, Simon Gittins, Dave
    Gomboc, Darryl Green, Jody Hagins, Iain K. Hanson, David B. Held, Mick
    Hollins, Alexander Nasonov, Peter Petrov, Augustus Saunders, John
    Spalding, Rob Steward, Jonathan Turkanis and Matthew Vogt for
    participating in the review</li>

    <li>Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz for his broken allocator
    workaround in boost/detail/allocator_utilities.hpp</li>
  </ul>

  <p>Thanks for feedback and/or encouragement go to:</p>

  <p>Bardur Arantsson, Arne Babnik, Robert Bell, Bohdan, Wayne Chao,
  Topher Cooper, Philippe David, Peter Dimov, Reece Dunn, Grant Erickson,
  John Fuller, Jeff Garland, Eugene Gladyshev, David A. Greene, Douglas
  Gregor, Gustavo Guerra, Aleksey Gurtovoy, Federico J. Fern&aacute;ndez,
  Iain K. Hanson, Steve Hawkes, David B. Held, J&uuml;rgen Hunold, Sean
  Kelly, Oliver Kowalke, Thomas Mathys, Simon Meiklejohn, Jiang Miao, Johan
  Nilsson, Matthieu Paindavoine, Chris Paulse, Igor R, Yuval Ronen, Chris
  Russell, Bryan Silverthorn, Rob Stewart, Kwee Heong Tan, Marcin Tustin,
  Vincent N. Virgilio, Gang Wang, Steven Watanabe, Richard Webb and Scott
  Woods.</p>
  <hr>

  <p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src=
  "../../../doc/images/valid-html401.png" alt="Valid HTML 4.01 Transitional"
  height="31" width="88"></a></p>

  <p>Revised 04 April, 2010</p>

  <p><i>Copyright &copy; 2003-2010 <a href="contact.html">Andreas Huber
  D&ouml;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>
