Public Types | Public Member Functions | Protected Attributes

mitk::Message1< T, A > Class Template Reference

#include <mitkMessage.h>

Inheritance diagram for mitk::Message1< T, A >:
Inheritance graph
[legend]

List of all members.

Public Types

typedef Message1 Self
typedef
MessageAbstractDelegate1< T, A > 
AbstractDelegate
typedef std::vector
< AbstractDelegate * > 
ListenerList

Public Member Functions

 ~Message1 ()
void AddListener (const AbstractDelegate &delegate) const
void operator+= (const AbstractDelegate &delegate) const
void RemoveListener (const AbstractDelegate &delegate) const
void operator-= (const AbstractDelegate &delegate) const
void Send (T t)
void operator() (T t)
const ListenerListGetListeners () const
bool HasListeners () const
bool IsEmpty () const

Protected Attributes

ListenerList m_Listeners
itk::SimpleFastMutexLock m_Mutex

Detailed Description

template<typename T, typename A = void>
class mitk::Message1< T, A >

Definition at line 633 of file mitkMessage.h.


Member Typedef Documentation

template<typename T, typename A = void>
typedef MessageAbstractDelegate1<T,A> mitk::Message1< T, A >::AbstractDelegate

Definition at line 638 of file mitkMessage.h.

template<typename T, typename A = void>
typedef std::vector<AbstractDelegate*> mitk::Message1< T, A >::ListenerList

Definition at line 639 of file mitkMessage.h.

template<typename T, typename A = void>
typedef Message1 mitk::Message1< T, A >::Self

Definition at line 637 of file mitkMessage.h.


Constructor & Destructor Documentation

template<typename T, typename A = void>
mitk::Message1< T, A >::~Message1 (  ) [inline]

Definition at line 641 of file mitkMessage.h.

    {
      for (typename ListenerList::iterator iter = m_Listeners.begin();
           iter != m_Listeners.end(); ++iter )
      {
        delete *iter;
      }
    }

Member Function Documentation

template<typename T, typename A = void>
void mitk::Message1< T, A >::AddListener ( const AbstractDelegate delegate ) const [inline]

Definition at line 650 of file mitkMessage.h.

Referenced by mitk::Message1< const std::string & >::operator+=().

    {
      AbstractDelegate* msgCmd = delegate.Clone();

      m_Mutex.Lock();
      for (typename ListenerList::iterator iter = m_Listeners.begin();
           iter != m_Listeners.end();
           ++iter )
      {
        if ((*iter)->operator==(msgCmd)) {
          delete msgCmd;
          m_Mutex.Unlock();
          return;
        }
      }
      m_Listeners.push_back(msgCmd);
      m_Mutex.Unlock();
    }
template<typename T, typename A = void>
const ListenerList& mitk::Message1< T, A >::GetListeners (  ) const [inline]

Definition at line 721 of file mitkMessage.h.

    {
      return m_Listeners;
    }
template<typename T, typename A = void>
bool mitk::Message1< T, A >::HasListeners (  ) const [inline]

Definition at line 726 of file mitkMessage.h.

    {
      return !m_Listeners.empty();
    }
template<typename T, typename A = void>
bool mitk::Message1< T, A >::IsEmpty (  ) const [inline]

Definition at line 731 of file mitkMessage.h.

    {
      return m_Listeners.empty();
    }
template<typename T, typename A = void>
void mitk::Message1< T, A >::operator() ( t ) [inline]

Definition at line 716 of file mitkMessage.h.

    {
      this->Send(t);
    }
template<typename T, typename A = void>
void mitk::Message1< T, A >::operator+= ( const AbstractDelegate delegate ) const [inline]

Definition at line 669 of file mitkMessage.h.

    {
      this->AddListener(delegate);
    }
template<typename T, typename A = void>
void mitk::Message1< T, A >::operator-= ( const AbstractDelegate delegate ) const [inline]

Definition at line 692 of file mitkMessage.h.

    {
      this->RemoveListener(delegate);
    }
template<typename T, typename A = void>
void mitk::Message1< T, A >::RemoveListener ( const AbstractDelegate delegate ) const [inline]

Definition at line 674 of file mitkMessage.h.

Referenced by mitk::Message1< const std::string & >::operator-=().

    {
      m_Mutex.Lock();
      for (typename ListenerList::iterator iter = m_Listeners.begin();
           iter != m_Listeners.end();
           ++iter )
      {
        if ((*iter)->operator==(&delegate))
        {
          delete *iter;
          m_Listeners.erase( iter );
          m_Mutex.Unlock();
          return;
        }
      }
      m_Mutex.Unlock();
    }
template<typename T, typename A = void>
void mitk::Message1< T, A >::Send ( t ) [inline]

Definition at line 697 of file mitkMessage.h.

Referenced by mitk::mitkMessageTestTestClass::MessageSenderClass::DoGivePackage(), mitk::WeakPointer< mitk::PointSetInteractor >::OnObjectDelete(), mitk::WeakPointer< mitk::PointSetInteractor >::OnObjectModified(), and mitk::Message1< const std::string & >::operator()().

    {
      ListenerList listeners;

      {
        m_Mutex.Lock();
        listeners.assign(m_Listeners.begin(), m_Listeners.end());
        m_Mutex.Unlock();
      }

      for ( typename ListenerList::iterator iter = listeners.begin();
            iter != listeners.end();
            ++iter )
      {
        // notify each listener
        (*iter)->Execute(t);
      }
    }

Member Data Documentation

template<typename T, typename A = void>
ListenerList mitk::Message1< T, A >::m_Listeners [mutable, protected]
template<typename T, typename A = void>
itk::SimpleFastMutexLock mitk::Message1< T, A >::m_Mutex [mutable, protected]

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines