f8e471e541
[SVN r36255]
82 lines
2.4 KiB
C++
82 lines
2.4 KiB
C++
#ifndef BOOST_STATECHART_TEST_INNERMOST_DEFAULT_HPP_INCLUDED
|
|
#define BOOST_STATECHART_TEST_INNERMOST_DEFAULT_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 <boost/statechart/state.hpp>
|
|
|
|
|
|
|
|
namespace sc = boost::statechart;
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
template< class MostDerived, class Context >
|
|
struct InnermostDefault : sc::state< MostDerived, Context >
|
|
{
|
|
typedef sc::state< MostDerived, Context > base_type;
|
|
typedef typename base_type::my_context my_context;
|
|
typedef InnermostDefault my_base;
|
|
|
|
InnermostDefault( my_context ctx ) : base_type( ctx )
|
|
{
|
|
this->outermost_context().template ActualEntry< MostDerived >();
|
|
}
|
|
|
|
~InnermostDefault()
|
|
{
|
|
this->outermost_context().template ActualDestructor< MostDerived >();
|
|
}
|
|
|
|
void exit()
|
|
{
|
|
this->outermost_context().template ActualExitFunction< MostDerived >();
|
|
}
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
template< class Context >
|
|
struct Default0 : InnermostDefault<
|
|
Default0< Context >, typename Context::template orthogonal< 0 > >
|
|
{
|
|
typedef InnermostDefault<
|
|
Default0, typename Context::template orthogonal< 0 > > base_type;
|
|
typedef typename base_type::my_context my_context;
|
|
|
|
Default0( my_context ctx ) : base_type( ctx ) {}
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
template< class Context >
|
|
struct Default1 : InnermostDefault<
|
|
Default1< Context >, typename Context::template orthogonal< 1 > >
|
|
{
|
|
typedef InnermostDefault<
|
|
Default1, typename Context::template orthogonal< 1 > > base_type;
|
|
typedef typename base_type::my_context my_context;
|
|
|
|
Default1( my_context ctx ) : base_type( ctx ) {}
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
template< class Context >
|
|
struct Default2 : InnermostDefault<
|
|
Default2< Context >, typename Context::template orthogonal< 2 > >
|
|
{
|
|
typedef InnermostDefault<
|
|
Default2, typename Context::template orthogonal< 2 > > base_type;
|
|
typedef typename base_type::my_context my_context;
|
|
|
|
Default2( my_context ctx ) : base_type( ctx ) {}
|
|
};
|
|
|
|
|
|
|
|
#endif
|