@@ -68,7 +68,8 @@ class IResetable
6868};
6969
7070template <typename T>
71- class ObserverList {
71+ class ObserverList
72+ {
7273public:
7374 ObserverList ();
7475 ~ObserverList ();
@@ -84,86 +85,101 @@ class ObserverList {
8485private:
8586 struct Node
8687 {
87- IObserver<T>* obj_;
88- Node *next_;
88+ IObserver<T>* _obj;
89+ Node *_next;
90+
91+ Node (IObserver<T>*);
8992 };
9093
91- Node *head_ ;
92- Node *tail_ ;
94+ Node *_head ;
95+ Node *_tail ;
9396};
9497
9598template <typename T>
96- ObserverList<T>::ObserverList() {
97- head_ = tail_ = nullptr ;
99+ ObserverList<T>::Node::Node(IObserver<T>* obj)
100+ {
101+ _obj = obj;
102+ _next = nullptr ;
103+ }
104+
105+ template <typename T>
106+ ObserverList<T>::ObserverList()
107+ {
108+ _head = _tail = nullptr ;
98109}
99110
100111template <typename T>
101- ObserverList<T>::~ObserverList () {
112+ ObserverList<T>::~ObserverList ()
113+ {
102114 RemoveAll ();
103115}
104116
105117template <typename T>
106- void ObserverList<T>::RemoveAll() {
118+ void ObserverList<T>::RemoveAll()
119+ {
107120 Node *node;
108- while (head_ != nullptr ) {
109- node = head_ ;
110- head_ = head_-> next_ ;
121+ while (_head != nullptr ) {
122+ node = _head ;
123+ _head = _head-> _next ;
111124 delete node;
112125 }
113126}
114127
115128template <typename T>
116- void ObserverList<T>::Add(IObserver<T>* obj) {
117- Node *node = new Node ();
118- node->obj_ = obj;
119- node ->next_ = nullptr ;
120- if (head_)
121- tail_ = tail_->next_ = node;
129+ void ObserverList<T>::Add(IObserver<T>* obj)
130+ {
131+ Node *node = new Node (obj);
132+ if (_head)
133+ _tail = _tail->_next = node;
122134 else
123- head_ = tail_ = node;
135+ _head = _tail = node;
124136}
125137
126138template <typename T>
127- void ObserverList<T>::Remove(IObserver<T>* obj) {
139+ void ObserverList<T>::Remove(IObserver<T>* obj)
140+ {
128141 Node *last = nullptr ;
129- Node *node = head_ ;
142+ Node *node = _head ;
130143 while (node != nullptr ) {
131- if (node->obj_ == obj) {
144+ if (node->_obj == obj) {
132145 if (last)
133- last->next_ = node->next_ ;
146+ last->_next = node->_next ;
134147 else
135- head_ = node->next_ ;
148+ _head = node->_next ;
136149
137- if (tail_ == node)
138- tail_ = last;
150+ if (_tail == node)
151+ _tail = last;
139152
140153 delete node;
141154 }
142155 last = node;
143- node = node->next_ ;
156+ node = node->_next ;
144157 }
145158}
146159
147160template <typename T>
148- bool ObserverList<T>::IsEmpty() const {
149- return head_ == nullptr ;
150- }
161+ bool ObserverList<T>::IsEmpty() const
162+ {
163+ return _head == nullptr ;
164+ }
151165
152166template <typename T>
153- void ObserverList<T>::OnNext(T value) const {
154- Node *node = head_;
167+ void ObserverList<T>::OnNext(T value) const
168+ {
169+ Node *node = _head;
155170 while (node != nullptr ) {
156- node->obj_ ->OnNext (value);
157- node = node->next_ ;
171+ node->_obj ->OnNext (value);
172+ node = node->_next ;
158173 }
159174}
160175
161176template <typename T>
162- void ObserverList<T>::OnComplete() const {
163- Node *node = head_;
177+ void ObserverList<T>::OnComplete() const
178+ {
179+ Node *node = _head;
164180 while (node != nullptr ) {
165- node->obj_ ->OnComplete ();
166- node = node->next_ ;
181+ node->_obj ->OnComplete ();
182+ node = node->_next ;
167183 }
168184}
169185
0 commit comments