• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2010 Christophe Henry
2 // henry UNDERSCORE christophe AT hotmail DOT com
3 // This is an extended version of the state machine available in the boost::mpl library
4 // Distributed under the same license as the original.
5 // Copyright for the original version:
6 // Copyright 2005 David Abrahams and Aleksey Gurtovoy. Distributed
7 // under the Boost Software License, Version 1.0. (See accompanying
8 // file LICENSE_1_0.txt or copy at
9 // http://www.boost.org/LICENSE_1_0.txt)
10 
11 #ifndef OPEN_HPP
12 #define OPEN_HPP
13 
14 // back-end
15 #include <boost/msm/back/state_machine.hpp>
16 //front-end
17 #include <boost/msm/front/state_machine_def.hpp>
18 #include <boost/msm/front/row2.hpp>
19 
20 #include "Events.hpp"
21 
22 struct Empty;
23 
24 namespace msm = boost::msm;
25 namespace mpl = boost::mpl;
26 using namespace msm::front;
27 
28 struct Open : public msm::front::state<>
29 {
30     template <class Event,class FSM>
on_entryOpen31     void on_entry(Event const& ,FSM&) {std::cout << "entering: Open" << std::endl;}
32     template <class Event,class FSM>
on_exitOpen33     void on_exit(Event const&,FSM& ) {std::cout << "leaving: Open" << std::endl;}
34     void close_drawer(open_close const&);
35 
36     struct internal_transition_table : mpl::vector<
37         //               Start     Event         Next      Action                      Guard
38         //+-------------+---------+-------------+---------+---------------------------+----------------------+
39     msm::front::a_row2  < Open    , open_close  , Empty   , Open,&Open::close_drawer                         >
40         //+-------------+---------+-------------+---------+---------------------------+----------------------+
41     > {};
42 };
43 
44 #endif
45