31#ifndef ETL_OBSERVER_INCLUDED
32#define ETL_OBSERVER_INCLUDED
97 template <
typename TObserver, const
size_t Max_Observers>
120 struct compare_observers
127 bool operator ()(
const observer_item&
item)
const
129 return p_observer ==
item.p_observer;
137 typedef size_t size_type;
139 typedef etl::vector<observer_item, Max_Observers> Observer_List;
159 observer_list.push_back(observer_item(
observer));
223 observer_list.clear();
231 return observer_list.size();
239 template <
typename TNotification>
242 typename Observer_List::iterator
i_observer_item = observer_list.begin();
260 typename Observer_List::iterator
i_observer_item = observer_list.begin();
287 return etl::find_if(observer_list.begin(), observer_list.end(), compare_observers(
observer_));
291 Observer_List observer_list;
294#if ETL_USING_CPP11 && !defined(ETL_OBSERVER_FORCE_CPP03_IMPLEMENTATION)
295 template <
typename...
TTypes>
302 template <
typename T1,
typename...
TRest>
303 class observer<
T1,
TRest...> :
public observer<T1>,
public observer<TRest...>
307 ETL_STATIC_ASSERT((!etl::has_duplicates<T1, TRest...>::value),
"Observer has duplicate notification types");
309 using observer<
T1>::notification;
310 using observer<
TRest...>::notification;
317 template <
typename T1>
322 virtual ~observer() =
default;
324 virtual void notification(
T1) = 0;
336 virtual ~observer() =
default;
338 virtual void notification() = 0;
347 template <
typename T1,
381 template <
typename T1,
412 template <
typename T1,
440 template <
typename T1,
465 template <
typename T1,
487 template <
typename T1,
506 template <
typename T1,
522 template <
typename T1>
528 virtual void notification(
T1) = 0;
541 virtual void notification() = 0;
Definition exception.h:47
void add_observer(TObserver &observer)
Definition observer.h:147
bool remove_observer(TObserver &observer)
Definition observer.h:168
void notify_observers(TNotification n)
Definition observer.h:240
void notify_observers()
Notify all of the observers, sending them the notification.
Definition observer.h:258
void disable_observer(TObserver &observer)
Disable an observer.
Definition observer.h:206
void enable_observer(TObserver &observer, bool state=true)
Definition observer.h:191
size_type number_of_observers() const
Returns the number of observers.
Definition observer.h:229
void clear_observers()
Clear all observers from the list.
Definition observer.h:221
Definition observer.h:363
bitset_ext
Definition absolute.h:39
ETL_NODISCARD ETL_CONSTEXPR14 T round_half_even_unscaled(T value) ETL_NOEXCEPT
Definition scaled_rounding.h:315