|
Scroom 0.14-49-gb7ae7a6d
|
#include <observable.hh>


Public Types | |
| using | Observer = std::shared_ptr< T > |
| using | Ptr = std::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) |
Public Member Functions inherited from Scroom::Utils::Base | |
| Base ()=default | |
| Base (const Base &)=delete | |
| Base (Base &&)=delete | |
| Base & | operator= (const Base &)=delete |
| Base & | operator= (Base &&)=delete |
| virtual | ~Base ()=default |
| template<typename R > | |
| std::shared_ptr< R > | shared_from_this () |
| template<typename R > | |
| std::shared_ptr< R const > | shared_from_this () const |
Protected Member Functions | |
| std::list< Observer > | getObservers () |
| virtual void | observerAdded (Observer const &observer, Scroom::Bookkeeping::Token const &token) |
Private Types | |
| using | ObserverWeak = std::weak_ptr< T > |
| using | Registration = Detail::Registration< T > |
Private Member Functions | |
| void | unregisterObserver (ObserverWeak const &observer) |
Private Attributes | |
| Scroom::Bookkeeping::Map< ObserverWeak, typenameRegistration::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 = std::shared_ptr<T> |
|
private |
| using Scroom::Utils::Observable< T >::Ptr = std::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(), TestRecursiveObservable::getObservers(), CompressedTile::notifyObservers(), PresentationBase::open(), TileViewState::reportDone(), and CompressedTile::reportFinished().

|
protectedvirtual |
Override this function if you want to be notified of new observers registering.
|
delete |
|
delete |
| Scroom::Bookkeeping::Token Scroom::Utils::Observable< T >::registerObserver | ( | ObserverWeak const & | observer | ) |
Referenced by CompressedTile::registerObserver(), and CompressedTile::registerObserver().


| Scroom::Bookkeeping::Token Scroom::Utils::Observable< T >::registerStrongObserver | ( | Observer const & | observer | ) |
Referenced by CompressedTile::registerStrongObserver(), and CompressedTile::registerStrongObserver().


|
private |
|
friend |
|
private |
Map all registrations to their registration data