sofa::simulation::Visitor Class Reference

Base class for actions propagated recursively through the scenegraph. More...

#include <Visitor.h>

Inheritance diagram for sofa::simulation::Visitor:

Inheritance graph
[legend]

Public Types

enum  Result { RESULT_CONTINUE, RESULT_PRUNE }
typedef simulation::Node::ctime_t ctime_t

Public Member Functions

virtual ~Visitor ()
virtual Result processNodeTopDown (simulation::Node *)
 Callback method called when decending to a new node. Recursion will stop if this method returns RESULT_PRUNE.
virtual void processNodeBottomUp (simulation::Node *)
 Callback method called after child node have been processed and before going back to the parent node.
virtual const char * getCategoryName () const
 Return a category name for this action.
template<class Act , class Container , class Object >
void for_each (Act *action, simulation::Node *node, const Container &list, void(Act::*fn)(simulation::Node *, Object *))
 Helper method to enumerate objects in the given list. The callback gets the pointer to node.
template<class Act , class Container , class Object >
Visitor::Result for_each_r (Act *action, simulation::Node *node, const Container &list, Visitor::Result(Act::*fn)(simulation::Node *, Object *))
 Helper method to enumerate objects in the given list. The callback gets the pointer to node.
ctime_t begin (simulation::Node *node, core::objectmodel::BaseObject *)
 Optional helper method to call before handling an object if not using the for_each method.
void end (simulation::Node *node, core::objectmodel::BaseObject *obj, ctime_t t0)
 Optional helper method to call after handling an object if not using the for_each method.
void execute (core::objectmodel::BaseContext *)
 Alias for context->executeVisitor(this).
virtual bool isThreadSafe () const
 Specify whether this action can be parallelized.
virtual Result processNodeTopDown (simulation::Node *node, LocalStorage *)
 Callback method called when decending to a new node.
virtual void processNodeBottomUp (simulation::Node *node, LocalStorage *)
 Callback method called after child node have been processed and before going back to the parent node.

Detailed Description

Base class for actions propagated recursively through the scenegraph.

Definition at line 41 of file Visitor.h.


Member Typedef Documentation

Definition at line 119 of file Visitor.h.


Member Enumeration Documentation

Enumerator:
RESULT_CONTINUE 
RESULT_PRUNE 

Definition at line 46 of file Visitor.h.


Constructor & Destructor Documentation

virtual sofa::simulation::Visitor::~Visitor (  )  [inline, virtual]

Definition at line 44 of file Visitor.h.


Member Function Documentation

ctime_t sofa::simulation::Visitor::begin ( simulation::Node *  node,
core::objectmodel::BaseObject *   
) [inline]

Optional helper method to call before handling an object if not using the for_each method.

It currently takes care of time logging, but could be extended (step-by-step execution for instance)

Definition at line 123 of file Visitor.h.

References sofa::simulation::Node::startTime().

Referenced by sofa::simulation::MechanicalVisitor::processNodeBottomUp(), sofa::simulation::MechanicalMatrixVisitor::processNodeBottomUp(), sofa::simulation::MechanicalVisitor::processNodeTopDown(), sofa::simulation::MechanicalMatrixVisitor::processNodeTopDown(), and sofa::simulation::AnimateVisitor::processNodeTopDown().

void sofa::simulation::Visitor::end ( simulation::Node *  node,
core::objectmodel::BaseObject *  obj,
ctime_t  t0 
) [inline]

Optional helper method to call after handling an object if not using the for_each method.

It currently takes care of time logging, but could be extended (step-by-step execution for instance)

Definition at line 130 of file Visitor.h.

References sofa::simulation::Node::endTime(), and getCategoryName().

Referenced by sofa::simulation::MechanicalVisitor::processNodeBottomUp(), sofa::simulation::MechanicalMatrixVisitor::processNodeBottomUp(), sofa::simulation::MechanicalVisitor::processNodeTopDown(), sofa::simulation::MechanicalMatrixVisitor::processNodeTopDown(), and sofa::simulation::AnimateVisitor::processNodeTopDown().

void Visitor::execute ( core::objectmodel::BaseContext *  c  ) 

template<class Act , class Container , class Object >
void sofa::simulation::Visitor::for_each ( Act *  action,
simulation::Node *  node,
const Container &  list,
void(Act::*)(simulation::Node *, Object *)  fn 
) [inline]

template<class Act , class Container , class Object >
Visitor::Result sofa::simulation::Visitor::for_each_r ( Act *  action,
simulation::Node *  node,
const Container &  list,
Visitor::Result(Act::*)(simulation::Node *, Object *)  fn 
) [inline]

virtual const char* sofa::simulation::Visitor::getCategoryName (  )  const [inline, virtual]

virtual bool sofa::simulation::Visitor::isThreadSafe (  )  const [inline, virtual]

Specify whether this action can be parallelized.

Reimplemented in sofa::simulation::AnimateVisitor, sofa::simulation::BehaviorUpdatePositionVisitor, sofa::simulation::DesactivationVisitor, sofa::simulation::InitVisitor, sofa::simulation::InstrumentVisitor, sofa::simulation::MechanicalVAvailVisitor, sofa::simulation::MechanicalVAllocVisitor, sofa::simulation::MechanicalVFreeVisitor, sofa::simulation::MechanicalVOpVisitor, sofa::simulation::MechanicalVMultiOpVisitor, sofa::simulation::MechanicalVDotVisitor, sofa::simulation::MechanicalPropagateDxVisitor, sofa::simulation::MechanicalPropagateDxAndResetForceVisitor, sofa::simulation::MechanicalPropagateAndAddDxVisitor, sofa::simulation::MechanicalAddMDxVisitor, sofa::simulation::MechanicalAccFromFVisitor, sofa::simulation::MechanicalPropagatePositionAndVelocityVisitor, sofa::simulation::MechanicalPropagateFreePositionVisitor, sofa::simulation::MechanicalResetForceVisitor, sofa::simulation::MechanicalComputeForceVisitor, sofa::simulation::MechanicalComputeDfVisitor, sofa::simulation::MechanicalAddMBKdxVisitor, sofa::simulation::MechanicalResetConstraintVisitor, sofa::simulation::MechanicalAccumulateConstraint, sofa::simulation::MechanicalApplyConstraintsVisitor, sofa::simulation::MechanicalBeginIntegrationVisitor, sofa::simulation::MechanicalEndIntegrationVisitor, sofa::simulation::MechanicalIntegrationVisitor, sofa::simulation::MechanicalComputeContactForceVisitor, sofa::simulation::ResetVisitor, sofa::simulation::StoreResetStateVisitor, sofa::simulation::SolveVisitor, sofa::simulation::StateChangeVisitor, sofa::simulation::TopologyChangeVisitor, sofa::simulation::TransformationVisitor, sofa::simulation::UpdateContextVisitor, and sofa::simulation::UpdateMappingVisitor.

Definition at line 140 of file Visitor.h.

Referenced by sofa::simulation::tree::ParallelVisitorScheduler::executeVisitor().

virtual void sofa::simulation::Visitor::processNodeBottomUp ( simulation::Node *  node,
LocalStorage *   
) [inline, virtual]

Callback method called after child node have been processed and before going back to the parent node.

This version is offered a LocalStorage to store temporary data

Reimplemented in sofa::simulation::MechanicalVDotVisitor.

Definition at line 148 of file Visitor.h.

References processNodeBottomUp().

Referenced by processNodeBottomUp().

virtual void sofa::simulation::Visitor::processNodeBottomUp ( simulation::Node *   )  [inline, virtual]

virtual Result sofa::simulation::Visitor::processNodeTopDown ( simulation::Node *  node,
LocalStorage *   
) [inline, virtual]

Callback method called when decending to a new node.

Recursion will stop if this method returns RESULT_PRUNE This version is offered a LocalStorage to store temporary data

Reimplemented in sofa::simulation::MechanicalVDotVisitor.

Definition at line 144 of file Visitor.h.

References processNodeTopDown().

Referenced by processNodeTopDown().

virtual Result sofa::simulation::Visitor::processNodeTopDown ( simulation::Node *   )  [inline, virtual]

Callback method called when decending to a new node. Recursion will stop if this method returns RESULT_PRUNE.

Reimplemented in sofa::component::misc::ReadStateModifier, sofa::component::misc::WriteStateActivator, sofa::simulation::AnimateVisitor, sofa::simulation::BehaviorUpdatePositionVisitor, sofa::simulation::CollisionVisitor, sofa::simulation::DesactivationVisitor, sofa::simulation::InitGnuplotVisitor, sofa::simulation::ExportGnuplotVisitor, sofa::simulation::ExportOBJVisitor, sofa::simulation::FindByTypeVisitor< T >, sofa::simulation::InitVisitor, sofa::simulation::InstrumentVisitor, sofa::simulation::MechanicalMatrixVisitor, sofa::simulation::MechanicalVisitor, sofa::simulation::MechanicalPropagatePositionAndVelocityVisitor, sofa::simulation::MechanicalPropagateFreePositionVisitor, sofa::simulation::MechanicalVPrintVisitor, sofa::simulation::MechanicalVPrintWithElapsedTimeVisitor, sofa::simulation::PrintVisitor, sofa::simulation::PropagateEventVisitor, sofa::simulation::ResetVisitor, sofa::simulation::StoreResetStateVisitor, sofa::simulation::SolveVisitor, sofa::simulation::StateChangeVisitor, sofa::simulation::TopologyChangeVisitor, sofa::simulation::TransformationVisitor, sofa::simulation::UpdateContextVisitor, sofa::simulation::UpdateSimulationContextVisitor, sofa::simulation::UpdateVisualContextVisitor, sofa::simulation::UpdateMappingVisitor, sofa::simulation::VelocityThresholdVisitor, sofa::simulation::VisualVisitor, sofa::simulation::VisualDrawVisitor, sofa::simulation::VisualComputeBBoxVisitor, sofa::simulation::WriteStateVisitor, sofa::simulation::XMLPrintVisitor, and sofa::simulation::tree::GNodeVisitor.

Definition at line 49 of file Visitor.h.

References RESULT_CONTINUE.

Referenced by sofa::simulation::tree::GNode::doExecuteVisitor().


The documentation for this class was generated from the following files:

Generated on Sun Nov 23 04:24:36 2008 for Sofa by  doxygen 1.5.7.1