|
Scroom
0.14
|
#include <observable.hh>


Public Types | |
| using | Observer = boost::shared_ptr< T > |
| using | Ptr = boost::shared_ptr< Observable< T > > |
Public Member Functions | |
| Observable () | |
| ~Observable () override | |
| Observable (const Observable &)=delete | |
| Observable (Observable &&)=delete | |
| Observable | operator= (const Observable &)=delete |
| Observable | operator= (Observable &&)=delete |
| Scroom::Bookkeeping::Token | registerStrongObserver (Observer const &observer) |
| Scroom::Bookkeeping::Token | registerObserver (ObserverWeak const &observer) |
Protected Member Functions | |
| std::list< Observer > | getObservers () |
| virtual void | observerAdded (Observer const &observer, Scroom::Bookkeeping::Token const &token) |
Private Types | |
| using | ObserverWeak = boost::weak_ptr< T > |
| using | Registration = Detail::Registration< T > |
Private Member Functions | |
| void | unregisterObserver (ObserverWeak const &observer) |
Private Attributes | |
| Scroom::Bookkeeping::Map< ObserverWeak, typename Registration::Ptr >::Ptr | registrationMap |
Friends | |
| class | Detail::Registration< T > |
Base class for something that accepts observers.
Upon registering, observers are given a Registration. If the same Observer registers twice (using the same method), he'll still receive events only once. When the Observer destroys his Registration, he'll be unregistered.
There are two ways of registering: One can register a shared_ptr, or a weak_ptr, depending on whether you want the Observable to keep the Observer from being destructed.
shared_ptr and a weak_ptr, unpredictable things will happen. | using Scroom::Utils::Observable< T >::Observer = boost::shared_ptr<T> |
|
private |
| using Scroom::Utils::Observable< T >::Ptr = boost::shared_ptr<Observable<T> > |
|
private |
| Scroom::Utils::Observable< T >::Observable |
|
override |
|
delete |
|
delete |
|
protected |
Retrieve a list of current observers.
Always, a list of shared_ptr objects is returned, regardless of whether the Observer registered a shared_ptr or a weak_ptr.
Referenced by PresentationBase::close(), TestObservable::getObservers(), and PresentationBase::open().

|
protectedvirtual |
Override this function if you want to be notified of new observers registering.
Reimplemented in CompressedTile, CompressedTile, and TestRecursiveObservable.
|
delete |
|
delete |
| Scroom::Bookkeeping::Token Scroom::Utils::Observable< T >::registerObserver | ( | ObserverWeak const & | observer | ) |
| Scroom::Bookkeeping::Token Scroom::Utils::Observable< T >::registerStrongObserver | ( | Observer const & | observer | ) |
|
private |
|
friend |
|
private |
Map all registrations to their registration data