38#ifndef OGDF_MEMORY_POOL_NTS
52template<
typename TObserved,
typename TObserver>
62 OGDF_DEPRECATED(
"calls registrationChanged with only partially-constructed child classes, "
63 "see copy constructor of Observer for fix")
103 m_itObsList = obs->registerObserver(
dynamic_cast<TObserver*
>(
this));
126template<
typename TObserver,
typename TObserved>
132#ifndef OGDF_MEMORY_POOL_NTS
177#ifndef OGDF_MEMORY_POOL_NTS
200#ifndef OGDF_MEMORY_POOL_NTS
211 obs->reregister(
nullptr);
Declaration of doubly linked lists and iterators.
Basic declarations, included by all source files.
Encapsulates a pointer to a list element.
iterator pushBack(const E &x)
Adds element x at the end of the list.
const_reference front() const
Returns a const reference to the first element.
const_reference back() const
Returns a const reference to the last element.
void del(iterator it)
Removes it from the list.
bool empty() const
Returns true iff the list is empty.
Base class for an observable object that can be tracked by multiple Observer objects.
std::mutex m_mutexRegArrays
The critical section for protecting shared access to register/unregister methods.
void unregisterObserver(typename ListPure< TObserver * >::iterator it) const
Unregisters an observer.
virtual ~Observable()
Note that all Observers must already be removed once the destructor of this base class is invoked (e....
const ListPure< TObserver * > & getObservers() const
ListPure< TObserver * > m_regObservers
The registered observers.
ListPure< TObserver * >::iterator registerObserver(TObserver *obs) const
Registers an observer.
Base class for an observer for a single Observable object.
void reregister(const TObserved *obs)
Associates observer instance with instance obs.
const TObserved * m_pObserved
Observer()=default
Constructs unregistered instance of Observer class.
ListPure< TObserver * >::iterator m_itObsList
watched instance
virtual void registrationChanged(const TObserved *old)
Called after reregister() changed the observed instance.
virtual ~Observer()
Destroys the instance, unregisters it from watched instance.
const TObserved * getObserved() const
Utility macros for declaring copy and move constructors and assignment operations.
#define OGDF_NO_COPY(cls)
Explicitly disables (deletes) copy construction and assignment for class cls.
#define OGDF_NO_MOVE(cls)
Explicitly disables (deletes) move construction and assignment for class cls.
#define OGDF_DEPRECATED(reason)
Mark a class / member / function as deprecated.
#define OGDF_ASSERT(expr)
Assert condition expr. See doc/build.md for more information.
The namespace for all OGDF objects.