Mercurial > hg > vamp-build-and-test
view DEPENDENCIES/generic/include/boost/statechart/event_processor.hpp @ 40:a7005ff33d3c
OS/X build fixes
author | Chris Cannam |
---|---|
date | Thu, 07 Aug 2014 08:17:36 +0100 |
parents | 2665513ce2d3 |
children |
line wrap: on
line source
#ifndef BOOST_STATECHART_EVENT_PROCESSOR_INCLUDED #define BOOST_STATECHART_EVENT_PROCESSOR_INCLUDED ////////////////////////////////////////////////////////////////////////////// // Copyright 2002-2008 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) ////////////////////////////////////////////////////////////////////////////// namespace boost { namespace statechart { class event_base; ////////////////////////////////////////////////////////////////////////////// template< class Scheduler > class event_processor { public: ////////////////////////////////////////////////////////////////////////// virtual ~event_processor() {} Scheduler & my_scheduler() const { return myScheduler_; } typedef typename Scheduler::processor_handle processor_handle; processor_handle my_handle() const { return myHandle_; } void initiate() { initiate_impl(); } void process_event( const event_base & evt ) { process_event_impl( evt ); } void terminate() { terminate_impl(); } protected: ////////////////////////////////////////////////////////////////////////// typedef const typename Scheduler::processor_context & my_context; event_processor( my_context ctx ) : myScheduler_( ctx.my_scheduler() ), myHandle_( ctx.my_handle() ) { } private: ////////////////////////////////////////////////////////////////////////// virtual void initiate_impl() = 0; virtual void process_event_impl( const event_base & evt ) = 0; virtual void terminate_impl() = 0; // avoids C4512 (assignment operator could not be generated) event_processor & operator=( const event_processor & ); Scheduler & myScheduler_; const processor_handle myHandle_; }; } // namespace statechart } // namespace boost #endif