OMK::ValuedEventSignalEmitterUtilT< T, ModelType > Class Template Reference

Base class to emit a valued event. More...

#include <OMKEventSignalEmitterUtil.h>

Inheritance diagram for OMK::ValuedEventSignalEmitterUtilT< T, ModelType >:

Inheritance graph
[legend]
Collaboration diagram for OMK::ValuedEventSignalEmitterUtilT< T, ModelType >:

Collaboration graph
[legend]
List of all members.

Public Member Functions

virtual ~ValuedEventSignalEmitterUtilT ()

Protected Member Functions

 ValuedEventSignalEmitterUtilT ()
 Constructor.
virtual bool loadParametersUtil (ExtensibleSimulatedObject *owner, const ConfigurationParameterDescriptor *node)
virtual void sendUtil (ExtensibleSimulatedObject *owner)
 The overwritten method.

Protected Attributes

std::vector< T > _values
 The value to send.
std::vector< T >::iterator _current
 The current iterator.

Detailed Description

template<typename T, typename ModelType>
class OMK::ValuedEventSignalEmitterUtilT< T, ModelType >

Base class to emit a valued event.

Author:
Benoît Chanclou

Definition at line 43 of file OMKEventSignalEmitterUtil.h.


Constructor & Destructor Documentation

template<typename T, typename ModelType>
OMK::ValuedEventSignalEmitterUtilT< T, ModelType >::ValuedEventSignalEmitterUtilT (  )  [inline, protected]

Constructor.

It is protected, because it is only called by the sons.

Definition at line 49 of file OMKEventSignalEmitterUtil.h.

00050     : EventSignalEmitterUtil(),
00051     _current()
00052   {
00053   }

template<typename T, typename ModelType>
virtual OMK::ValuedEventSignalEmitterUtilT< T, ModelType >::~ValuedEventSignalEmitterUtilT (  )  [inline, virtual]

Definition at line 56 of file OMKEventSignalEmitterUtil.h.

00056 {}


Member Function Documentation

template<typename T, typename ModelType>
virtual bool OMK::ValuedEventSignalEmitterUtilT< T, ModelType >::loadParametersUtil ( ExtensibleSimulatedObject owner,
const ConfigurationParameterDescriptor node 
) [inline, protected, virtual]

Reimplemented from OMK::EventSignalEmitterUtil.

Definition at line 58 of file OMKEventSignalEmitterUtil.h.

References OMK::ValuedEventSignalEmitterUtilT< T, ModelType >::_current, OMK::EventSignalEmitterUtil::_eventId, OMK::EventSignalEmitterUtil::_listeners, OMK::EventSignalEmitterUtil::_signal, OMK::ValuedEventSignalEmitterUtilT< T, ModelType >::_values, OMK::ParametersAccessor::get(), OMK::ExtensibleSimulatedObject::getAttribute(), OMK::Name::getCString(), OMK::EventId::getCurrentValueEventId(), OMK::SimulatedObject::getName(), OMK::EventSignalEmitterUtil::loadParametersUtil(), and OMERROR.

Referenced by OMK::TriggerEmitterExtensionT< T, ModelType >::loadExtensionParameters(), and OMK::Inp::KeyEmitterExtensionT< T, ModelType >::loadExtensionParameters().

00060   {
00061     bool ok = true ;
00062     if( ParametersAccessor::get( node, "AttributeId", _eventId, owner ) )
00063     {
00064       IAttribute * attribute = owner->getAttribute( _eventId ) ;
00065       ok = ok && attribute ;
00066       if( !attribute ) OMERROR( "Attribute " << _eventId << " cannot be found" ) ;
00067       if( ok )
00068       {
00069         attribute->activateSetByEventOf() ;
00070         _eventId = EventId::getCurrentValueEventId( _eventId.getCString() ) ;
00071         _listeners.push_back( owner->getName() ) ;
00072         _signal = false ;
00073       }
00074     }
00075     else
00076     {
00077       ok = ok && EventSignalEmitterUtil::loadParametersUtil( owner, node ) ;
00078     }
00079     ok = ok && ParametersAccessor::get( node, "Values", _values, owner ) ;
00080     _current = _values.begin() ;
00081     return ok ;
00082   }

template<typename T, typename ModelType>
virtual void OMK::ValuedEventSignalEmitterUtilT< T, ModelType >::sendUtil ( ExtensibleSimulatedObject owner  )  [inline, protected, virtual]

The overwritten method.

Fire a signal or send an event according to the configuration.

Reimplemented from OMK::EventSignalEmitterUtil.

Definition at line 89 of file OMKEventSignalEmitterUtil.h.

References OMK::ValuedEventSignalEmitterUtilT< T, ModelType >::_current, OMK::EventSignalEmitterUtil::_eventId, OMK::EventSignalEmitterUtil::_listeners, OMK::EventSignalEmitterUtil::_signal, OMK::ValuedEventSignalEmitterUtilT< T, ModelType >::_values, OMK::SimulatedObject::fireValuedSignal(), OMK_DEBUG_OMK_EVENT, OMTRACEID, and OMK::SimulatedObject::sendValuedEvent().

Referenced by OMK::Inp::KeyEmitterExtensionT< T, ModelType >::action().

00090   {
00091     if( _signal )
00092     { // Fire the signal
00093       owner->fireValuedSignal< ModelType >( _eventId, ModelType( *_current ) ) ;
00094     }
00095     else
00096     { // Send the event for each listener
00097       for( std::vector< Name >::const_iterator i = _listeners.begin() ;
00098            i != _listeners.end() ;
00099            i++ )
00100       {
00101         OMTRACEID( OMK_DEBUG_OMK_EVENT, "send value \"" << *_current << "\" to \"" << *i << "\" through event \"" << _eventId << "\"" ) ;
00102         owner->sendValuedEvent< ModelType >( *i, _eventId, ModelType( *_current ) ) ;
00103       }
00104     }
00105     // Next one 
00106     _current++ ;
00107     if( _current == _values.end() ) _current = _values.begin() ;
00108   }


Member Data Documentation

template<typename T, typename ModelType>
std::vector< T > OMK::ValuedEventSignalEmitterUtilT< T, ModelType >::_values [protected]

The value to send.

Definition at line 84 of file OMKEventSignalEmitterUtil.h.

Referenced by OMK::ValuedEventSignalEmitterUtilT< T, ModelType >::loadParametersUtil(), and OMK::ValuedEventSignalEmitterUtilT< T, ModelType >::sendUtil().

template<typename T, typename ModelType>
std::vector< T >::iterator OMK::ValuedEventSignalEmitterUtilT< T, ModelType >::_current [protected]

The current iterator.

Definition at line 86 of file OMKEventSignalEmitterUtil.h.

Referenced by OMK::ValuedEventSignalEmitterUtilT< T, ModelType >::loadParametersUtil(), and OMK::ValuedEventSignalEmitterUtilT< T, ModelType >::sendUtil().


logo OpenMask

Documentation generated on Mon Jun 9 11:46:03 2008

Generated with doxygen by Dimitri van Heesch ,   1997-2007