dart
|
BodyNodeSpecializedFor allows classes that inherit BodyNode to have constant-time access to a specific type of Node. More...
#include <SpecializedNodeManager.hpp>
Public Member Functions | |
BodyNodeSpecializedFor () | |
Default constructor. | |
template<class NodeType > | |
std::size_t | getNumNodes () const |
Get the number of Nodes corresponding to the specified type. | |
template<class NodeType > | |
NodeType * | getNode (std::size_t index) |
Get the Node of the specified type and the specified index. | |
template<class NodeType > | |
const NodeType * | getNode (std::size_t index) const |
Get the Node of the specified type and the specified index. | |
![]() | |
BasicNodeManagerForBodyNode ()=default | |
Default constructor. | |
BasicNodeManagerForBodyNode (const BasicNodeManagerForBodyNode &)=delete | |
Delete copy constructors and assignment operators. | |
BasicNodeManagerForBodyNode & | operator= (const BasicNodeManagerForBodyNode &)=delete |
template<class NodeType > | |
std::size_t | getNumNodes () const |
Get the number of Nodes corresponding to the specified type. | |
template<class NodeType > | |
NodeType * | getNode (std::size_t index) |
Get the Node of the specified type and the specified index. | |
template<class NodeType > | |
const NodeType * | getNode (std::size_t index) const |
Get the Node of the specified type and the specified index. | |
template<class NodeType > | |
DART_DECLARE_CLASS_WITH_VIRTUAL_BASE_END std::size_t | getNumNodes () const |
Static Public Member Functions | |
template<class NodeType > | |
static constexpr bool | isSpecializedForNode () |
Check if this Manager is specialized for a specific type of Node. | |
![]() | |
template<class NodeType > | |
static constexpr bool | isSpecializedForNode () |
Check if this Manager is specialized for a specific type of Node. | |
Protected Member Functions | |
template<class NodeType > | |
std::size_t | _getNumNodes (type< NodeType >) const |
Redirect to BasicNodeManagerForBodyNode::getNumNodes() | |
std::size_t | _getNumNodes (type< SpecNode >) const |
Specialized implementation of getNumNodes() | |
template<class NodeType > | |
NodeType * | _getNode (type< NodeType >, std::size_t index) |
Redirect to BasicNodeManagerForBodyNode::getNode(std::size_t) | |
SpecNode * | _getNode (type< SpecNode >, std::size_t index) |
Specialized implementation of getNode(std::size_t) | |
Static Protected Member Functions | |
template<class NodeType > | |
static constexpr bool | _isSpecializedForNode (type< NodeType >) |
Return false. | |
static constexpr bool | _isSpecializedForNode (type< SpecNode >) |
Return true. | |
Protected Attributes | |
BasicNodeManagerForBodyNode::NodeMap::iterator | mSpecNodeIterator |
Iterator that allows direct access to the specialized Nodes. | |
![]() | |
NodeMap | mNodeMap |
Map that retrieves the Nodes of a specified type. | |
NodeDestructorSet | mNodeDestructors |
A set for storing the Node destructors. | |
Additional Inherited Members | |
![]() | |
using | NodeMap = std::map< std::type_index, std::vector< Node * > > |
using | NodeDestructorSet = std::unordered_set< NodeDestructorPtr > |
using | NodeNameMgrMap = std::map< std::type_index, common::NameManager< Node * > > |
using | SpecializedTreeNodes = std::map< std::type_index, std::vector< NodeMap::iterator > * > |
BodyNodeSpecializedFor allows classes that inherit BodyNode to have constant-time access to a specific type of Node.