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

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

#include <OMKEventSignalEmitterUtil.h>

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

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

Collaboration graph
[legend]
List of all members.

Public Member Functions

virtual ~MultiValuedEventSignalEmitterUtilT ()

Protected Member Functions

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

Protected Attributes

std::vector< T > _values
 The value to send.
int _default
 Default index.

Detailed Description

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

Base class to emit a valued event.

Author:
Benoît Chanclou

Definition at line 116 of file OMKEventSignalEmitterUtil.h.


Constructor & Destructor Documentation

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

Constructor.

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

Definition at line 122 of file OMKEventSignalEmitterUtil.h.

00123     : EventSignalEmitterUtil(),
00124     _default( 0 )
00125   {
00126   }

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

Definition at line 129 of file OMKEventSignalEmitterUtil.h.

00129 {}


Member Function Documentation

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

Reimplemented from OMK::EventSignalEmitterUtil.

Definition at line 131 of file OMKEventSignalEmitterUtil.h.

References OMK::MultiValuedEventSignalEmitterUtilT< T, ModelType >::_default, OMK::EventSignalEmitterUtil::_eventId, OMK::EventSignalEmitterUtil::_listeners, OMK::EventSignalEmitterUtil::_signal, OMK::MultiValuedEventSignalEmitterUtilT< 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::MultiTriggerEmitterExtensionT< T, ModelType >::loadExtensionParameters().

00133   {
00134     bool ok = true ;
00135     if( ParametersAccessor::get( node, "AttributeId", _eventId, owner ) )
00136     {
00137       IAttribute * attribute = owner->getAttribute( _eventId ) ;
00138       ok = ok && attribute ;
00139       if( !attribute ) OMERROR( "Attribute " << _eventId << " cannot be found" ) ;
00140       if( ok )
00141       {
00142         attribute->activateSetByEventOf() ;
00143         _eventId = EventId::getCurrentValueEventId( _eventId.getCString() ) ;
00144         _listeners.push_back( owner->getName() ) ;
00145         _signal = false ;
00146       }
00147     }
00148     else
00149     {
00150       ok = ok && EventSignalEmitterUtil::loadParametersUtil( owner, node ) ;
00151     }
00152     ok = ok && ParametersAccessor::get( node, "Values", _values, owner ) ;
00153     ParametersAccessor::get( node, "Default", _default ) ;
00154     return ok ;
00155   }

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

The overwritten method.

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

Definition at line 163 of file OMKEventSignalEmitterUtil.h.

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

00164   {
00165     // if index out of range then it uses the _default
00166     index = ( index < 0 || (int)_values.size() < index ) ? _default : index ;
00167     if( _signal )
00168     { // Fire the signal
00169       owner->fireValuedSignal< ModelType >( _eventId, ModelType( _values[ index ] ) ) ;
00170     }
00171     else
00172     { // Send the event for each listener
00173       for( std::vector< Name >::const_iterator i = _listeners.begin() ;
00174            i != _listeners.end() ;
00175            i++ )
00176       {
00177         OMTRACEID( OMK_DEBUG_OMK_EVENT, "send value[ " << index << " ] \"" << _values[ index ] << "\" to \"" << *i << "\" through event \"" << _eventId << "\"" ) ;
00178         owner->sendValuedEvent< ModelType >( *i, _eventId, ModelType( _values[ index ] ) ) ;
00179       }
00180     }
00181   }


Member Data Documentation

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

The value to send.

Definition at line 157 of file OMKEventSignalEmitterUtil.h.

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

template<typename T, typename ModelType>
int OMK::MultiValuedEventSignalEmitterUtilT< T, ModelType >::_default [protected]

Default index.

By default it is 0

Definition at line 160 of file OMKEventSignalEmitterUtil.h.

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


logo OpenMask

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

Generated with doxygen by Dimitri van Heesch ,   1997-2007