OMK::TriggerContainerExtension Class Reference
[Extension feature]

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

#include <OMKTriggerContainerExtension.h>

Inheritance diagram for OMK::TriggerContainerExtension:

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

Collaboration graph
[legend]
List of all members.

Public Member Functions

 DECLARE_EXTENSION_FACTORY (TriggerContainerExtension)
 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

ExtensionManager _onExtensionsSet
 Manager for On.
ExtensionManager _offExtensionsSet
 Manager for Off.
IAttributeBaseT< bool > * _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 two. One for the extensions to activate when the trigger is true, and one for the extensions to activate when the trigger is false.

The trigger is a OMK::IAttributeBaseT< bool > "boolean 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
   ExtensionsOn
   {
     ...
     LoadParametersOrder [ ... ]
     PreComputeOrder [ ... ]
     PostComputeOrder [ ... ]
   }
   ExtensionsOff
   {
     ...
     LoadParametersOrder [ ... ]
     PreComputeOrder [ ... ]
     PostComputeOrder [ ... ]
   }
   TriggerId "TheTriggerAttributeId" // the id of the boolean attribute which is the trigger
 }

Definition at line 75 of file OMKTriggerContainerExtension.h.


Member Function Documentation

OMK::TriggerContainerExtension::DECLARE_EXTENSION_FACTORY ( TriggerContainerExtension   ) 

Factory and constructor/destructor.

See Extension feature

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

Configuration parameters loader of TriggerContainerExtension.

Reimplemented from OMK::Extension.

Definition at line 59 of file OMKTriggerContainerExtension.cpp.

References _offExtensionsSet, _onExtensionsSet, and OMK::ExtensionManager::loadFromObjectParameters().

00060 {
00061   //---Load extension
00062   return _onExtensionsSet.loadFromObjectParameters( node )
00063       && _offExtensionsSet.loadFromObjectParameters( node ) ;
00064 }

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

Configuration parameters loader of TriggerContainerExtension.

Reimplemented from OMK::Extension.

Definition at line 66 of file OMKTriggerContainerExtension.cpp.

References _offExtensionsSet, _onExtensionsSet, OMK::ExtensionManager::_orderedExtensionsForLoadParameters, OMK::ExtensionManager::_orderedExtensionsForPostCompute, OMK::ExtensionManager::_orderedExtensionsForPreCompute, OMK::ExtensionT< SimulatedObjectType >::_owner, _trigger, OMK::ParametersAccessor::get(), OMK::ExtensionManager::loadFromExtensionsParameters(), and OMK::ExtensionManager::loadOrder().

00067 {
00068   bool ok = true ;
00069   //--- The trigger boolean attribute
00070   Name triggerId ;
00071   ok = ok && ParametersAccessor::get( node, "TriggerId", triggerId, _owner ) ;
00072   _trigger = _owner->getBaseAttribute< bool >( triggerId ) ;
00073   ok = ok && _trigger != 0 ;
00074   //---Load Extension On
00075   const ConfigurationParameterDescriptor* extensionsNode = 0 ;
00076   ParametersAccessor::get( node, "ExtensionsOn", extensionsNode ) ;
00077   //Load Extension order if there is one
00078   _onExtensionsSet.loadOrder( extensionsNode, "LoadParametersOrder", _onExtensionsSet._orderedExtensionsForLoadParameters ) ;
00079   //Load extension
00080   ok = ok && _onExtensionsSet.loadFromExtensionsParameters( extensionsNode ) ;
00081   _onExtensionsSet.loadOrder( extensionsNode, "PreComputeOrder"    , _onExtensionsSet._orderedExtensionsForPreCompute     ) ;
00082   _onExtensionsSet.loadOrder( extensionsNode, "PostComputeOrder"   , _onExtensionsSet._orderedExtensionsForPostCompute    ) ;
00083 
00084   //---Load Extension Off
00085   extensionsNode = 0 ;
00086   ParametersAccessor::get( node, "ExtensionsOff", extensionsNode ) ;
00087   //Load Extension order if there is one
00088   _offExtensionsSet.loadOrder( extensionsNode, "LoadParametersOrder", _offExtensionsSet._orderedExtensionsForLoadParameters ) ;
00089   //Load extension
00090   ok = ok && _offExtensionsSet.loadFromExtensionsParameters( extensionsNode ) ;
00091   _offExtensionsSet.loadOrder( extensionsNode, "PreComputeOrder"    , _offExtensionsSet._orderedExtensionsForPreCompute     ) ;
00092   _offExtensionsSet.loadOrder( extensionsNode, "PostComputeOrder"   , _offExtensionsSet._orderedExtensionsForPostCompute    ) ;
00093 
00094   return ok ;
00095 }

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

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

Reimplemented from OMK::Extension.

Definition at line 97 of file OMKTriggerContainerExtension.cpp.

References _offExtensionsSet, _onExtensionsSet, _trigger, and OMK::IAccessorT< T >::get().

00098 {
00099   ( _trigger->get() ? _onExtensionsSet : _offExtensionsSet ).preComputeExtension() ;
00100 }

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

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

Reimplemented from OMK::Extension.

Definition at line 102 of file OMKTriggerContainerExtension.cpp.

References _offExtensionsSet, _onExtensionsSet, _trigger, and OMK::IAccessorT< T >::get().

00103 {
00104   ( _trigger->get() ? _onExtensionsSet : _offExtensionsSet ).postComputeExtension() ;
00105 }


Member Data Documentation

ExtensionManager OMK::TriggerContainerExtension::_onExtensionsSet [protected]

Manager for On.

Definition at line 101 of file OMKTriggerContainerExtension.h.

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

ExtensionManager OMK::TriggerContainerExtension::_offExtensionsSet [protected]

Manager for Off.

Definition at line 103 of file OMKTriggerContainerExtension.h.

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

IAttributeBaseT< bool >* OMK::TriggerContainerExtension::_trigger [protected]

The trigger.

Definition at line 105 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