9 #ifndef MRPT_DIRECTED_TREE_H 10 #define MRPT_DIRECTED_TREE_H 47 template <
class TYPE_EDGES = u
int8_t>
58 TEdgeInfo(
TNodeID child_id_,
bool direction_child_to_parent=
false,
const TYPE_EDGES & edge_data = TYPE_EDGES() ) :
id(child_id_),
reverse(direction_child_to_parent),
data(edge_data) { }
93 const size_t next_depth_level = root_depth_level+1;
96 const TListEdges &children = itChildren->second;
99 user_visitor.OnVisitNode(
root,*itEdge,next_depth_level);
107 const size_t next_depth_level = root_depth_level+1;
110 const TListEdges &children = itChildren->second;
112 user_visitor.OnVisitNode(
root,*itEdge,next_depth_level);
129 std::ostringstream
s;
132 std::ostringstream &m_s;
133 CMyVisitor(std::ostringstream &
s) : m_s(
s) { }
136 << edge_to_child.
id << std::endl;
139 CMyVisitor myVisitor(
s);
140 s <<
root << std::endl;
TMapNode2ListEdges edges_to_children
The edges of each node.
< Make available this typedef in this namespace too
#define MRPT_OVERRIDE
C++11 "override" for virtuals:
std::list< TEdgeInfo > TListEdges
const Scalar * const_iterator
CDirectedTree< TYPE_EDGES > tree_t
Virtual base class for user-defined visitors.
void visitDepthFirst(const TNodeID root, Visitor &user_visitor, const size_t root_depth_level=0) const
Depth-first visit of all children nodes of a given root (itself excluded from the visit)...
bool reverse
True if edge direction is child->parent, false if it's parent->child.
uint64_t TNodeID
The type for node IDs in graphs of different types.
virtual void OnVisitNode(const TNodeID parent, const typename tree_t::TEdgeInfo &edge_to_child, const size_t depth_level)=0
Virtual method to be implemented by the user and which will be called during the visit to a graph wit...
uint64_t TNodeID
The type for node IDs in graphs of different types.
TNodeID root
The root of the tree.
TNodeID id
The ID of the child node.
GLsizei const GLchar ** string
void visitBreadthFirst(const TNodeID root, Visitor &user_visitor, const size_t root_depth_level=0) const
Breadth-first visit of all children nodes of a given root (itself excluded from the visit)...
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
TEdgeInfo(TNodeID child_id_, bool direction_child_to_parent=false, const TYPE_EDGES &edge_data=TYPE_EDGES())
Edge constructor from data.
TYPE_EDGES data
User data for this edge.
std::map< TNodeID, TListEdges > TMapNode2ListEdges
void clear()
Empty all edge data and set "root" to INVALID_NODEID.
GLsizei GLsizei GLenum GLenum const GLvoid * data
std::string getAsTextDescription() const
Return a text representation of the tree spanned in a depth-first view, as in this example: ...