OpenRTM-aist  2.1.0
EventBase.h
[詳解]
1 // -*- C++ -*-
18 #ifndef RTC_EVENTBASE_H
19 #define RTC_EVENTBASE_H
20 
21 
22 
23 namespace RTC
24 {
26  {
27  public:
28  EventBinderBase0() = default;
29  virtual ~EventBinderBase0() = default;
30  virtual void run() = 0;
31  };
32  template <class P0>class EventBinderBase1
33  {
34  public:
35  EventBinderBase1() = default;
36  virtual ~EventBinderBase1() = default;
37  virtual void run(P0& data) = 0;
38  };
39 
40  class EventBase
41  {
42  public:
43  EventBase() = default;
44  virtual ~EventBase() = default;
45  virtual void operator()()=0;
46  };
47 
48  class Event0 : public EventBase
49  {
50  public:
52  m_eb(eb)
53  {
54  }
55  ~Event0() override = default;
56  void operator()() override
57  {
58  m_eb->run();
59  }
60  private:
61  EventBinderBase0 *m_eb;
62  };
63 
64  template <class P0>
65  class Event1 : public EventBase
66  {
67  public:
68  Event1(EventBinderBase1<P0> *eb, P0 &data):
69  m_eb(eb), m_data(data)
70  {
71  }
72  ~Event1() override = default;
73  void operator()() override
74  {
75  m_eb->run(m_data);
76  }
77  private:
79  P0 m_data;
80  };
81 
82 
83 } // namespace RTC
84 
85 #endif // RTC_EVENTBASE_H
Definition: EventBase.h:49
~Event0() override=default
void operator()() override
Definition: EventBase.h:56
Event0(EventBinderBase0 *eb)
Definition: EventBase.h:51
Definition: EventBase.h:66
~Event1() override=default
void operator()() override
Definition: EventBase.h:73
Event1(EventBinderBase1< P0 > *eb, P0 &data)
Definition: EventBase.h:68
Definition: EventBase.h:41
EventBase()=default
virtual void operator()()=0
virtual ~EventBase()=default
Definition: EventBase.h:26
virtual ~EventBinderBase0()=default
EventBinderBase0()=default
virtual void run()=0
Definition: EventBase.h:33
virtual ~EventBinderBase1()=default
EventBinderBase1()=default
virtual void run(P0 &data)=0
RTコンポーネント