cgma
CubitEventDispatcher.cpp
Go to the documentation of this file.
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 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines