Branch data Line data Source code
1 : :
2 : : #include "CubitEventDispatcher.hpp"
3 : : #include "CubitObserver.hpp"
4 : : #include "CubitObservable.hpp"
5 : : #include <algorithm>
6 : :
7 : 1748 : CubitEventDispatcher::CubitEventDispatcher()
8 : : {
9 : 874 : }
10 : :
11 : 0 : CubitEventDispatcher::~CubitEventDispatcher()
12 : : {
13 [ # # ]: 0 : }
14 : :
15 : 241275 : void CubitEventDispatcher::send_event(CubitObservable* observable, const CubitEvent& event)
16 : : {
17 [ + + ]: 241275 : if(observable)
18 : : {
19 [ + - ]: 240886 : observable->notify_observers(&event);
20 : : }
21 : :
22 [ + - ]: 241275 : std::vector<CubitObserver*>::iterator iter;
23 [ + - ][ + - ]: 482594 : for(iter = mObservers.begin(); iter != mObservers.end(); ++iter)
[ + - ][ + - ]
[ + + ]
24 : : {
25 [ + - ][ + - ]: 241319 : (*iter)->notify_observer(&event);
26 : : }
27 : 241275 : }
28 : :
29 : 2885 : void CubitEventDispatcher::add_observer(CubitObserver* obs)
30 : : {
31 [ + - ]: 2885 : std::vector<CubitObserver*>::iterator iter;
32 [ + - ][ + - ]: 2885 : iter = std::find(mObservers.begin(), mObservers.end(), obs);
[ + - ]
33 [ + - ][ + - ]: 2885 : if(iter == mObservers.end())
[ + + ]
34 : : {
35 [ + - ]: 2011 : mObservers.push_back(obs);
36 : : }
37 : 2885 : }
38 : :
39 : 1137 : void CubitEventDispatcher::remove_observer(CubitObserver* obs)
40 : : {
41 : : mObservers.erase(
42 : : std::remove(mObservers.begin(), mObservers.end(), obs),
43 : : mObservers.end()
44 : 1137 : );
45 : 1137 : }
46 : :
|