observer.h File Reference

#include <vector>
#include <algorithm>
#include <boost/shared_ptr.hpp>
#include <iostream>
#include "os/compiler.h"
#include "utils/debug.h"

Classes

struct  observer::ObserverException
class  observer::IChangeContext< T >
class  observer::BasicChangeContext< T >
class  observer::ComplexChangeContext< ValueType, ValueIdType >
class  observer::ScopedChangeContext< T, S >
class  observer::IObserver< T >
struct  observer::PriorityComparator< T >
class  observer::PriorityList< T, Storage, Compare >
class  observer::ObserverHandler< T >

Namespaces

namespace  observer

Defines

#define PRINT_DEBUG_INFO(obj, observer, prefix)   do {} while(0)
#define REGISTER_SHAREDPTR_OBSERVER(obj, observer)
#define UNREGISTER_SHAREDPTR_OBSERVER(obj, observer)
#define REGISTER_PTR_OBSERVER(obj, observer)
#define UNREGISTER_PTR_OBSERVER(obj, observer)

Enumerations

enum  observer::ChangeContextType { observer::BasicChangeContextType, observer::ComplexChangeContextType, observer::ScopedChangeContextType }

Functions

std::ostream & observer::operator<< (std::ostream &str, ChangeContextType type)
template<typename T >
static void observer::check_observerlist (UNUSED_PARAM const T &list)

Define Documentation

#define PRINT_DEBUG_INFO ( obj,
observer,
prefix   )     do {} while(0)
#define REGISTER_PTR_OBSERVER ( obj,
observer   ) 
Value:
do {                                    \
                PRINT_DEBUG_INFO((obj), (observer), "registerObserver");\
                obj->registerObserver(observer);\
        }while(0)

Wrapper for observer registration.

Parameters:
obj Observer handler (simple pointer to ObserverHandler).
observer Observer to be registered (simple pointer to IObserver).

Note that this way of observer registration is preffered because of possible debug information.
Don't use expression parameters with side effects (e.g. ++i etc.), because they may be executed more than once (if debuging is used).

#define REGISTER_SHAREDPTR_OBSERVER ( obj,
observer   ) 
Value:
do {                                    \
                PRINT_DEBUG_INFO((obj).get(), (observer).get(), "registerObserver");\
                obj->registerObserver(observer);\
        }while(0)

Wrapper for observer registration.

Parameters:
obj Observer handler (ObserverHandler wrapped by shared_ptr).
observer Observer to be registered (IObserver wrapped by shared_ptr).

Note that this way of observer registration is preffered because of possible debug information.
Don't use expression parameters with side effects (e.g. ++i etc.), because they may be executed more than once (if debuging is used).

Referenced by pdfobjects::CPageAnnots::add(), gui::TreeItemPage::initObserver(), pdfobjects::CPdf::initRevisionSpecific(), pdfobjects::CPdf::PageTreeKidsObserver::notify(), pdfobjects::CPdf::PageTreeNodeObserver::notify(), pdfobjects::CPdf::PageTreeRootObserver::notify(), pdfobjects::CPageAnnots::PropWatchDog::notify(), pdfobjects::CPageAnnots::ArrayWatchDog::notify(), pdfobjects::CPageContents::reg_observer(), pdfobjects::CContentStream::registerCStreamObservers(), and pdfobjects::CPdf::registerPageTreeObservers().

#define UNREGISTER_PTR_OBSERVER ( obj,
observer   ) 
Value:
do {                                    \
                PRINT_DEBUG_INFO((obj), (observer), "unregisterObserver");\
                obj->unregisterObserver(observer);\
        }while(0)

Wrapper for observer unregistration.

Parameters:
obj Observer handler (simple pointer to ObserverHandler).
observer Observer to be unregistered (simple pointer to IObserver).

Note that this way of observer unregistration is preffered because of possible debug information.
Don't use expression parameters with side effects (e.g. ++i etc.), because they may be executed more than once (if debuging is used).

#define UNREGISTER_SHAREDPTR_OBSERVER ( obj,
observer   ) 
Value:
do {                                    \
                PRINT_DEBUG_INFO((obj).get(), (observer).get(), "unregisterObserver");\
                obj->unregisterObserver(observer);\
        }while(0)

Wrapper for observer unregistration.

Parameters:
obj Observer handler (ObserverHandler wrapped by shared_ptr).
observer Observer to be registered (IObserver wrapped by shared_ptr).

Note that this way of observer unregistration is preffered because of possible debug information.
Don't use expression parameters with side effects (e.g. ++i etc.), because they may be executed more than once (if debuging is used).

Referenced by pdfobjects::CPdf::PageTreeKidsObserver::notify(), pdfobjects::CPdf::PageTreeNodeObserver::notify(), pdfobjects::CPdf::PageTreeRootObserver::notify(), pdfobjects::CPageAnnots::PropWatchDog::notify(), pdfobjects::CPageAnnots::ArrayWatchDog::notify(), gui::TreeItemPage::uninitObserver(), pdfobjects::CPageContents::unreg_observer(), pdfobjects::CPageAnnots::unreg_observers(), pdfobjects::CContentStream::unregisterCStreamObservers(), pdfobjects::CPdf::unregisterPageObservers(), pdfobjects::CPdf::unregisterPageTreeObservers(), and pdfobjects::SimpleGenericOperator::~SimpleGenericOperator().