SOFA API  c4ac86de
Open source framework for multi-physics simuation
sofa::core::objectmodel::BaseNode Class Referenceabstract

#include <BaseNode.h>

Base class for simulation nodes. More...

Inheritance diagram for sofa::core::objectmodel::BaseNode:

Detailed Description

Base class for simulation nodes.

A Node is a class defining the main scene data structure of a simulation. It defined hierarchical relations between elements. Each node can have parent and child nodes (potentially defining a tree), as well as attached objects (the leaves of the tree).

Author
Jeremie Allard

Public Member Functions

 SOFA_ABSTRACT_CLASS (BaseNode, Base)
 
- Public Member Functions inherited from sofa::core::objectmodel::Base
virtual const BaseClassgetClass () const
 
const std::string & getName () const
 Accessor to the object name. More...
 
void setName (const std::string &n)
 Set the name of this object. More...
 
void setName (const std::string &n, int counter)
 Set the name of this object, adding an integer counter. More...
 
virtual std::string getTypeName () const
 Get the type name of this object (i.e. class and template types) More...
 
virtual std::string getClassName () const
 Get the class name of this object. More...
 
virtual std::string getTemplateName () const
 Get the template type names (if any) used to instantiate this object. More...
 
void setDefinitionSourceFileName (const std::string &sourceFileName)
 Set the source filename (where the component is implemented) More...
 
const std::string & getDefinitionSourceFileName () const
 Get the source filename (where the component is implemented) More...
 
void setDefinitionSourceFilePos (const int)
 Set the source location (where the component is implemented) More...
 
int getDefinitionSourceFilePos () const
 Get the source location (where the component is implemented) More...
 
void setInstanciationSourceFileName (const std::string &sourceFileName)
 
const std::string & getInstanciationSourceFileName () const
 
void setInstanciationSourceFilePos (const int)
 
int getInstanciationSourceFilePos () const
 
const std::string getWarnings () const
 
const std::string getOutputs () const
 use getLoggedMessageAsString() or getLoggedMessage instead. More...
 
void clearWarnings ()
 use getLoggedMessageAsString() or getLoggedMessage instead. More...
 
void clearOutputs ()
 use clearLoggedMessages() instead More...
 
void processStream (std::ostream &out)
 use clearLoggedMessages() instead More...
 
void addMessage (const sofa::helper::logging::Message &m) const
 
size_t countLoggedMessages (sofa::helper::logging::Message::TypeSet t=sofa::helper::logging::Message::AnyTypes) const
 
const std::deque< sofa::helper::logging::Message > & getLoggedMessages () const
 
const std::string getLoggedMessagesAsString (sofa::helper::logging::Message::TypeSet t=sofa::helper::logging::Message::AnyTypes) const
 
void clearLoggedMessages () const
 
bool notMuted () const
 
const sofa::core::objectmodel::TagSetgetTags () const
 Represents the subsets the object belongs to. More...
 
bool hasTag (Tag t) const
 Return true if the object belong to the given subset. More...
 
void addTag (Tag t)
 Add a subset qualification to the object. More...
 
void removeTag (Tag t)
 Remove a subset qualification to the object. More...
 
ComponentState getComponentState () const
 
bool isComponentStateValid () const
 
virtual bool parseField (const std::string &attribute, const std::string &value)
 Assign one field value (Data or Link) More...
 
virtual bool hasField (const std::string &attribute) const
 Check if a given Data field or Link exists. More...
 
virtual void parse (BaseObjectDescription *arg)
 Parse the given description to assign values to this object's fields and potentially other parameters. More...
 
void parseFields (const std::list< std::string > &str)
 Assign the field values stored in the given list of name + value pairs of strings. More...
 
virtual void parseFields (const std::map< std::string, std::string * > &str)
 Assign the field values stored in the given map of name -> value pairs. More...
 
void writeDatas (std::map< std::string, std::string * > &str)
 Write the current field values to the given map of name -> value pairs. More...
 
void writeDatas (std::ostream &out, const std::string &separator=" ")
 
BaseDatafindData (const std::string &name) const
 
std::vector< BaseData * > findGlobalField (const std::string &name) const
 Find data fields given a name: several can be found as we look into the alias map. More...
 
BaseLinkfindLink (const std::string &name) const
 
std::vector< BaseLink * > findLinks (const std::string &name) const
 Find link fields given a name: several can be found as we look into the alias map. More...
 
virtual void updateLinks (bool logErrors=true)
 Update pointers in case the pointed-to objects have appeared. More...
 
template<class T >
BaseData::BaseInitData initData (Data< T > *field, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false)
 Helper method used to initialize a data field containing a value of type T. More...
 
template<class T >
Data< T >::InitData initData (Data< T > *field, const T &value, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false)
 Helper method used to initialize a data field containing a value of type T. More...
 
void addData (BaseData *f, const std::string &name)
 
void addData (BaseData *f)
 
void removeData (BaseData *f)
 Remove a data field. More...
 
void addAlias (BaseData *field, const char *alias)
 Add an alias to a Data. More...
 
void addLink (BaseLink *l)
 Add a link. More...
 
void removeLink (BaseLink *l)
 Remove a link. More...
 
void addAlias (BaseLink *link, const char *alias)
 Add an alias to a Link. More...
 
const VecDatagetDataFields () const
 Accessor to the vector containing all the fields of this object. More...
 
const MapDatagetDataAliases () const
 Accessor to the map containing all the aliases of this object. More...
 
const VecLinkgetLinks () const
 Accessor to the vector containing all the fields of this object. More...
 
const MapLinkgetLinkAliases () const
 Accessor to the map containing all the aliases of this object. More...
 
virtual bool findDataLinkDest (BaseData *&ptr, const std::string &path, const BaseLink *link)
 
template<class T >
bool findLinkDest (T *&ptr, const std::string &path, const BaseLink *link)
 
virtual void copyAspect (int destAspect, int srcAspect)
 Copy the source aspect to the destination aspect for each Data in the component. More...
 
virtual void releaseAspect (int aspect)
 Release memory allocated for the specified aspect. More...
 

Protected Member Functions

 BaseNode ()
 
 ~BaseNode () override
 
void setObjectContext (BaseObject::SPtr obj)
 Set the context of an object to this. More...
 
void clearObjectContext (BaseObject::SPtr obj)
 Reset the context of an object. More...
 
- Protected Member Functions inherited from sofa::core::objectmodel::Base
 Base ()
 
virtual ~Base ()
 
void initData0 (BaseData *field, BaseData::BaseInitData &res, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false)
 Helper method used by initData() More...
 
void initData0 (BaseData *field, BaseData::BaseInitData &res, const char *name, const char *help, BaseData::DataFlags dataFlags)
 Helper method used by initData() More...
 
template<class T >
void initData0 (Data< T > *field, typename Data< T >::InitData &res, const T &value, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false)
 Helper method used by initData() More...
 

Scene hierarchy

typedef sofa::helper::vector< BaseNode * > Children
 
typedef sofa::helper::vector< BaseNode * > Parents
 
virtual Children getChildren () const =0
 Get a list of child node. More...
 
virtual Parents getParents () const =0
 
virtual size_t getNbParents () const =0
 returns number of parents More...
 
virtual BaseNodegetFirstParent () const =0
 return the first parent (returns nullptr if no parent) More...
 
virtual BaseNodegetRoot () const
 returns the root by following up the first parent for multinodes More...
 
virtual void addChild (BaseNode::SPtr node)=0
 Add a child node. More...
 
virtual void removeChild (BaseNode::SPtr node)=0
 Remove a child node. More...
 
virtual void moveChild (BaseNode::SPtr node, BaseNode::SPtr prev_parent)=0
 Move a node from another node. More...
 
virtual void moveChild (BaseNode::SPtr node)=0
 Move a node in this & remove it from its parents. More...
 
virtual bool addObject (BaseObject::SPtr obj)=0
 Add a generic object. More...
 
virtual bool removeObject (BaseObject::SPtr obj)=0
 Remove a generic object. More...
 
virtual void moveObject (BaseObject::SPtr obj)=0
 Move an object from a node to another node. More...
 
virtual bool hasParent (const BaseNode *node) const =0
 Test if the given node is a parent of this node. More...
 
virtual bool hasAncestor (const BaseNode *node) const =0
 
virtual void detachFromGraph ()=0
 
virtual BaseContextgetContext ()=0
 Get this node context. More...
 
virtual const BaseContextgetContext () const =0
 Get this node context. More...
 
virtual std::string getPathName () const
 Return the full path name of this node. More...
 
virtual std::string getRootPath () const
 Return the path from this node to the root node. More...
 
void * findLinkDestClass (const BaseClass *destType, const std::string &path, const BaseLink *link) override=0
 

Solvers and main algorithms

virtual core::behavior::BaseAnimationLoopgetAnimationLoop () const
 
virtual core::behavior::OdeSolvergetOdeSolver () const
 
virtual core::collision::PipelinegetCollisionPipeline () const
 
virtual core::visual::VisualLoopgetVisualLoop () const
 

Additional Inherited Members

- Public Attributes inherited from sofa::core::objectmodel::Base
helper::system::SofaOStream< helper::logging::Message::Warningserr
 
helper::system::SofaOStream< helper::logging::Message::Infosout
 
helper::system::SofaEndl< Basesendl
 runs the stream processing More...
 
Data< std::string > name
 Name of the object. More...
 
Data< boolf_printLog
 if true, emits extra messages at runtime. More...
 
Data< sofa::core::objectmodel::TagSetf_tags
 list of the subsets the objet belongs to More...
 
Data< sofa::defaulttype::BoundingBoxf_bbox
 this object bounding box More...
 
Data< ComponentStated_componentstate
 the object state More...
 
Data< ComponentState > & m_componentstate {d_componentstate}
 TODO bruno: uncomment once c++17 is enabled in SOFA. More...
 
std::string m_definitionSourceFileName {""}
 
int m_definitionSourceFilePos {-1}
 
std::string m_instanciationSourceFileName {""}
 
int m_instanciationSourceFilePos {-1}
 
- Protected Attributes inherited from sofa::core::objectmodel::Base
VecData m_vecData
 List of fields (Data instances) More...
 
MapData m_aliasData
 name -> Data multi-map (includes names and aliases) More...
 
VecLink m_vecLink
 List of links. More...
 
MapLink m_aliasLink
 name -> Link multi-map (includes names and aliases) More...
 
- Static Public Member Functions inherited from sofa::core::objectmodel::Base
static const MyClassGetClass ()
 
template<class T >
static void dynamicCast (T *&ptr, Base *b)
 
template<class T >
static std::string typeName (const T *ptr=nullptr)
 
template<class T >
static std::string className (const T *ptr=nullptr)
 
template<class T >
static std::string namespaceName (const T *ptr=nullptr)
 
template<class T >
static std::string templateName (const T *ptr=nullptr)
 
template<class T >
static std::string shortName (const T *ptr=nullptr, BaseObjectDescription *=nullptr)
 

Constructor details

sofa::core::objectmodel::BaseNode::BaseNode ( )
protected
sofa::core::objectmodel::BaseNode::~BaseNode ( )
overrideprotected

Function details

virtual void sofa::core::objectmodel::BaseNode::addChild ( BaseNode::SPtr  node)
pure virtual

Add a child node.

virtual bool sofa::core::objectmodel::BaseNode::addObject ( BaseObject::SPtr  obj)
pure virtual

Add a generic object.

Implemented in sofa::simulation::Node.

void sofa::core::objectmodel::BaseNode::clearObjectContext ( BaseObject::SPtr  obj)
protected

Reset the context of an object.

virtual void sofa::core::objectmodel::BaseNode::detachFromGraph ( )
pure virtual

Remove the current node from the graph: depending on the type of Node, it can have one or several parents.

Warning
You must have a SPtr on the node you detach if you want to keep it or the smart pointer mechanism will remove it !

Implemented in sofa::simulation::tree::GNode, and sofa::simulation::graph::DAGNode.

void* sofa::core::objectmodel::BaseNode::findLinkDestClass ( const BaseClass destType,
const std::string &  path,
const BaseLink link 
)
overridepure virtual

Reimplemented from sofa::core::objectmodel::Base.

Implemented in sofa::simulation::Node.

core::behavior::BaseAnimationLoop * sofa::core::objectmodel::BaseNode::getAnimationLoop ( ) const
virtual

Reimplemented in sofa::simulation::Node.

virtual Children sofa::core::objectmodel::BaseNode::getChildren ( ) const
pure virtual

Get a list of child node.

Implemented in sofa::simulation::Node.

core::collision::Pipeline * sofa::core::objectmodel::BaseNode::getCollisionPipeline ( ) const
virtual

Reimplemented in sofa::simulation::Node.

virtual BaseContext* sofa::core::objectmodel::BaseNode::getContext ( )
pure virtual

Get this node context.

Implemented in sofa::simulation::Node.

virtual const BaseContext* sofa::core::objectmodel::BaseNode::getContext ( ) const
pure virtual

Get this node context.

Implemented in sofa::simulation::Node.

virtual BaseNode* sofa::core::objectmodel::BaseNode::getFirstParent ( ) const
pure virtual

return the first parent (returns nullptr if no parent)

Implemented in sofa::simulation::tree::GNode, and sofa::simulation::graph::DAGNode.

virtual size_t sofa::core::objectmodel::BaseNode::getNbParents ( ) const
pure virtual

returns number of parents

Implemented in sofa::simulation::tree::GNode, and sofa::simulation::graph::DAGNode.

core::behavior::OdeSolver * sofa::core::objectmodel::BaseNode::getOdeSolver ( ) const
virtual

Reimplemented in sofa::simulation::Node.

virtual Parents sofa::core::objectmodel::BaseNode::getParents ( ) const
pure virtual

Get a list of parent node

Warning
a temporary is created, this can be really inefficient

Implemented in sofa::simulation::tree::GNode, and sofa::simulation::graph::DAGNode.

std::string sofa::core::objectmodel::BaseNode::getPathName ( ) const
virtual

Return the full path name of this node.

BaseNode * sofa::core::objectmodel::BaseNode::getRoot ( ) const
virtual

returns the root by following up the first parent for multinodes

std::string sofa::core::objectmodel::BaseNode::getRootPath ( ) const
virtual

Return the path from this node to the root node.

core::visual::VisualLoop * sofa::core::objectmodel::BaseNode::getVisualLoop ( ) const
virtual

Reimplemented in sofa::simulation::Node.

virtual bool sofa::core::objectmodel::BaseNode::hasAncestor ( const BaseNode node) const
pure virtual

Test if the given node is an ancestor of this node. An ancestor is a parent or (recursively) the parent of an ancestor.

Implemented in sofa::simulation::tree::GNode, and sofa::simulation::graph::DAGNode.

virtual bool sofa::core::objectmodel::BaseNode::hasParent ( const BaseNode node) const
pure virtual

Test if the given node is a parent of this node.

Implemented in sofa::simulation::tree::GNode, and sofa::simulation::graph::DAGNode.

virtual void sofa::core::objectmodel::BaseNode::moveChild ( BaseNode::SPtr  node,
BaseNode::SPtr  prev_parent 
)
pure virtual

Move a node from another node.

virtual void sofa::core::objectmodel::BaseNode::moveChild ( BaseNode::SPtr  node)
pure virtual

Move a node in this & remove it from its parents.

virtual void sofa::core::objectmodel::BaseNode::moveObject ( BaseObject::SPtr  obj)
pure virtual

Move an object from a node to another node.

Implemented in sofa::simulation::Node.

virtual void sofa::core::objectmodel::BaseNode::removeChild ( BaseNode::SPtr  node)
pure virtual

Remove a child node.

virtual bool sofa::core::objectmodel::BaseNode::removeObject ( BaseObject::SPtr  obj)
pure virtual

Remove a generic object.

Implemented in sofa::simulation::Node.

void sofa::core::objectmodel::BaseNode::setObjectContext ( BaseObject::SPtr  obj)
protected

Set the context of an object to this.

sofa::core::objectmodel::BaseNode::SOFA_ABSTRACT_CLASS ( BaseNode  ,
Base   
)