cgma
|
00001 00002 #include "CubitEventDispatcher.hpp" 00003 #include "CubitObserver.hpp" 00004 #include "CubitObservable.hpp" 00005 #include <algorithm> 00006 00007 CubitEventDispatcher::CubitEventDispatcher() 00008 { 00009 } 00010 00011 CubitEventDispatcher::~CubitEventDispatcher() 00012 { 00013 } 00014 00015 void CubitEventDispatcher::send_event(CubitObservable* observable, const CubitEvent& event) 00016 { 00017 if(observable) 00018 { 00019 observable->notify_observers(&event); 00020 } 00021 00022 std::vector<CubitObserver*>::iterator iter; 00023 for(iter = mObservers.begin(); iter != mObservers.end(); ++iter) 00024 { 00025 (*iter)->notify_observer(&event); 00026 } 00027 } 00028 00029 void CubitEventDispatcher::add_observer(CubitObserver* obs) 00030 { 00031 std::vector<CubitObserver*>::iterator iter; 00032 iter = std::find(mObservers.begin(), mObservers.end(), obs); 00033 if(iter == mObservers.end()) 00034 { 00035 mObservers.push_back(obs); 00036 } 00037 } 00038 00039 void CubitEventDispatcher::remove_observer(CubitObserver* obs) 00040 { 00041 mObservers.erase( 00042 std::remove(mObservers.begin(), mObservers.end(), obs), 00043 mObservers.end() 00044 ); 00045 } 00046