Public Types | Public Member Functions | Protected Attributes

mitk::Message2< T, U, A > Class Template Reference

#include <mitkMessage.h>

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

List of all members.

Public Types

typedef Message2 Self
typedef
MessageAbstractDelegate2< T, U,
A > 
AbstractDelegate
typedef std::vector
< AbstractDelegate * > 
ListenerList

Public Member Functions

 ~Message2 ()
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)
void operator() (T t, U u)
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 A = void>
class mitk::Message2< T, U, A >

Definition at line 746 of file mitkMessage.h.


Member Typedef Documentation

template<typename T, typename U, typename A = void>
typedef MessageAbstractDelegate2<T,U,A> mitk::Message2< T, U, A >::AbstractDelegate

Definition at line 751 of file mitkMessage.h.

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

Definition at line 752 of file mitkMessage.h.

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

Definition at line 750 of file mitkMessage.h.


Constructor & Destructor Documentation

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

Definition at line 754 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 U, typename A = void>
void mitk::Message2< T, U, A >::AddListener ( const AbstractDelegate delegate ) const [inline]

Definition at line 762 of file mitkMessage.h.

Referenced by mitk::Message2< mitk::NavigationData::OrientationType, unsigned int >::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 A = void>
const ListenerList& mitk::Message2< T, U, A >::GetListeners (  ) const [inline]

Definition at line 833 of file mitkMessage.h.

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

Definition at line 838 of file mitkMessage.h.

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

Definition at line 843 of file mitkMessage.h.

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

Definition at line 828 of file mitkMessage.h.

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

Definition at line 781 of file mitkMessage.h.

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

Definition at line 804 of file mitkMessage.h.

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

Definition at line 786 of file mitkMessage.h.

Referenced by mitk::Message2< mitk::NavigationData::OrientationType, unsigned int >::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 A = void>
void mitk::Message2< T, U, A >::Send ( t,
u 
) [inline]

Definition at line 809 of file mitkMessage.h.

Referenced by mitk::Message2< mitk::NavigationData::OrientationType, unsigned int >::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);
      }
    }

Member Data Documentation

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