#ifndef BOOST_STATECHART_TEST_OUTER_ORTHOGONAL_HPP_INCLUDED #define BOOST_STATECHART_TEST_OUTER_ORTHOGONAL_HPP_INCLUDED ////////////////////////////////////////////////////////////////////////////// // Copyright 2004-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 #include #include "InnermostDefault.hpp" namespace sc = boost::statechart; namespace mpl = boost::mpl; ////////////////////////////////////////////////////////////////////////////// template< class MostDerived, class Context, class InitialState0 > struct Orthogonal0 : sc::state< MostDerived, Context, mpl::list< InitialState0, Default1< MostDerived >, Default2< MostDerived > > > { typedef sc::state< MostDerived, Context, mpl::list< InitialState0, Default1< MostDerived >, Default2< MostDerived > > > base_type; typedef typename base_type::my_context my_context; typedef Orthogonal0 my_base; Orthogonal0( my_context ctx ) : base_type( ctx ) { this->outermost_context().template ActualEntry< MostDerived >(); } ~Orthogonal0() { this->outermost_context().template ActualDestructor< MostDerived >(); } void exit() { this->outermost_context().template ActualExitFunction< MostDerived >(); } }; ////////////////////////////////////////////////////////////////////////////// template< class MostDerived, class Context, class InitialState1 > struct Orthogonal1 : sc::state< MostDerived, Context, mpl::list< Default0< MostDerived >, InitialState1, Default2< MostDerived > > > { typedef sc::state< MostDerived, Context, mpl::list< Default0< MostDerived >, InitialState1, Default2< MostDerived > > > base_type; typedef typename base_type::my_context my_context; typedef Orthogonal1 my_base; Orthogonal1( my_context ctx ) : base_type( ctx ) { this->outermost_context().template ActualEntry< MostDerived >(); } ~Orthogonal1() { this->outermost_context().template ActualDestructor< MostDerived >(); } void exit() { this->outermost_context().template ActualExitFunction< MostDerived >(); } }; ////////////////////////////////////////////////////////////////////////////// template< class MostDerived, class Context, class InitialState2 > struct Orthogonal2 : sc::state< MostDerived, Context, mpl::list< Default0< MostDerived >, Default1< MostDerived >, InitialState2 > > { typedef sc::state< MostDerived, Context, mpl::list< Default0< MostDerived >, Default1< MostDerived >, InitialState2 > > base_type; typedef typename base_type::my_context my_context; typedef Orthogonal2 my_base; Orthogonal2( my_context ctx ) : base_type( ctx ) { this->outermost_context().template ActualEntry< MostDerived >(); } ~Orthogonal2() { this->outermost_context().template ActualDestructor< MostDerived >(); } void exit() { this->outermost_context().template ActualExitFunction< MostDerived >(); } }; #endif