31#ifndef ETL_OBSERVER_INCLUDED
32#define ETL_OBSERVER_INCLUDED
98 template <
typename TObserver, const
size_t MAX_OBSERVERS>
121 struct compare_observers
130 return p_observer ==
item.p_observer;
160 observer_list.push_back(observer_item(
observer));
224 observer_list.clear();
232 return observer_list.size();
240 template <
typename TNotification>
268 typename Observer_List::iterator find_observer(TObserver& observer_)
270 return etl::find_if(observer_list.begin(), observer_list.end(), compare_observers(observer_));
274 Observer_List observer_list;
277#if ETL_USING_CPP11 && !defined(ETL_OBSERVER_FORCE_CPP03_IMPLEMENTATION)
283 template <
typename T1,
typename... Types>
284 class observer :
public observer<T1>,
public observer<Types...>
288 using observer<T1>::notification;
289 using observer<Types...>::notification;
296 template <
typename T1>
301 virtual ~observer() =
default;
303 virtual void notification(T1) = 0;
312 template <
typename T1,
324 virtual void notification(
T1) = 0;
325 virtual void notification(
T2) = 0;
326 virtual void notification(
T3) = 0;
327 virtual void notification(
T4) = 0;
328 virtual void notification(
T5) = 0;
329 virtual void notification(
T6) = 0;
330 virtual void notification(
T7) = 0;
331 virtual void notification(
T8) = 0;
338 template <
typename T1,
350 virtual void notification(
T1) = 0;
351 virtual void notification(
T2) = 0;
352 virtual void notification(
T3) = 0;
353 virtual void notification(
T4) = 0;
354 virtual void notification(
T5) = 0;
355 virtual void notification(
T6) = 0;
356 virtual void notification(
T7) = 0;
363 template <
typename T1,
374 virtual void notification(
T1) = 0;
375 virtual void notification(
T2) = 0;
376 virtual void notification(
T3) = 0;
377 virtual void notification(
T4) = 0;
378 virtual void notification(
T5) = 0;
379 virtual void notification(
T6) = 0;
386 template <
typename T1,
396 virtual void notification(
T1) = 0;
397 virtual void notification(
T2) = 0;
398 virtual void notification(
T3) = 0;
399 virtual void notification(
T4) = 0;
400 virtual void notification(
T5) = 0;
407 template <
typename T1,
416 virtual void notification(
T1) = 0;
417 virtual void notification(
T2) = 0;
418 virtual void notification(
T3) = 0;
419 virtual void notification(
T4) = 0;
426 template <
typename T1,
434 virtual void notification(
T1) = 0;
435 virtual void notification(
T2) = 0;
436 virtual void notification(
T3) = 0;
443 template <
typename T1,
450 virtual void notification(
T1) = 0;
451 virtual void notification(
T2) = 0;
458 template <
typename T1>
464 virtual void notification(
T1) = 0;
Definition exception.h:47
void notify_observers(TNotification n)
Definition observer.h:241
void disable_observer(TObserver &observer)
Disable an observer.
Definition observer.h:207
void add_observer(TObserver &observer)
Definition observer.h:148
bool remove_observer(TObserver &observer)
Definition observer.h:169
void clear_observers()
Clear all observers from the list.
Definition observer.h:222
void enable_observer(TObserver &observer, bool state=true)
Definition observer.h:192
size_type number_of_observers() const
Returns the number of observers.
Definition observer.h:230
Definition observer.h:100
Definition observer.h:321
bitset_ext
Definition absolute.h:38
pair holds two objects of arbitrary type
Definition utility.h:164