InvalidTransitionTest1.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. //////////////////////////////////////////////////////////////////////////////
  2. // Copyright 2004-2006 Andreas Huber Doenni
  3. // Distributed under the Boost Software License, Version 1.0. (See accompany-
  4. // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  5. //////////////////////////////////////////////////////////////////////////////
  6. #include <boost/statechart/state_machine.hpp>
  7. #include <boost/statechart/simple_state.hpp>
  8. #include <boost/statechart/event.hpp>
  9. #include <boost/statechart/transition.hpp>
  10. #include <boost/mpl/list.hpp>
  11. namespace sc = boost::statechart;
  12. namespace mpl = boost::mpl;
  13. struct EvX : sc::event< EvX > {};
  14. struct Active;
  15. struct InvalidTransitionTest : sc::state_machine<
  16. InvalidTransitionTest, Active > {};
  17. struct Idle0;
  18. struct Idle1;
  19. struct Active : sc::simple_state<
  20. Active, InvalidTransitionTest, mpl::list< Idle0, Idle1 > > {};
  21. // Invalid transition between different orthogonal regions.
  22. struct Idle0 : sc::simple_state< Idle0, Active::orthogonal< 0 > >
  23. {
  24. typedef sc::transition< EvX, Idle1 > reactions;
  25. };
  26. struct Idle1 : sc::simple_state< Idle1, Active::orthogonal< 1 > > {};
  27. int main()
  28. {
  29. InvalidTransitionTest machine;
  30. machine.initiate();
  31. return 0;
  32. }