Public Types | Public Member Functions | Protected Attributes

mitk::Message3< T, U, V, A > Class Template Reference

#include <mitkMessage.h>

List of all members.

Public Types

typedef Message3 Self
typedef
MessageAbstractDelegate3< T, U,
V, A > 
AbstractDelegate
typedef std::vector
< AbstractDelegate * > 
ListenerList

Public Member Functions

 ~Message3 ()
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, U u, V v)
void operator() (T t, U u, V v)
const ListenerListGetListeners () const
bool HasListeners () const
bool IsEmpty () const

Protected Attributes

ListenerList m_Listeners
itk::SimpleFastMutexLock m_Mutex

Detailed Description

template<typename T, typename U, typename V, typename A = void>
class mitk::Message3< T, U, V, A >

Definition at line 857 of file mitkMessage.h.


Member Typedef Documentation

template<typename T , typename U , typename V , typename A = void>
typedef MessageAbstractDelegate3<T,U,V,A> mitk::Message3< T, U, V, A >::AbstractDelegate

Definition at line 862 of file mitkMessage.h.

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

Definition at line 863 of file mitkMessage.h.

template<typename T , typename U , typename V , typename A = void>
typedef Message3 mitk::Message3< T, U, V, A >::Self

Definition at line 861 of file mitkMessage.h.


Constructor & Destructor Documentation

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

Definition at line 865 of file mitkMessage.h.

References mitk::Message3< T, U, V, A >::m_Listeners.

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

Member Function Documentation

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

Definition at line 873 of file mitkMessage.h.

References mitk::MessageAbstractDelegate3< T, U, V, A >::Clone(), mitk::Message3< T, U, V, A >::m_Listeners, and mitk::Message3< T, U, V, A >::m_Mutex.

Referenced by mitk::Message3< T, U, V, A >::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 U , typename V , typename A = void>
const ListenerList& mitk::Message3< T, U, V, A >::GetListeners (  ) const [inline]

Definition at line 944 of file mitkMessage.h.

References mitk::Message3< T, U, V, A >::m_Listeners.

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

Definition at line 949 of file mitkMessage.h.

References mitk::Message3< T, U, V, A >::m_Listeners.

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

Definition at line 954 of file mitkMessage.h.

References mitk::Message3< T, U, V, A >::m_Listeners.

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

Definition at line 939 of file mitkMessage.h.

References mitk::Message3< T, U, V, A >::Send().

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

Definition at line 892 of file mitkMessage.h.

References mitk::Message3< T, U, V, A >::AddListener().

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

Definition at line 915 of file mitkMessage.h.

References mitk::Message3< T, U, V, A >::RemoveListener().

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

Definition at line 897 of file mitkMessage.h.

References mitk::Message3< T, U, V, A >::m_Listeners, and mitk::Message3< T, U, V, A >::m_Mutex.

Referenced by mitk::Message3< T, U, V, A >::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 U , typename V , typename A = void>
void mitk::Message3< T, U, V, A >::Send ( t,
u,
v 
) [inline]

Definition at line 920 of file mitkMessage.h.

References mitk::Message3< T, U, V, A >::m_Listeners, and mitk::Message3< T, U, V, A >::m_Mutex.

Referenced by mitk::Message3< T, U, V, A >::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,u,v);
      }
    }

Member Data Documentation

template<typename T , typename U , typename V , typename A = void>
ListenerList mitk::Message3< T, U, V, A >::m_Listeners [mutable, protected]
template<typename T , typename U , typename V , typename A = void>
itk::SimpleFastMutexLock mitk::Message3< T, U, V, 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