00001 #ifndef EVENTS_HH_
00002 # define EVENTS_HH_
00003
00004 #include <map>
00005
00006 namespace events
00007 {
00008 class EventManager;
00009 class EventHandler;
00010
00011 class EventManager
00012 {
00013 public:
00014 typedef std::map<EventHandler *, int> EventPriorities;
00015 typedef std::map<int, EventPriorities> Events;
00016
00017 public:
00018 EventManager();
00019 ~EventManager();
00020
00021 void register_event(EventHandler &eh, int event_id, int priority = 0);
00022 void unregister_event(EventHandler &eh, int event_id, int priority = 0);
00023 void run_event(int event_id);
00024
00025 const Events &get_events() const;
00026
00027 protected:
00028 Events _events;
00029 };
00030
00031 class EventHandler
00032 {
00033 public:
00034 EventHandler();
00035 ~EventHandler();
00036
00037 virtual void run_event(EventManager &em, int event_id);
00038
00039 protected:
00040 void register_event(EventManager &em, int event_id, int priority = 0);
00041 void unregister_event(EventManager &em, int event_id, int priority = 0);
00042 };
00043 }
00044
00045 # include "events.hxx"
00046
00047 #endif