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>
108 for (
size_t i = 0; i < Max_Observers; ++i)
118 for (
size_t i = 0; i < Max_Observers; ++i)
120 if (!delegate_list[i].is_valid())
139 for (
size_t i = 0; i < Max_Observers; ++i)
144 delegate_list[i].clear();
158 for (
size_t i = 0; i < Max_Observers; ++i)
160 delegate_list[i].clear();
171 return delegate_count;
181 if (delegate_count != 0)
183 for (
size_t i = 0; i < Max_Observers; ++i)
185 delegate_list[i].call_if(n);
193 DelegateList delegate_list;
196 size_t delegate_count;
203 template <
typename TNotification,
typename... TDelegates>
204 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:156
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:137
ETL_CONSTEXPR14 void notify_observers(notification_type n) const
Definition delegate_observable.h:179
ETL_CONSTEXPR14 bool add_observer(delegate_type observer)
Definition delegate_observable.h:106
ETL_CONSTEXPR14 size_type number_of_observers() const
Returns the number of observers.
Definition delegate_observable.h:169
size_t size_type
The type for sizes.
Definition delegate_observable.h:61
Definition observer.h:363
bitset_ext
Definition absolute.h:39