observer::ObserverHandler< T > Class Template Reference

#include <observer.h>

Inheritance diagram for observer::ObserverHandler< T >:
pdfobjects::CContentStream pdfobjects::IProperty pdfobjects::CArray pdfobjects::CDict pdfobjects::CObjectSimple< Tp > pdfobjects::CStream pdfobjects::CInlineImage

List of all members.

Public Types

typedef boost::shared_ptr
< const IObserver< T > > 
Observer
typedef PriorityList< ObserverObserverList
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

Detailed Description

template<typename T>
class observer::ObserverHandler< T >

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.


Member Typedef Documentation

template<typename T>
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.

template<typename T>
typedef IChangeContext<T> observer::ObserverHandler< T >::ObserverContext

Alias for ObserversContext without template parameter.

template<typename T>
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.


Constructor & Destructor Documentation

template<typename T>
virtual observer::ObserverHandler< T >::~ObserverHandler (  )  [inline, virtual]

Empty destructor.


Member Function Documentation

template<typename T>
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.

template<typename T>
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.

Parameters:
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().

template<typename T>
virtual void observer::ObserverHandler< T >::registerObserver ( const Observer observer  )  [inline, virtual]

Registers new observer.

Parameters:
observer Observer to register (if NULL, nothing is registered).

Adds given observer to observers list. Ignores if observer is already in the list.

Exceptions:
ObserverException if given observer is not valid (it is NULL).
template<typename T>
virtual void observer::ObserverHandler< T >::unregisterObserver ( const Observer observer  )  [inline, virtual]

Unregisters given observer.

Parameters:
observer Observer to unregister.

Removes given observer from observers list.

Exceptions:
ObserverException if observer is not in observers list.

Member Data Documentation

template<typename T>
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().


The documentation for this class was generated from the following file: