Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
mitk::MessageBase< AbstractDelegate > Class Template Reference

Base class for message/event objects that manage a list of delegate listeners. More...

#include <mitkMessage.h>

Inheritance diagram for mitk::MessageBase< AbstractDelegate >:
Collaboration diagram for mitk::MessageBase< AbstractDelegate >:

Public Types

typedef std::vector< AbstractDelegate * > ListenerList
 

Public Member Functions

virtual ~MessageBase ()
 
 MessageBase ()
 
 MessageBase (const MessageBase &o)
 
MessageBase & operator= (const MessageBase &o)
 
void AddListener (const AbstractDelegate &delegate) const
 Add a listener delegate. Duplicates are silently ignored. More...
 
void operator+= (const AbstractDelegate &delegate) const
 Shorthand for AddListener(). More...
 
void RemoveListener (const AbstractDelegate &delegate) const
 Remove a listener delegate. If not found, nothing happens. More...
 
void operator-= (const AbstractDelegate &delegate) const
 Shorthand for RemoveListener(). More...
 
const ListenerList & GetListeners () const
 Get the list of currently registered listeners. More...
 
bool HasListeners () const
 Check whether any listeners are registered. More...
 
bool IsEmpty () const
 Check whether the listener list is empty. More...
 

Protected Attributes

ListenerList m_Listeners
 List of listeners. More...
 
std::mutex m_Mutex
 

Detailed Description

template<typename AbstractDelegate>
class mitk::MessageBase< AbstractDelegate >

Base class for message/event objects that manage a list of delegate listeners.

Provides thread-safe add/remove listener functionality. Listeners are stored as cloned delegates to ensure ownership.

Template Parameters
AbstractDelegateThe abstract delegate type this message manages.

Definition at line 402 of file mitkMessage.h.

Member Typedef Documentation

◆ ListenerList

template<typename AbstractDelegate >
typedef std::vector<AbstractDelegate *> mitk::MessageBase< AbstractDelegate >::ListenerList

Definition at line 405 of file mitkMessage.h.

Constructor & Destructor Documentation

◆ ~MessageBase()

template<typename AbstractDelegate >
virtual mitk::MessageBase< AbstractDelegate >::~MessageBase ( )
inlinevirtual

Definition at line 407 of file mitkMessage.h.

References mitk::MessageBase< AbstractDelegate >::m_Listeners.

◆ MessageBase() [1/2]

template<typename AbstractDelegate >
mitk::MessageBase< AbstractDelegate >::MessageBase ( )
inline

Definition at line 415 of file mitkMessage.h.

◆ MessageBase() [2/2]

template<typename AbstractDelegate >
mitk::MessageBase< AbstractDelegate >::MessageBase ( const MessageBase< AbstractDelegate > &  o)
inline

Definition at line 416 of file mitkMessage.h.

References mitk::MessageBase< AbstractDelegate >::m_Listeners.

Member Function Documentation

◆ AddListener()

template<typename AbstractDelegate >
void mitk::MessageBase< AbstractDelegate >::AddListener ( const AbstractDelegate &  delegate) const
inline

Add a listener delegate. Duplicates are silently ignored.

Definition at line 432 of file mitkMessage.h.

References mitk::MessageBase< AbstractDelegate >::m_Listeners, and mitk::MessageBase< AbstractDelegate >::m_Mutex.

Referenced by mitk::MessageBase< AbstractDelegate >::operator+=().

◆ GetListeners()

template<typename AbstractDelegate >
const ListenerList& mitk::MessageBase< AbstractDelegate >::GetListeners ( ) const
inline

Get the list of currently registered listeners.

Definition at line 474 of file mitkMessage.h.

References mitk::MessageBase< AbstractDelegate >::m_Listeners.

◆ HasListeners()

template<typename AbstractDelegate >
bool mitk::MessageBase< AbstractDelegate >::HasListeners ( ) const
inline

Check whether any listeners are registered.

Definition at line 477 of file mitkMessage.h.

References mitk::MessageBase< AbstractDelegate >::m_Listeners.

◆ IsEmpty()

template<typename AbstractDelegate >
bool mitk::MessageBase< AbstractDelegate >::IsEmpty ( ) const
inline

Check whether the listener list is empty.

Definition at line 480 of file mitkMessage.h.

References mitk::MessageBase< AbstractDelegate >::m_Listeners.

◆ operator+=()

template<typename AbstractDelegate >
void mitk::MessageBase< AbstractDelegate >::operator+= ( const AbstractDelegate &  delegate) const
inline

Shorthand for AddListener().

Definition at line 451 of file mitkMessage.h.

References mitk::MessageBase< AbstractDelegate >::AddListener().

◆ operator-=()

template<typename AbstractDelegate >
void mitk::MessageBase< AbstractDelegate >::operator-= ( const AbstractDelegate &  delegate) const
inline

Shorthand for RemoveListener().

Definition at line 471 of file mitkMessage.h.

References mitk::MessageBase< AbstractDelegate >::RemoveListener().

◆ operator=()

template<typename AbstractDelegate >
MessageBase& mitk::MessageBase< AbstractDelegate >::operator= ( const MessageBase< AbstractDelegate > &  o)
inline

◆ RemoveListener()

template<typename AbstractDelegate >
void mitk::MessageBase< AbstractDelegate >::RemoveListener ( const AbstractDelegate &  delegate) const
inline

Remove a listener delegate. If not found, nothing happens.

Definition at line 454 of file mitkMessage.h.

References mitk::MessageBase< AbstractDelegate >::m_Listeners, and mitk::MessageBase< AbstractDelegate >::m_Mutex.

Referenced by mitk::MessageBase< AbstractDelegate >::operator-=().

Member Data Documentation

◆ m_Listeners

template<typename AbstractDelegate >
ListenerList mitk::MessageBase< AbstractDelegate >::m_Listeners
mutableprotected

List of listeners.

This is declared mutable for a reason: Imagine an object that sends out notifications and someone gets a const Database object, because he/she should not write to the database. He/she should anyway be able to register for notifications about changes in the database – this is why AddListener and RemoveListener are declared const. m_Listeners must be mutable so that AddListener and RemoveListener can modify it regardless of the object's constness.

Definition at line 491 of file mitkMessage.h.

Referenced by mitk::MessageBase< AbstractDelegate >::AddListener(), mitk::MessageBase< AbstractDelegate >::GetListeners(), mitk::MessageBase< AbstractDelegate >::HasListeners(), mitk::MessageBase< AbstractDelegate >::IsEmpty(), mitk::MessageBase< AbstractDelegate >::MessageBase(), mitk::MessageBase< AbstractDelegate >::operator=(), mitk::MessageBase< AbstractDelegate >::RemoveListener(), and mitk::MessageBase< AbstractDelegate >::~MessageBase().

◆ m_Mutex

template<typename AbstractDelegate >
std::mutex mitk::MessageBase< AbstractDelegate >::m_Mutex
mutableprotected

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