Mercurial > hg > vamp-build-and-test
diff DEPENDENCIES/generic/include/boost/statechart/asynchronous_state_machine.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DEPENDENCIES/generic/include/boost/statechart/asynchronous_state_machine.hpp Tue Aug 05 11:11:38 2014 +0100 @@ -0,0 +1,89 @@ +#ifndef BOOST_STATECHART_ASYNCHRONOUS_STATE_MACHINE_HPP_INCLUDED +#define BOOST_STATECHART_ASYNCHRONOUS_STATE_MACHINE_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/state_machine.hpp> +#include <boost/statechart/fifo_scheduler.hpp> +#include <boost/statechart/null_exception_translator.hpp> +#include <boost/statechart/event_processor.hpp> + +#include <memory> // std::allocator + + +namespace boost +{ +namespace statechart +{ + + + +class event_base; + + + +////////////////////////////////////////////////////////////////////////////// +template< class MostDerived, + class InitialState, + class Scheduler = fifo_scheduler<>, + class Allocator = std::allocator< void >, + class ExceptionTranslator = null_exception_translator > +class asynchronous_state_machine : public state_machine< + MostDerived, InitialState, Allocator, ExceptionTranslator >, + public event_processor< Scheduler > +{ + typedef state_machine< MostDerived, + InitialState, Allocator, ExceptionTranslator > machine_base; + typedef event_processor< Scheduler > processor_base; + protected: + ////////////////////////////////////////////////////////////////////////// + typedef asynchronous_state_machine my_base; + + asynchronous_state_machine( typename processor_base::my_context ctx ) : + processor_base( ctx ) + { + } + + virtual ~asynchronous_state_machine() {} + + public: + ////////////////////////////////////////////////////////////////////////// + // The following declarations should be private. + // They are only public because many compilers lack template friends. + ////////////////////////////////////////////////////////////////////////// + void terminate() + { + processor_base::terminate(); + } + + private: + ////////////////////////////////////////////////////////////////////////// + virtual void initiate_impl() + { + machine_base::initiate(); + } + + virtual void process_event_impl( const event_base & evt ) + { + machine_base::process_event( evt ); + } + + virtual void terminate_impl() + { + machine_base::terminate(); + } +}; + + + +} // namespace statechart +} // namespace boost + + + +#endif