32 |
#define EVENT_MANAGER_BASE_H |
#define EVENT_MANAGER_BASE_H |
33 |
|
|
34 |
#include "event/listener.h" |
#include "event/listener.h" |
35 |
|
#include "event/types.h" |
36 |
|
|
37 |
namespace events |
namespace events |
38 |
{ |
{ |
44 |
class manager_base |
class manager_base |
45 |
{ |
{ |
46 |
public: |
public: |
47 |
|
manager_base (new_event create_event) |
48 |
|
{ |
49 |
|
event *evt = create_event (); |
50 |
|
|
51 |
|
Name = evt->name(); |
52 |
|
event_type::register_type (Name, this, create_event); |
53 |
|
} |
54 |
|
|
55 |
/** |
/** |
56 |
* Destructor |
* Destructor |
57 |
*/ |
*/ |
58 |
virtual ~manager_base () {} |
virtual ~manager_base () |
59 |
|
{ |
60 |
|
event_type::remove_type (Name); |
61 |
|
} |
62 |
|
|
63 |
/** |
/** |
64 |
* Registers a %listener. |
* Registers a %listener. |
80 |
* @param ev %event to raise. |
* @param ev %event to raise. |
81 |
*/ |
*/ |
82 |
virtual void raise_event (const event* ev) = 0; |
virtual void raise_event (const event* ev) = 0; |
83 |
|
|
84 |
|
private: |
85 |
|
/** Type name of events handled by this manager */ |
86 |
|
std::string Name; |
87 |
}; |
}; |
88 |
} |
} |
89 |
#endif // EVENT_MANAGER_BASE_H |
#endif // EVENT_MANAGER_BASE_H |