Empty.hpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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. #ifndef EMPTY_HPP
  11. #define EMPTY_HPP
  12. // back-end
  13. #include <boost/msm/back/state_machine.hpp>
  14. //front-end
  15. #include <boost/msm/front/state_machine_def.hpp>
  16. #include <boost/msm/front/row2.hpp>
  17. #include "Events.hpp"
  18. struct Open;
  19. namespace msm = boost::msm;
  20. namespace mpl = boost::mpl;
  21. struct Empty : public msm::front::state<>
  22. {
  23. template <class Event,class FSM>
  24. void on_entry(Event const&,FSM& ) {std::cout << "entering: Empty" << std::endl;}
  25. template <class Event,class FSM>
  26. void on_exit(Event const&,FSM& ) {std::cout << "leaving: Empty" << std::endl;}
  27. void open_drawer(open_close const&);
  28. struct internal_transition_table : mpl::vector<
  29. // Start Event Next Action Guard
  30. //+-------------+---------+-------------+---------+---------------------------+----------------------+
  31. msm::front::a_row2 < Empty , open_close , Open , Empty,&Empty::open_drawer >
  32. //+-------------+---------+-------------+---------+---------------------------+----------------------+
  33. > {};
  34. };
  35. #endif