29 #ifndef __ETL_OBSERVER__
30 #define __ETL_OBSERVER__
58 #ifdef ETL_THROW_EXCEPTIONS
63 class observer_exception :
public exception
67 observer_exception(
const char* what)
77 class observer_list_full :
public observer_exception
82 : observer_exception(
"observer: list full")
94 template <
typename TObserver, const
size_t MAX_OBSERVERS>
99 typedef size_t size_type;
112 typename Observer_List::const_iterator i_observer = std::find(observer_list.
begin(),
117 if (i_observer == observer_list.
end())
120 if (!observer_list.
full())
125 #ifdef ETL_THROW_EXCEPTIONS
128 throw observer_list_full();
141 typename Observer_List::iterator i_observer = std::find(observer_list.
begin(),
146 if (i_observer != observer_list.
end())
149 observer_list.
erase(i_observer);
158 observer_list.
clear();
166 return observer_list.
size();
174 template <
typename TNotification>
177 for (
size_t i = 0; i < observer_list.
size(); ++i)
179 observer_list[i]->notification(n);
186 Observer_List observer_list;
193 template <
typename T1,
205 virtual void notification(T1) = 0;
206 virtual void notification(T2) = 0;
207 virtual void notification(T3) = 0;
208 virtual void notification(T4) = 0;
209 virtual void notification(T5) = 0;
210 virtual void notification(T6) = 0;
211 virtual void notification(T7) = 0;
212 virtual void notification(T8) = 0;
219 template <
typename T1,
231 virtual void notification(T1) = 0;
232 virtual void notification(T2) = 0;
233 virtual void notification(T3) = 0;
234 virtual void notification(T4) = 0;
235 virtual void notification(T5) = 0;
236 virtual void notification(T6) = 0;
237 virtual void notification(T7) = 0;
244 template <
typename T1,
255 virtual void notification(T1) = 0;
256 virtual void notification(T2) = 0;
257 virtual void notification(T3) = 0;
258 virtual void notification(T4) = 0;
259 virtual void notification(T5) = 0;
260 virtual void notification(T6) = 0;
267 template <
typename T1,
277 virtual void notification(T1) = 0;
278 virtual void notification(T2) = 0;
279 virtual void notification(T3) = 0;
280 virtual void notification(T4) = 0;
281 virtual void notification(T5) = 0;
288 template <
typename T1,
297 virtual void notification(T1) = 0;
298 virtual void notification(T2) = 0;
299 virtual void notification(T3) = 0;
300 virtual void notification(T4) = 0;
307 template <
typename T1,
315 virtual void notification(T1) = 0;
316 virtual void notification(T2) = 0;
317 virtual void notification(T3) = 0;
324 template <
typename T1,
331 virtual void notification(T1) = 0;
332 virtual void notification(T2) = 0;
339 template <
typename T1>
345 virtual void notification(T1) = 0;
void push_back(parameter_t value)
Definition: ivector.h:410
iterator end()
Definition: ivector.h:117
void clear()
Definition: ivector.h:546
void add_observer(TObserver &observer)
Definition: observer.h:109
Definition: observer.h:201
Definition: observer.h:95
Definition: algorithm.h:43
void remove_observer(TObserver &observer)
Definition: observer.h:138
iterator begin()
Definition: ivector.h:99
iterator erase(iterator iElement)
Definition: ivector.h:518
void notify_observers(TNotification n)
Definition: observer.h:175
bool full() const
Definition: vector_base.h:134
size_type number_of_observers() const
Returns the number of observers.
Definition: observer.h:164
void clear_observers()
Clear all observers from the list.
Definition: observer.h:156
size_type size() const
Definition: vector_base.h:116