WoW Model Viewer
Your premiere tool for viewing, equipping and animating World of Warcraft models.
Loading...
Searching...
No Matches
Observer.cpp
Go to the documentation of this file.
1#include "Observer.h"
2#include "Event.h"
3#include "Observable.h"
4
9
11{
12 while (!m_observableList.empty())
13 {
14 std::list<Observable*>::iterator l_it = m_observableList.begin();
15 (*l_it)->detach(this);
16 }
17}
18
20{
21 if (!event)
22 return;
23
24 switch (event->type())
25 {
28 break;
29
30 default:
31 onEvent(event);
32 break;
33 }
34}
35
37{
38 const std::list<Observable*>::iterator l_toRemove = findObservable(obs);
39 if (l_toRemove == m_observableList.end())
40 {
41 m_observableList.push_back(obs);
42 }
43}
44
49
50std::list<Observable*>::iterator Observer::findObservable(Observable* obs)
51{
52 std::list<Observable*>::iterator l_result = m_observableList.end();
53
54 if (obs != nullptr)
55 {
56 for (std::list<Observable*>::iterator l_it = m_observableList.begin(); l_it != m_observableList.end(); ++l_it)
57 {
58 if (*l_it == obs)
59 {
60 l_result = l_it;
61 break;
62 }
63 }
64 }
65
66 return l_result;
67}
Lightweight event object carrying a type tag and sender reference.
Definition Event.h:9
EventType type() const
Definition Event.h:20
@ DESTROYED
Definition Event.h:13
Subject in the Observer pattern; maintains a list of Observer subscribers.
Definition Observable.h:12
virtual void onEvent(Event *)=0
Handle an incoming event. Must be implemented by subclasses.
void addObservable(Observable *)
Definition Observer.cpp:36
void treatEvent(Event *)
Definition Observer.cpp:19
virtual ~Observer()
Definition Observer.cpp:10
std::list< Observable * >::iterator findObservable(Observable *)
Definition Observer.cpp:50
void removeObservable(Observable *)
Definition Observer.cpp:45
virtual void onDestroyEvent()
Called when an observed subject is destroyed.
Definition Observer.h:18
std::list< Observable * > m_observableList
Definition Observer.h:30