10 #ifndef SUPPORTLIB_OBSERVER_OBSERVABLE_H
11 #define SUPPORTLIB_OBSERVER_OBSERVABLE_H
49 virtual void update(std::shared_ptr<U> observable) = 0;
98 class Observable :
public Object< Observable<T> >,
public std::enable_shared_from_this<T>
107 m_Observers.push_back(obs);
114 for(
size_t i = 0; i < m_Observers.size(); i++)
115 if(m_Observers[i].lock() == obs.lock()) {
116 m_Observers.erase(m_Observers.begin() + i);
131 for(
const auto& curObs : m_Observers)
132 curObs.lock()->update(this->shared_from_this());
137 std::vector< std::weak_ptr< Observer<T> > > m_Observers;
Base class of all classes.
Base Class of all classes.
Definition: Object.h:33
Observable class. Inherited classes can notify all classes which inherit from Observer.
Definition: Observer.h:99
void subscribe(const std::weak_ptr< Observer< T > > &obs)
Definition: Observer.h:105
void notify()
Definition: Observer.h:130
void unsubscribeAll()
Definition: Observer.h:123
void unsubscribe(const std::weak_ptr< Observer< T > > &obs)
Definition: Observer.h:113
Observer class. Inherited classes can observe all classes which inherit from Observable.
Definition: Observer.h:43
virtual void update(std::shared_ptr< U > observable)=0
Namespace for giri's C++ support library.
Definition: Base64.h:47