#include <observer.h>
Public Types | |
| typedef boost::shared_ptr < const IObserver< T > > | Observer |
| typedef PriorityList< Observer > | ObserverList |
| typedef IChangeContext< T > | ObserverContext |
Public Member Functions | |
| virtual | ~ObserverHandler () |
| virtual void | registerObserver (const Observer &observer) |
| virtual void | unregisterObserver (const Observer &observer) |
| virtual void | notifyObservers (boost::shared_ptr< T > newValue, boost::shared_ptr< const ObserverContext > context) |
Protected Member Functions | |
| void | dumpObservers () const |
Protected Attributes | |
| ObserverList | observers |
Base class for all notifiers. a* Each class which want to support observers should inherit from this class. It provides basic implementation for registering, unregistering and notification of observers. Whenever change occures, subclass is responsible to call notifyObservers method and provide it with correct parameters. Rest is done by superclass.
T template parameter stands for value type which is observed (same as used for IObserver template type). Observers are IObserver with T type wrapped by shared_ptr smart pointer.
This implementation supports priority ordering of observers.
| typedef boost::shared_ptr<const IObserver<T> > observer::ObserverHandler< T >::Observer |
Type for observer. Alias to IObserver with T type wrapped by shared_ptr smart pointer.
| typedef IChangeContext<T> observer::ObserverHandler< T >::ObserverContext |
Alias for ObserversContext without template parameter.
| typedef PriorityList<Observer> observer::ObserverHandler< T >::ObserverList |
Type for observer list. Alias to PriorityList with shared_ptr<Observer> value type, vector underlying container and PriorityComparator comparator.
| virtual observer::ObserverHandler< T >::~ObserverHandler | ( | ) | [inline, virtual] |
Empty destructor.
| void observer::ObserverHandler< T >::dumpObservers | ( | ) | const [inline, protected] |
Prints all registered observers. Each observer is printed as pointer address. Method is empty if OBSERVER_DEBUG is not defined.
| virtual void observer::ObserverHandler< T >::notifyObservers | ( | boost::shared_ptr< T > | newValue, | |
| boost::shared_ptr< const ObserverContext > | context | |||
| ) | [inline, virtual] |
Notify all active observers about a change.
Observers are notified in according their priorities. Higher priority (smaller priority value) sooner it is called. Observers with same priorities are called in unspecified order. All inactive observers are ignored.
| newValue | Object with new value. | |
| context | Context in which the change has been made. |
Referenced by pdfobjects::CObjectSimple< Tp >::_objectChanged(), pdfobjects::CContentStream::_objectChanged(), and pdfobjects::CArray::_objectChanged().
| virtual void observer::ObserverHandler< T >::registerObserver | ( | const Observer & | observer | ) | [inline, virtual] |
Registers new observer.
| observer | Observer to register (if NULL, nothing is registered). |
Adds given observer to observers list. Ignores if observer is already in the list.
| ObserverException | if given observer is not valid (it is NULL). |
| virtual void observer::ObserverHandler< T >::unregisterObserver | ( | const Observer & | observer | ) | [inline, virtual] |
Unregisters given observer.
| observer | Observer to unregister. |
Removes given observer from observers list.
| ObserverException | if observer is not in observers list. |
ObserverList observer::ObserverHandler< T >::observers [protected] |
List of registered observers. It is iterable priority queue, so observers are ordered according their priorities (higher priority closer to begin - NOTE that higher priority means smaller priority value.
Referenced by observer::ObserverHandler< CPage >::dumpObservers(), observer::ObserverHandler< CPage >::notifyObservers(), observer::ObserverHandler< CPage >::registerObserver(), observer::ObserverHandler< CPage >::unregisterObserver(), pdfobjects::CContentStream::~CContentStream(), and pdfobjects::IProperty::~IProperty().