31#ifndef ETL_DELEGATE_OBSERVER_INCLUDED
32#define ETL_DELEGATE_OBSERVER_INCLUDED
54 :
exception(reason_, file_name_, line_number_)
68 :
delegate_observer_exception(ETL_ERROR_TEXT(
"delegate_observable:full", ETL_DELEGATE_OBSERVER_FILE_ID
"A"), file_name_, line_number_)
78 template <
typename TNotification, const
size_t MAX_OBSERVERS>
105 struct compare_observers
112 bool operator ()(
const observer_item& item)
const
124 typedef size_t size_type;
125 typedef TNotification notification_type;
136 typename Observer_List::iterator i_observer_item = find_observer(
observer);
139 if (i_observer_item == observer_list.
end())
157 typename Observer_List::iterator i_observer_item = find_observer(
observer);
160 if (i_observer_item != observer_list.
end())
163 observer_list.
erase(i_observer_item);
180 typename Observer_List::iterator i_observer_item = find_observer(
observer);
183 if (i_observer_item != observer_list.
end())
185 i_observer_item->enabled = state;
195 typename Observer_List::iterator i_observer_item = find_observer(
observer);
198 if (i_observer_item != observer_list.
end())
200 i_observer_item->enabled =
false;
209 observer_list.
clear();
217 return observer_list.
size();
227 typename Observer_List::iterator i_observer_item = observer_list.
begin();
229 while (i_observer_item != observer_list.
end())
231 if (i_observer_item->enabled)
233 i_observer_item->p_observer->notification(n);
252 typename Observer_List::iterator find_observer(observer_type& observer_)
254 return etl::find_if(observer_list.
begin(), observer_list.
end(), compare_observers(observer_));
258 Observer_List observer_list;
Declaration.
Definition: delegate_cpp03.h:175
ETL_CONSTEXPR exception(string_type reason_, string_type, numeric_type line_)
Constructor.
Definition: exception.h:69
Definition: exception.h:47
void add_observer(observer_type &observer)
Definition: delegate_observer.h:133
void notify_observers(TNotification n)
Definition: delegate_observer.h:225
void enable_observer(observer_type &observer, bool state=true)
Definition: delegate_observer.h:177
void clear_observers()
Clear all observers from the list.
Definition: delegate_observer.h:207
bool remove_observer(observer_type &observer)
Definition: delegate_observer.h:154
void disable_observer(observer_type &observer)
Disable an observer.
Definition: delegate_observer.h:192
size_type number_of_observers() const
Returns the number of observers.
Definition: delegate_observer.h:215
Definition: delegate_observer.h:80
Definition: delegate_observer.h:50
Definition: delegate_observer.h:64
Definition: observer.h:100
Definition: observer.h:321
Definition: observer.h:83
iterator begin()
Definition: vector.h:100
void push_back(const_reference value)
Definition: vector.h:432
void clear()
Clears the vector.
Definition: vector.h:414
iterator end()
Definition: vector.h:118
bool full() const
Definition: vector.h:977
size_type size() const
Definition: vector.h:959
iterator erase(iterator i_element)
Definition: vector.h:865
bitset_ext
Definition: absolute.h:38