Source-highlight Library
/home/bettini/work/source-highlight/src-highlite/lib/srchilite/eventgenerator.h
00001 //
00002 // Author: Lorenzo Bettini <http://www.lorenzobettini.it>, (C) 2004-2008
00003 //
00004 // Copyright: See COPYING file that comes with this distribution
00005 //
00006 
00007 #ifndef EVENTGENERATOR_H_
00008 #define EVENTGENERATOR_H_
00009 
00010 #include <list>
00011 
00012 namespace srchilite {
00013 
00018 template <class EventListener, class EventType> class EventGenerator {
00020     std::list<EventListener *> listeners;
00021 public:
00022     void addListener(EventListener *listener) {
00023         listeners.push_back(listener);
00024     }
00025 
00026     void removeListener(EventListener *listener) {
00027         listeners.remove(listener);
00028     }
00029 
00030     bool hasListeners() const {
00031         return listeners.size();
00032     }
00033 
00038     void notify(const EventType &event) {
00039         for (typename std::list<EventListener *>::const_iterator it =
00040                 listeners.begin(); it != listeners.end(); ++it) {
00041             (*it)->notify(event);
00042         }
00043     }
00044 };
00045 
00046 }
00047 
00048 #endif /*EVENTGENERATOR_H_*/