Go to the documentation of this file.
14 #include <boost/shared_ptr.hpp>
15 #include <boost/thread.hpp>
16 #include <boost/weak_ptr.hpp>
38 boost::shared_ptr<T>
o;
41 using Ptr = boost::shared_ptr<Registration<T>>;
75 using Ptr = boost::shared_ptr<Observable<T>>;
123 template <
typename T>
125 : observable(std::move(observable_))
127 , observer(observer_)
131 template <
typename T>
133 : observable(std::move(observable_))
135 , observer(std::move(observer_))
140 template <
typename T>
144 observer = observer_;
147 template <
typename T>
152 observer = observer_;
155 template <
typename T>
157 boost::shared_ptr<T> observer)
162 template <
typename T>
164 boost::weak_ptr<T> observer)
171 template <
typename T>
177 template <
typename T>
192 registration->o.reset();
196 template <
typename T>
199 std::list<typename Observable<T>::Observer> result;
202 Observer const o = registration->observer.lock();
212 template <
typename T>
224 registrationMap->set(observer, r);
227 observerAdded(observer, t);
232 template <
typename T>
244 registrationMap->set(observer, r);
252 template <
typename T>
255 registrationMap->remove(observer);
258 template <
typename T>
boost::weak_ptr< Observable< T > > observable
Definition: observable.hh:37
Definition: assertions.hh:14
Scroom::Bookkeeping::Token registerStrongObserver(Observer const &observer)
Definition: observable.hh:213
void set(boost::shared_ptr< T > observer)
Definition: observable.hh:141
std::list< Observer > getObservers()
Definition: observable.hh:197
boost::weak_ptr< T > observer
Definition: observable.hh:39
void unregisterObserver(ObserverWeak const &observer)
Definition: observable.hh:253
boost::weak_ptr< TileLoadingObserver > ObserverWeak
Definition: observable.hh:78
Scroom::Bookkeeping::Token registerObserver(ObserverWeak const &observer)
Definition: observable.hh:233
~Observable() override
Definition: observable.hh:178
boost::shared_ptr< Registration< T > > Ptr
Definition: observable.hh:41
boost::shared_ptr< Observable< TileLoadingObserver > > Ptr
Definition: observable.hh:75
Definition: observable.hh:34
Definition: utilities.hh:30
boost::shared_ptr< TileLoadingObserver > Observer
Definition: observable.hh:74
Scroom::Bookkeeping::Map< ObserverWeak, typename Registration::Ptr >::Ptr registrationMap
Definition: observable.hh:83
Definition: observable.hh:24
Observable()
Definition: observable.hh:172
Definition: async-deleter.hh:12
boost::shared_ptr< Map< K, V > > Ptr
Definition: bookkeeping.hh:85
virtual void observerAdded(Observer const &observer, Scroom::Bookkeeping::Token const &token)
Definition: observable.hh:259
Definition: bookkeeping.hh:37
static Ptr create()
Definition: bookkeepingimpl.hh:424
Observable operator=(const Observable &)=delete
boost::shared_ptr< T > o
Definition: observable.hh:38
static Ptr create(boost::weak_ptr< Observable< T >> observable, boost::shared_ptr< T > observer)
Definition: observable.hh:156