| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #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
|