Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_34_1/boost/statechart/event_processor.hpp @ 33

Last change on this file since 33 was 29, checked in by landauf, 17 years ago

updated boost from 1_33_1 to 1_34_1

File size: 1.8 KB
Line 
1#ifndef BOOST_STATECHART_EVENT_PROCESSOR_INCLUDED
2#define BOOST_STATECHART_EVENT_PROCESSOR_INCLUDED
3//////////////////////////////////////////////////////////////////////////////
4// Copyright 2002-2006 Andreas Huber Doenni
5// Distributed under the Boost Software License, Version 1.0. (See accompany-
6// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7//////////////////////////////////////////////////////////////////////////////
8
9
10
11namespace boost
12{
13namespace statechart
14{
15
16
17 
18class event_base;
19
20
21
22//////////////////////////////////////////////////////////////////////////////
23template< class Scheduler >
24class event_processor
25{
26  public:
27    //////////////////////////////////////////////////////////////////////////
28    virtual ~event_processor() {}
29
30    Scheduler & my_scheduler() const
31    {
32      return myScheduler_;
33    }
34
35    typedef typename Scheduler::processor_handle processor_handle;
36
37    processor_handle my_handle() const
38    {
39      return myHandle_;
40    }
41
42    void initiate()
43    {
44      initiate_impl();
45    }
46
47    void process_event( const event_base & evt )
48    {
49      process_event_impl( evt );
50    }
51
52    void terminate()
53    {
54      terminate_impl();
55    }
56
57  protected:
58    //////////////////////////////////////////////////////////////////////////
59    typedef const typename Scheduler::processor_context & my_context;
60
61    event_processor( my_context ctx ) :
62      myScheduler_( ctx.my_scheduler() ),
63      myHandle_( ctx.my_handle() )
64    {
65    }
66
67  private:
68    //////////////////////////////////////////////////////////////////////////
69    virtual void initiate_impl() = 0;
70    virtual void process_event_impl( const event_base & evt ) = 0;
71    virtual void terminate_impl() = 0;
72
73    Scheduler & myScheduler_;
74    const processor_handle myHandle_;
75};
76
77
78
79} // namespace statechart
80} // namespace boost
81
82
83
84#endif
Note: See TracBrowser for help on using the repository browser.