Public Types | Public Member Functions | Protected Attributes

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

#include <mitkMessage.h>

List of all members.

Public Types

typedef Message4 Self
typedef
MessageAbstractDelegate4< T, U,
V, W, A > 
AbstractDelegate
typedef std::vector
< AbstractDelegate * > 
ListenerList

Public Member Functions

 ~Message4 ()
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, W w)
void operator() (T t, U u, V v, W w)
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 W, typename A = void>
class mitk::Message4< T, U, V, W, A >

Definition at line 968 of file mitkMessage.h.


Member Typedef Documentation

template<typename T , typename U , typename V , typename W , typename A = void>
typedef MessageAbstractDelegate4<T,U,V,W,A> mitk::Message4< T, U, V, W, A >::AbstractDelegate

Definition at line 973 of file mitkMessage.h.

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

Definition at line 974 of file mitkMessage.h.

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

Definition at line 972 of file mitkMessage.h.


Constructor & Destructor Documentation

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

Definition at line 976 of file mitkMessage.h.

References mitk::Message4< T, U, V, W, 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 W , typename A = void>
void mitk::Message4< T, U, V, W, A >::AddListener ( const AbstractDelegate delegate ) const [inline]

Definition at line 984 of file mitkMessage.h.

References mitk::MessageAbstractDelegate4< T, U, V, W, A >::Clone(), mitk::Message4< T, U, V, W, A >::m_Listeners, and mitk::Message4< T, U, V, W, A >::m_Mutex.

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

Definition at line 1055 of file mitkMessage.h.

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

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

Definition at line 1060 of file mitkMessage.h.

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

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

Definition at line 1065 of file mitkMessage.h.

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

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

Definition at line 1050 of file mitkMessage.h.

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

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

Definition at line 1003 of file mitkMessage.h.

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

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

Definition at line 1026 of file mitkMessage.h.

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

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

Definition at line 1008 of file mitkMessage.h.

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

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

Definition at line 1031 of file mitkMessage.h.

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

Referenced by mitk::Message4< T, U, V, W, 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,w);
      }
    }

Member Data Documentation

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