-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLoggingObserver.cpp
More file actions
136 lines (89 loc) · 3.12 KB
/
LoggingObserver.cpp
File metadata and controls
136 lines (89 loc) · 3.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include "LoggingObserver.h"
#include <fstream>
// THE FOLLOWING CODE IS COMMENTED OUT BECAUSE IT WAS INTERFERRING WITH ISSUES IN OTHER FILES
// LogObserver::LogObserver() {
// };
// /***************** ILOGGABLE COPY CONSTRUCTOR *****************/
// LogObserver::LogObserver(const LogObserver &logobserver) {
// };
/**************** SUBJECT ASSIGNMENT OPERATOR ***************/
// LogObserver& LogObserver::operator =(const LogObserver &logobserver) {
// return *this;
// };
/***************** SUBJECT STREAM OPERATOR *****************/
// ostream& operator<<(std::ostream& out, const LogObserver& logobserver) {
// out << "LogObserver";
// return out;
// }
// Observer::Observer() {
// };
/***************** Observer COPY CONSTRUCTOR *****************/
// Observer::Observer(const Observer &observer) {
// };
/**************** Observer ASSIGNMENT OPERATOR ***************/
// Observer& Observer::operator =(const Observer &observer) {
// return *this;
// };
// /***************** Observer STREAM OPERATOR *****************/
// ostream& operator<<(std::ostream& out, const Observer& observer) {
// out << "OBSERVER";
// return out;
// }
/***************** SUBJECT COPY CONSTRUCTOR *****************/
// Subject::Subject(const Subject &subject) {
// };
// /**************** SUBJECT ASSIGNMENT OPERATOR ***************/
// Subject& Subject::operator =(const Subject &subject) {
// return *this;
// };
/**************** SUBJECT ASSIGNMENT OPERATOR ***************/
// ILoggable& ILoggable::operator =(const ILoggable &ilog) {
// return *this;
// };
// /***************** SUBJECT STREAM OPERATOR *****************/
// ostream& operator<<(std::ostream& out, const ILoggable& ilog) {
// out << "ILOGGABLE";
// return out;
// }
LogObserver::~LogObserver() {
};
// LogObserver Update - prints stringToLog whenever update is called to .txt
void LogObserver::Update(ILoggable* log) {
ofstream output;
output.open("gamelog.txt");
output << log->stringToLog();
output.close();
};
// Observer destructor
Observer::~Observer() {
};
// Subject constructor creates new list of observers
Subject::Subject() {
_observers = new list<Observer*>;
};
// Subject destructor
Subject::~Subject() {
delete _observers;
};
/***************** SUBJECT STREAM OPERATOR *****************/
ostream& operator<<(std::ostream& out, const Subject& subject) {
out << "SUBJECT";
return out;
}
// Used to attach an observer
void Subject::Attach(Observer* o) {
_observers->push_back(o);
};
// Used to detach an observer
void Subject::Detach(Observer* o) {
_observers->remove(o);
};
// Notify function that updates all observers
void Subject::Notify(ILoggable* log) {
list<Observer *>::iterator i = _observers->begin();
for (; i != _observers->end(); ++i)
(*i)->Update(log);
};
// ILoggable destructor
ILoggable::~ILoggable() {
};