OMK::MultiTriggerContainerExtension Class Reference
[Extension feature]

An extension which is a container for other extensions. More...

#include <OMKTriggerContainerExtension.h>

Inheritance diagram for OMK::MultiTriggerContainerExtension:

Inheritance graph
[legend]
Collaboration diagram for OMK::MultiTriggerContainerExtension:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 DECLARE_EXTENSION_FACTORY (MultiTriggerContainerExtension)
 Factory and constructor/destructor.

Protected Member Functions

Configuration loaders
virtual bool loadObjectParameters (const ConfigurationParameterDescriptor *node)
 Configuration parameters loader of TriggerContainerExtension.
virtual bool loadExtensionParameters (const ConfigurationParameterDescriptor *node)
 Configuration parameters loader of TriggerContainerExtension.
Computation
virtual void preComputeParameters ()
 This method is called during compute by the extensible simulated object.
virtual void postComputeParameters ()
 This method is called during compute by the extensible simulated object.

Protected Attributes

int _default
 Default index.
std::vector< ExtensionManager_extensionsSets
 Extensions managers.
IAttributeBaseT< int > * _trigger
 The trigger.

Detailed Description

An extension which is a container for other extensions.

Date:
2007-11-19
Author:
Benoît Chanclou
Module description :
This extension is used to activate or desactivate some extensions. It works like the container extension, instead of one extensions list, there is many. One for each value that the trigger can take.

The trigger is a OMK::IAttributeBaseT< int > "integer attribute" which defines which extensions list is use during compute steps.

Warning The event listeners declared by the extension, are not desactivated.

The configuration is similar to the extensions in a simulated object.

 container
 {
   Class TriggerContainer
   ExtensionsSet0
   {
     ...
     LoadParametersOrder [ ... ]
     PreComputeOrder [ ... ]
     PostComputeOrder [ ... ]
   }
   ExtensionsSet1
   {
     ...
     LoadParametersOrder [ ... ]
     PreComputeOrder [ ... ]
     PostComputeOrder [ ... ]
   }
   ...
   TriggerId "TheTriggerAttributeId" // the id of the integer attribute which is the trigger
   Default 1
 }
The sets are read from ExtensionSet0 until the ExtensionSet# is undefined. So in the previous example, there is only the sets 0 and 1. You can create blank sets by living an empty ExtensionSet#.

The orders are optionals.

Default is the index used if the trigger is out of range.

Definition at line 159 of file OMKTriggerContainerExtension.h.


Member Function Documentation

OMK::MultiTriggerContainerExtension::DECLARE_EXTENSION_FACTORY ( MultiTriggerContainerExtension   ) 

Factory and constructor/destructor.

See Extension feature

bool MultiTriggerContainerExtension::loadObjectParameters ( const ConfigurationParameterDescriptor node  )  [protected, virtual]

Configuration parameters loader of TriggerContainerExtension.

Reimplemented from OMK::Extension.

Definition at line 146 of file OMKTriggerContainerExtension.cpp.

References _extensionsSets.

00147 {
00148   bool ok = true ;
00149   for( size_t i = 0 ; i < _extensionsSets.size() ; i++ )
00150   {
00151     ok = _extensionsSets[ i ].loadFromObjectParameters( node ) && ok ;
00152   }
00153   return ok ;
00154 }

bool MultiTriggerContainerExtension::loadExtensionParameters ( const ConfigurationParameterDescriptor node  )  [protected, virtual]

Configuration parameters loader of TriggerContainerExtension.

Reimplemented from OMK::Extension.

Definition at line 156 of file OMKTriggerContainerExtension.cpp.

References _default, _extensionsSets, OMK::ExtensionT< SimulatedObjectType >::_owner, _trigger, and OMK::ParametersAccessor::get().

00157 {
00158   bool ok = true ;
00159   //--- The trigger boolean attribute
00160   Name triggerId ;
00161   ok = ok && ParametersAccessor::get( node, "TriggerId", triggerId, _owner ) ;
00162   _trigger = _owner->getBaseAttribute< int >( triggerId ) ;
00163   ok = ok && _trigger != 0 ;
00164   ParametersAccessor::get( node, "Default", _default ) ;
00165 
00166   //---Load Extensions
00167   for( size_t i = 0 ; i < _extensionsSets.size() ; i++ )
00168   {
00169     std::ostringstream name ;
00170     name << "ExtensionsSet" << i ;
00171     const ConfigurationParameterDescriptor* extensionsNode = 0 ;
00172     if( ParametersAccessor::get( node, name.str(), extensionsNode ) )
00173     {
00174       //Load Extension order if there is one
00175       _extensionsSets[ i ].loadOrder( extensionsNode, "LoadParametersOrder", _extensionsSets[ i ]._orderedExtensionsForLoadParameters ) ;
00176       //Load extension
00177       ok = ok && _extensionsSets[ i ].loadFromExtensionsParameters( extensionsNode ) ;
00178       _extensionsSets[ i ].loadOrder( extensionsNode, "PreComputeOrder"    , _extensionsSets[ i ]._orderedExtensionsForPreCompute     ) ;
00179       _extensionsSets[ i ].loadOrder( extensionsNode, "PostComputeOrder"   , _extensionsSets[ i ]._orderedExtensionsForPostCompute    ) ;
00180     }
00181   }
00182 
00183   return ok ;
00184 }

void MultiTriggerContainerExtension::preComputeParameters (  )  [protected, virtual]

This method is called during compute by the extensible simulated object.

Reimplemented from OMK::Extension.

Definition at line 186 of file OMKTriggerContainerExtension.cpp.

References _default, _extensionsSets, _trigger, and OMK::IAccessorT< T >::get().

00187 {
00188   int index = _trigger->get() ;
00189   index = ( index < 0 || (int)_extensionsSets.size() < index ) ? _default : index ;
00190   _extensionsSets[ index ].preComputeExtension() ;
00191 }

void MultiTriggerContainerExtension::postComputeParameters (  )  [protected, virtual]

This method is called during compute by the extensible simulated object.

Reimplemented from OMK::Extension.

Definition at line 193 of file OMKTriggerContainerExtension.cpp.

References _default, _extensionsSets, _trigger, and OMK::IAccessorT< T >::get().

00194 {
00195   int index = _trigger->get() ;
00196   index = ( index < 0 || (int)_extensionsSets.size() < index ) ? _default : index ;
00197   _extensionsSets[ index ].postComputeExtension() ;
00198 }


Member Data Documentation

int OMK::MultiTriggerContainerExtension::_default [protected]

Default index.

By default it is 0

Definition at line 186 of file OMKTriggerContainerExtension.h.

Referenced by loadExtensionParameters(), postComputeParameters(), and preComputeParameters().

std::vector< ExtensionManager > OMK::MultiTriggerContainerExtension::_extensionsSets [protected]

Extensions managers.

Definition at line 188 of file OMKTriggerContainerExtension.h.

Referenced by loadExtensionParameters(), loadObjectParameters(), postComputeParameters(), and preComputeParameters().

IAttributeBaseT< int >* OMK::MultiTriggerContainerExtension::_trigger [protected]

The trigger.

Definition at line 190 of file OMKTriggerContainerExtension.h.

Referenced by loadExtensionParameters(), postComputeParameters(), and preComputeParameters().


logo OpenMask

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

Generated with doxygen by Dimitri van Heesch ,   1997-2007