00001 #include <algorithm> 00002 #include "ObservableInterface.h" 00003 #include "ListenerInterface.h" 00004 00005 using namespace std; 00006 00010 void 00011 ObservableInterface::registerListener(ListenerInterface* listener) { 00012 m_listeners.push_back(listener); 00013 } // fn addListener 00014 00015 00020 void 00021 ObservableInterface::removeListener(ListenerInterface* listener) { 00022 if (!m_listeners.empty()) { 00023 m_listeners.erase(find(m_listeners.begin(), m_listeners.end(), listener)); 00024 } 00025 } // removeListener 00026 00027 00031 vector<ListenerInterface*> 00032 ObservableInterface::getListeners() { 00033 return m_listeners; 00034 } // fn getListeners 00035 00036 00037 void 00038 ObservableInterface::fireEvent(int eventType) { 00039 vector<ListenerInterface*>::iterator iter; 00040 00041 for (iter = m_listeners.begin(); iter != m_listeners.end(); ++iter) { 00042 (*iter)->handleEvent(this, eventType, NULL); 00043 } 00044 } // fn fireEvent 00045 00046 00047 void 00048 ObservableInterface::fireEvent(int eventType, void* object) { 00049 vector<ListenerInterface*>::iterator iter; 00050 00051 for (iter = m_listeners.begin(); iter != m_listeners.end(); ++iter) { 00052 (*iter)->handleEvent(this, eventType, object); 00053 } 00054 } // fn fireEvent 00055