#include <Visitor.h>
Base class for visitors propagated recursively through the scenegraph. More...
Base class for visitors propagated recursively through the scenegraph.
Classes | |
class | VisitorContext |
Public Attributes | |
TagSet | subsetsToManage |
list of the subsets More... | |
bool | canAccessSleepingNode |
Can the visitor access sleeping nodes? More... | |
Protected Attributes | |
const core::ExecParams * | params |
Public Member Functions | |
Visitor (const core::ExecParams *params) | |
virtual | ~Visitor () |
const core::ExecParams * | execParams () const |
virtual Result | processNodeTopDown (simulation::Node *) |
Callback method called when decending to a new node. Recursion will stop if this method returns RESULT_PRUNE. More... | |
virtual void | processNodeBottomUp (simulation::Node *) |
Callback method called after child node have been processed and before going back to the parent node. More... | |
virtual bool | childOrderReversed (simulation::Node *) |
Return true to reverse the order of traversal of child nodes. More... | |
virtual bool | treeTraversal (TreeTraversalRepetition &repeat) |
virtual const char * | getCategoryName () const |
virtual const char * | getClassName () const |
virtual std::string | getInfos () const |
void | debug_write_state_before (core::objectmodel::BaseObject *) |
void | debug_write_state_after (core::objectmodel::BaseObject *) |
template<class Visit , class VContext , class Container , class Object > | |
void | for_each (Visit *visitor, VContext *ctx, const Container &list, void(Visit::*fn)(VContext *, Object *)) |
Helper method to enumerate objects in the given list. The callback gets the pointer to node. More... | |
template<class Visit , class VContext , class Container , class Object > | |
Visitor::Result | for_each_r (Visit *visitor, VContext *ctx, const Container &list, Visitor::Result(Visit::*fn)(VContext *, Object *)) |
Helper method to enumerate objects in the given list. The callback gets the pointer to node. More... | |
bool | testTags (core::objectmodel::BaseObject *obj) |
virtual void | execute (core::objectmodel::BaseContext *node, bool precomputedOrder=false) |
Alias for context->executeVisitor(this) More... | |
virtual ctime_t | begin (simulation::Node *node, core::objectmodel::BaseObject *obj, const std::string &typeInfo=std::string("type")) |
virtual void | end (simulation::Node *node, core::objectmodel::BaseObject *obj, ctime_t t0) |
ctime_t | begin (simulation::Visitor::VisitorContext *node, core::objectmodel::BaseObject *obj, const std::string &typeInfo=std::string("type")) |
void | end (simulation::Visitor::VisitorContext *node, core::objectmodel::BaseObject *obj, ctime_t t0) |
virtual bool | isThreadSafe () const |
Specify whether this visitor can be parallelized. More... | |
virtual Result | processNodeTopDown (simulation::Node *node, LocalStorage *) |
virtual void | processNodeBottomUp (simulation::Node *node, LocalStorage *) |
Visitor & | setTags (const TagSet &t) |
Visitor & | addTag (Tag t) |
Visitor & | removeTag (Tag t) |
bool sofa::simulation::Visitor::canAccessSleepingNode |
Can the visitor access sleeping nodes?
|
protected |
TagSet sofa::simulation::Visitor::subsetsToManage |
list of the subsets
sofa::simulation::Visitor::Visitor | ( | const core::ExecParams * | params | ) |
|
virtual |
|
virtual |
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)
simulation::Visitor::ctime_t sofa::simulation::Visitor::begin | ( | simulation::Visitor::VisitorContext * | vc, |
core::objectmodel::BaseObject * | obj, | ||
const std::string & | info = std::string("type") |
||
) |
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)
|
inlinevirtual |
Return true to reverse the order of traversal of child nodes.
Reimplemented in sofa::simulation::MechanicalAccumulateMatrixDeriv.
|
inline |
|
inline |
|
virtual |
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)
void sofa::simulation::Visitor::end | ( | simulation::Visitor::VisitorContext * | vc, |
core::objectmodel::BaseObject * | obj, | ||
ctime_t | t0 | ||
) |
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)
|
inline |
|
virtual |
Alias for context->executeVisitor(this)
Reimplemented in sofa::simulation::MechanicalComputeEnergyVisitor, and sofa::simulation::MechanicalGetMomentumVisitor.
|
inline |
Helper method to enumerate objects in the given list. The callback gets the pointer to node.
|
inline |
Helper method to enumerate objects in the given list. The callback gets the pointer to node.
|
inlinevirtual |
Return a category name for this visitor Only used for debugging / profiling purposes
Reimplemented in sofa::simulation::BaseMechanicalVisitor, sofa::simulation::graph::GetUpObjectsVisitor, sofa::gui::ColourPickingVisitor, sofa::simulation::AnimateVisitor, sofa::simulation::VisualVisitor, sofa::simulation::SolveVisitor, sofa::simulation::ExportGnuplotVisitor, sofa::simulation::TransformationVisitor, sofa::simulation::InitVisitor, sofa::simulation::graph::GetDownObjectsVisitor, sofa::simulation::TopologyChangeVisitor, sofa::simulation::UpdateContextVisitor, sofa::simulation::BehaviorUpdatePositionVisitor, sofa::simulation::UpdateInternalDataVisitor, sofa::simulation::CollisionVisitor, sofa::simulation::DeactivationVisitor, sofa::simulation::StateChangeVisitor, sofa::simulation::InitGnuplotVisitor, sofa::simulation::UpdateMappingVisitor, and sofa::simulation::VelocityThresholdVisitor.
|
inlinevirtual |
Return a class name for this visitor Only used for debugging / profiling purposes
Reimplemented in sofa::simulation::MechanicalVSizeVisitor, sofa::simulation::MechanicalPickParticlesWithTagsVisitor, sofa::simulation::MechanicalPickParticlesVisitor, sofa::simulation::MechanicalAddSeparateGravityVisitor, sofa::simulation::MechanicalComputeContactForceVisitor, sofa::simulation::MechanicalIntegrationVisitor, sofa::simulation::MechanicalEndIntegrationVisitor, sofa::simulation::MechanicalBeginIntegrationVisitor, sofa::simulation::MechanicalApplyConstraintsVisitor, sofa::simulation::MechanicalAccumulateMatrixDeriv, sofa::simulation::MechanicalBuildConstraintMatrix, sofa::simulation::MechanicalAccumulateConstraint, sofa::simulation::MechanicalWriteLMConstraint, sofa::simulation::MechanicalResetConstraintVisitor, sofa::simulation::MechanicalAddMBKdxVisitor, sofa::simulation::MechanicalComputeGeometricStiffness, sofa::simulation::MechanicalComputeDfVisitor, sofa::simulation::MechanicalComputeForceVisitor, sofa::simulation::MechanicalResetForceVisitor, sofa::simulation::MechanicalSetPositionAndVelocityVisitor, sofa::simulation::MechanicalPropagateOnlyVelocityVisitor, sofa::simulation::MechanicalPropagateOnlyPositionAndVelocityVisitor, sofa::simulation::MechanicalPropagateOnlyPositionVisitor, sofa::simulation::MechanicalProjectPositionAndVelocityVisitor, sofa::simulation::MechanicalProjectPositionVisitor, sofa::simulation::MechanicalProjectVelocityVisitor, sofa::simulation::MechanicalProjectJacobianMatrixVisitor, sofa::simulation::MechanicalAccFromFVisitor, sofa::simulation::MechanicalAddMDxVisitor, sofa::simulation::MechanicalPropagateOnlyPositionAndResetForceVisitor, sofa::simulation::MechanicalPropagateDxAndResetForceVisitor, sofa::simulation::MechanicalPropagateDxVisitor, sofa::simulation::MechanicalVNormVisitor, sofa::simulation::MechanicalVDotVisitor, sofa::simulation::MechanicalVMultiOpVisitor, sofa::simulation::MechanicalVOpVisitor, sofa::simulation::MechanicalVFreeVisitor< vtype >, sofa::simulation::MechanicalVReallocVisitor< vtype >, sofa::simulation::MechanicalVAllocVisitor< vtype >, sofa::simulation::MechanicalVInitVisitor< vtype >, sofa::simulation::MechanicalVAvailVisitor< vtype >, sofa::simulation::MechanicalGetDimensionVisitor, sofa::simulation::MechanicalMultiVectorFromBaseVectorVisitor, sofa::simulation::MechanicalMultiVectorPeqBaseVectorVisitor, sofa::simulation::MechanicalMultiVectorToBaseVectorVisitor, sofa::simulation::MechanicalApplyProjectiveConstraint_ToMatrixVisitor, sofa::simulation::MechanicalAddSubMBK_ToMatrixVisitor, sofa::simulation::ParallelMechanicalVDotVisitor, sofa::simulation::MechanicalAddMBK_ToMatrixVisitor, sofa::simulation::MechanicalIntegrateConstraintsVisitor, sofa::component::constraintset::MechanicalGetConstraintResolutionVisitor, sofa::component::misc::ReadTopologyModifier, sofa::component::misc::WriteStateActivator, sofa::simulation::VisualClearVisitor, sofa::component::misc::WriteTopologyActivator, sofa::simulation::ParallelMechanicalVOpVisitor, sofa::simulation::VisualComputeBBoxVisitor, sofa::component::misc::ReadTopologyActivator, sofa::component::misc::ReadStateModifier, sofa::component::misc::WriteStateCreator, sofa::component::misc::ReadStateActivator, sofa::component::animationloop::MechanicalAccumulateConstraint2, sofa::component::misc::WriteTopologyCreator, sofa::component::misc::ReadTopologyCreator, sofa::simulation::MechanicalGetConstraintJacobianVisitor, sofa::simulation::BaseMechanicalVisitor, sofa::simulation::VisualInitVisitor, sofa::component::misc::CompareStateResult, sofa::component::misc::CompareTopologyResult, sofa::component::constraintset::MechanicalGetConstraintViolationVisitor, sofa::simulation::VisualUpdateVisitor, sofa::component::misc::ReadStateCreator, sofa::simulation::graph::GetUpObjectsVisitor, sofa::simulation::tree::GNodeVisitor, sofa::component::misc::CompareStateCreator, sofa::simulation::VisualDrawVisitor, sofa::component::constraintset::MechanicalGetConstraintInfoVisitor, sofa::component::misc::CompareTopologyCreator, sofa::simulation::MechanicalGetMatrixDimensionVisitor, sofa::component::animationloop::MechanicalSetConstraint, sofa::gui::ColourPickingVisitor, sofa::simulation::CollisionResponseVisitor, sofa::simulation::DofPrintVisitor, sofa::simulation::UpdateVisualContextVisitor, sofa::simulation::CollisionDetectionVisitor, sofa::simulation::tree::ExportDotVisitor, sofa::simulation::AnimateVisitor, sofa::simulation::UpdateSimulationContextVisitor, sofa::simulation::VisualVisitor, sofa::simulation::ParallelMechanicalVOpMecVisitor, sofa::simulation::MechanicalVPrintWithElapsedTimeVisitor, sofa::simulation::PrintVisitor, sofa::simulation::SolveVisitor, sofa::simulation::ExportGnuplotVisitor, sofa::component::interactionforcefield::MechanicalAccumulateJacobian, sofa::simulation::CollisionResetVisitor, sofa::simulation::StoreResetStateVisitor, sofa::simulation::MechanicalComputeEnergyVisitor, sofa::simulation::TransformationVisitor, sofa::simulation::MechanicalGetMomentumVisitor, sofa::simulation::FindByTypeVisitor< T >, sofa::simulation::InitVisitor, sofa::simulation::XMLPrintVisitor, sofa::simulation::graph::GetDownObjectsVisitor, sofa::simulation::TopologyChangeVisitor, sofa::simulation::UpdateContextVisitor, sofa::simulation::BehaviorUpdatePositionVisitor, sofa::simulation::UpdateInternalDataVisitor, sofa::simulation::CollisionVisitor, sofa::simulation::ExportOBJVisitor, sofa::simulation::InitGnuplotVisitor, sofa::simulation::PropagateEventVisitor, sofa::simulation::DeactivationVisitor, sofa::simulation::StateChangeVisitor, sofa::simulation::MechanicalVPrintVisitor, sofa::simulation::VelocityThresholdVisitor, sofa::simulation::ResetVisitor, sofa::simulation::UpdateLinksVisitor, sofa::simulation::UpdateMappingVisitor, sofa::simulation::WriteStateVisitor, sofa::simulation::CleanupVisitor, and sofa::simulation::DeleteVisitor.
|
inlinevirtual |
Return eventual information on the behavior of the visitor Only used for debugging / profiling purposes
Reimplemented in sofa::simulation::MechanicalVSizeVisitor, sofa::simulation::MechanicalAddSeparateGravityVisitor, sofa::simulation::MechanicalApplyConstraintsVisitor, sofa::simulation::MechanicalWriteLMConstraint, sofa::simulation::MechanicalAddMBKdxVisitor, sofa::simulation::MechanicalComputeGeometricStiffness, sofa::simulation::MechanicalComputeDfVisitor, sofa::simulation::MechanicalComputeForceVisitor, sofa::simulation::MechanicalResetForceVisitor, sofa::simulation::MechanicalSetPositionAndVelocityVisitor, sofa::simulation::MechanicalPropagateOnlyVelocityVisitor, sofa::simulation::MechanicalPropagateOnlyPositionAndVelocityVisitor, sofa::simulation::MechanicalPropagateOnlyPositionVisitor, sofa::simulation::MechanicalProjectPositionAndVelocityVisitor, sofa::simulation::MechanicalProjectPositionVisitor, sofa::simulation::MechanicalProjectVelocityVisitor, sofa::simulation::MechanicalAccFromFVisitor, sofa::simulation::MechanicalAddMDxVisitor, sofa::simulation::MechanicalPropagateDxAndResetForceVisitor, sofa::simulation::MechanicalPropagateDxVisitor, sofa::simulation::MechanicalVNormVisitor, sofa::simulation::MechanicalVDotVisitor, sofa::simulation::MechanicalVMultiOpVisitor, sofa::simulation::MechanicalVOpVisitor, sofa::simulation::MechanicalVFreeVisitor< vtype >, sofa::simulation::MechanicalVReallocVisitor< vtype >, sofa::simulation::MechanicalVAllocVisitor< vtype >, sofa::simulation::MechanicalVInitVisitor< vtype >, sofa::simulation::MechanicalVAvailVisitor< vtype >, sofa::simulation::ParallelMechanicalVDotVisitor, sofa::simulation::ParallelMechanicalVOpVisitor, sofa::simulation::ParallelMechanicalVOpMecVisitor, sofa::simulation::FindByTypeVisitor< T >, sofa::simulation::TopologyChangeVisitor, and sofa::simulation::PropagateEventVisitor.
|
inlinevirtual |
Specify whether this visitor can be parallelized.
Reimplemented in sofa::simulation::MechanicalVSizeVisitor, sofa::simulation::MechanicalComputeContactForceVisitor, sofa::simulation::MechanicalIntegrationVisitor, sofa::simulation::MechanicalEndIntegrationVisitor, sofa::simulation::MechanicalBeginIntegrationVisitor, sofa::simulation::MechanicalApplyConstraintsVisitor, sofa::simulation::MechanicalAccumulateMatrixDeriv, sofa::simulation::MechanicalBuildConstraintMatrix, sofa::simulation::MechanicalAccumulateConstraint, sofa::simulation::MechanicalWriteLMConstraint, sofa::simulation::MechanicalResetConstraintVisitor, sofa::simulation::MechanicalAddMBKdxVisitor, sofa::simulation::MechanicalComputeGeometricStiffness, sofa::simulation::MechanicalComputeDfVisitor, sofa::simulation::MechanicalComputeForceVisitor, sofa::simulation::MechanicalResetForceVisitor, sofa::simulation::MechanicalSetPositionAndVelocityVisitor, sofa::simulation::MechanicalPropagateOnlyVelocityVisitor, sofa::simulation::MechanicalPropagateOnlyPositionAndVelocityVisitor, sofa::simulation::MechanicalPropagateOnlyPositionVisitor, sofa::simulation::MechanicalProjectPositionAndVelocityVisitor, sofa::simulation::MechanicalProjectPositionVisitor, sofa::simulation::MechanicalProjectVelocityVisitor, sofa::simulation::MechanicalProjectJacobianMatrixVisitor, sofa::simulation::MechanicalAccFromFVisitor, sofa::simulation::MechanicalAddMDxVisitor, sofa::simulation::MechanicalPropagateOnlyPositionAndResetForceVisitor, sofa::simulation::MechanicalPropagateDxAndResetForceVisitor, sofa::simulation::MechanicalPropagateDxVisitor, sofa::simulation::MechanicalVNormVisitor, sofa::simulation::MechanicalVDotVisitor, sofa::simulation::MechanicalVMultiOpVisitor, sofa::simulation::MechanicalVOpVisitor, sofa::simulation::MechanicalVFreeVisitor< vtype >, sofa::simulation::MechanicalVReallocVisitor< vtype >, sofa::simulation::MechanicalVAllocVisitor< vtype >, sofa::simulation::MechanicalVInitVisitor< vtype >, sofa::simulation::MechanicalVAvailVisitor< vtype >, sofa::simulation::ParallelMechanicalVDotVisitor, sofa::simulation::ParallelMechanicalVOpVisitor, sofa::component::constraintset::MechanicalGetConstraintResolutionVisitor, sofa::component::animationloop::MechanicalAccumulateConstraint2, sofa::simulation::ParallelMechanicalVOpMecVisitor, sofa::simulation::graph::GetUpObjectsVisitor, sofa::component::animationloop::MechanicalSetConstraint, sofa::component::interactionforcefield::MechanicalAccumulateJacobian, sofa::simulation::AnimateVisitor, sofa::simulation::SolveVisitor, sofa::simulation::StoreResetStateVisitor, sofa::simulation::UpdateContextVisitor, sofa::simulation::TransformationVisitor, sofa::simulation::InitVisitor, sofa::simulation::UpdateMappingVisitor, sofa::simulation::graph::GetDownObjectsVisitor, sofa::simulation::TopologyChangeVisitor, sofa::simulation::BehaviorUpdatePositionVisitor, sofa::simulation::UpdateInternalDataVisitor, sofa::simulation::ResetVisitor, sofa::simulation::UpdateLinksVisitor, sofa::simulation::DeactivationVisitor, and sofa::simulation::StateChangeVisitor.
|
inlinevirtual |
Callback method called after child node have been processed and before going back to the parent node.
Reimplemented in sofa::simulation::BaseMechanicalVisitor, sofa::component::controller::GetStatesThatCanSleep, sofa::simulation::VisualDrawVisitor, sofa::simulation::tree::GNodeVisitor, sofa::simulation::PrintVisitor, sofa::simulation::StoreResetStateVisitor, sofa::simulation::XMLPrintVisitor, sofa::simulation::ExportOBJVisitor, sofa::simulation::InitVisitor, sofa::simulation::TopologyChangeVisitor, sofa::simulation::ResetVisitor, sofa::simulation::UpdateLinksVisitor, sofa::simulation::DeactivationVisitor, sofa::simulation::CleanupVisitor, sofa::simulation::UpdateBoundingBoxVisitor, and sofa::simulation::DeleteVisitor.
|
inlinevirtual |
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::BaseMechanicalVisitor.
|
inlinevirtual |
Callback method called when decending to a new node. Recursion will stop if this method returns RESULT_PRUNE.
Reimplemented in sofa::component::misc::ReadTopologyModifier, sofa::component::misc::WriteStateActivator, sofa::component::misc::WriteTopologyActivator, sofa::component::misc::ReadTopologyActivator, sofa::component::misc::ReadStateModifier, sofa::simulation::VisualComputeBBoxVisitor, sofa::simulation::BaseMechanicalVisitor, sofa::component::controller::UpdateAllSleepStates, sofa::component::misc::WriteStateCreator, sofa::component::misc::ReadStateActivator, sofa::simulation::VisualInitVisitor, sofa::component::misc::WriteTopologyCreator, sofa::component::misc::ReadTopologyCreator, sofa::component::misc::CompareStateResult, sofa::component::misc::CompareTopologyResult, sofa::simulation::VisualUpdateVisitor, sofa::component::misc::ReadStateCreator, sofa::component::misc::CompareStateCreator, sofa::component::misc::CompareTopologyCreator, sofa::simulation::VisualDrawVisitor, sofa::simulation::graph::GetUpObjectsVisitor, sofa::gui::ColourPickingVisitor, sofa::simulation::UpdateVisualContextVisitor, sofa::simulation::DofPrintVisitor, sofa::simulation::UpdateSimulationContextVisitor, sofa::simulation::MechanicalVPrintWithElapsedTimeVisitor, sofa::simulation::tree::GNodeVisitor, sofa::simulation::PrintVisitor, sofa::simulation::AnimateVisitor, sofa::simulation::VisualVisitor, sofa::simulation::SolveVisitor, sofa::simulation::ExportGnuplotVisitor, sofa::simulation::StoreResetStateVisitor, sofa::simulation::XMLPrintVisitor, sofa::simulation::TransformationVisitor, sofa::simulation::FindByTypeVisitor< T >, sofa::simulation::ExportOBJVisitor, sofa::simulation::InitVisitor, sofa::simulation::UpdateContextVisitor, sofa::simulation::PropagateEventVisitor, sofa::simulation::CollisionVisitor, sofa::simulation::MechanicalVPrintVisitor, sofa::simulation::BehaviorUpdatePositionVisitor, sofa::simulation::TopologyChangeVisitor, sofa::simulation::UpdateInternalDataVisitor, sofa::simulation::InitGnuplotVisitor, sofa::simulation::ResetVisitor, sofa::simulation::UpdateLinksVisitor, sofa::simulation::UpdateMappingVisitor, sofa::simulation::graph::GetDownObjectsVisitor, sofa::simulation::StateChangeVisitor, sofa::simulation::WriteStateVisitor, sofa::simulation::DeactivationVisitor, sofa::simulation::CleanupVisitor, sofa::simulation::UpdateBoundingBoxVisitor, and sofa::simulation::VelocityThresholdVisitor.
|
inlinevirtual |
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::BaseMechanicalVisitor.
|
inline |
|
inlinevirtual |
repeat | Tell if a node callback can be executed several times (at each traversal in diamond configurations) |
Reimplemented in sofa::simulation::VisualVisitor, sofa::simulation::XMLPrintVisitor, and sofa::simulation::PrintVisitor.