31#ifndef ETL_DELEGATE_OBSERVABLE_INCLUDED
32#define ETL_DELEGATE_OBSERVABLE_INCLUDED
46 template <
typename TNotification,
size_t Max_Observers>
79 template <
typename... TDelegate>
81 : delegate_list{
etl::forward<TDelegate>(delegates)...}
82 , delegate_count(sizeof...(delegates))
84 ETL_STATIC_ASSERT(Max_Observers >=
sizeof...(delegates),
"Number of delegates exceeds maximum observers");
85 ETL_STATIC_ASSERT((etl::are_all_same<
delegate_type, etl::decay_t<TDelegate>...>::value),
"All delegates must be delegate_type");
94 template <
typename... TDelegate>
109 for (
size_t i = 0; i < Max_Observers; ++i)
119 for (
size_t i = 0; i < Max_Observers; ++i)
121 if (!delegate_list[i].is_valid())
140 for (
size_t i = 0; i < Max_Observers; ++i)
145 delegate_list[i].clear();
159 for (
size_t i = 0; i < Max_Observers; ++i)
161 delegate_list[i].clear();
172 return delegate_count;
182 if (delegate_count != 0)
184 for (
size_t i = 0; i < Max_Observers; ++i)
186 delegate_list[i].call_if(n);
194 DelegateList delegate_list;
197 size_t delegate_count;
204 template <
typename TNotification,
typename... TDelegates>
205 delegate_observable(TNotification, TDelegates...) -> delegate_observable<TNotification,
sizeof...(TDelegates)>;
Declaration.
Definition delegate_cpp03.h:191
ETL_CONSTEXPR14 void clear_observers()
Clear all observers.
Definition delegate_observable.h:157
TNotification notification_type
The type of the notification.
Definition delegate_observable.h:64
etl::delegate< void(TNotification)> delegate_type
The type of the observers.
Definition delegate_observable.h:52
ETL_CONSTEXPR14 delegate_observable()
Default constructor.
Definition delegate_observable.h:69
ETL_CONSTEXPR14 bool remove_observer(const delegate_type &observer)
Definition delegate_observable.h:138
ETL_CONSTEXPR14 void notify_observers(notification_type n) const
Definition delegate_observable.h:180
ETL_CONSTEXPR14 bool add_observer(delegate_type observer)
Definition delegate_observable.h:107
ETL_CONSTEXPR14 size_type number_of_observers() const
Returns the number of observers.
Definition delegate_observable.h:170
size_t size_type
The type for sizes.
Definition delegate_observable.h:61
Definition observer.h:379
bitset_ext
Definition absolute.h:40