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