| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | #ifndef BOOST_STATECHART_TERMINATION_HPP_INCLUDED#define BOOST_STATECHART_TERMINATION_HPP_INCLUDED//////////////////////////////////////////////////////////////////////////////// Copyright 2002-2006 Andreas Huber Doenni// Distributed under the Boost Software License, Version 1.0. (See accompany-// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)//////////////////////////////////////////////////////////////////////////////#include <boost/statechart/result.hpp>namespace boost{namespace statechart{class event_base;//////////////////////////////////////////////////////////////////////////////template< class Event >class termination{  public:    //////////////////////////////////////////////////////////////////////////    // The following declarations should be private.    // They are only public because many compilers lack template friends.    //////////////////////////////////////////////////////////////////////////    template< class State, class EventBase, class IdType >    static detail::reaction_result react(      State & stt, const EventBase &, const IdType & eventType )    {      if ( eventType == Event::static_type() )      {        return detail::result_utility::get_result( stt.terminate() );      }      else      {        return detail::no_reaction;      }    }};template<>class termination< event_base >{  public:    //////////////////////////////////////////////////////////////////////////    // The following declarations should be private.    // They are only public because many compilers lack template friends.    //////////////////////////////////////////////////////////////////////////    template< class State, class EventBase, class IdType >    static detail::reaction_result react(      State & stt, const EventBase &, const IdType & )    {      return detail::result_utility::get_result( stt.terminate() );    }};} // namespace statechart} // namespace boost#endif
 |