_Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node > Class Template Reference
[Classes and types for internal use]

automatic tree walkers More...

#include <vgtl_tree.h>

Inheritance diagram for _Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >:

Inheritance graph
[legend]
Collaboration diagram for _Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >:

Collaboration graph
[legend]

List of all members.

Public Types

typedef _Tp value_type
typedef _Ptr pointer
typedef _Ref reference
typedef __one_iterator< void * > parents_iterator
typedef _Ctr_iterator children_iterator
typedef _Node node_type
typedef size_t size_type
typedef ptrdiff_t difference_type

Public Member Functions

 _Tree_walker ()
 _Tree_walker (_Node *__x, int order=(_C_W_preorder|_C_W_postorder), bool front_to_back=true, bool depth_first=true, bool find_start=true)
 _Tree_walker (const walker &__x)
_Self operator<< (const parents_iterator &__dummy)
 go to parent operator
_Self operator>> (const children_iterator &__i)
 go to child operator
_Selfoperator<<= (const parents_iterator &__dummy)
_Selfoperator>>= (const children_iterator &__i)
_Selfoperator~ ()
_Selfoperator= (const _Itr &__x)
bool in_preorder ()
reference operator* () const
pointer operator-> () const
ctree_data_hookdata_hook ()
ctree_data_hookparent_data_hook ()
const _Node * parent ()
const _Node * node ()
size_type n_children ()
size_type n_parents ()
bool is_leaf ()
bool is_root ()
bool is_ground ()
bool is_sky ()
children_iterator child_begin ()
children_iterator child_end ()
parents_iterator parent_begin ()
parents_iterator parent_end ()
_Function for_each_child (_Function __f)
_Function for_each_parent (_Function __f)
void sort_children (children_iterator first, children_iterator last, Compare comp)
void sort_children (Compare comp)
void sort_parents (parents_iterator first, parents_iterator last, Compare comp)
void sort_parents (Compare comp)
bool operator== (const _Self &__x) const
bool operator!= (const _Self &__x) const
_Selfoperator++ ()
_Self operator++ (int)
_Selfoperator-- ()
_Self operator-- (int)

Public Attributes

struct {
_C_w_t
bool _C_w_in_preorder
std::vector< _Iterator > _C_w_cur_it
_Node * _C_w_cur


Detailed Description

template<class _Tp, class _Ref, class _Ptr, class _Ctr, class _Iterator, class _Node>
class _Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >

This is the class defining automatic (iterative) tree walkers, which walk trees without guidance.

Definition at line 360 of file vgtl_tree.h.


Member Typedef Documentation

typedef _Ctr_iterator _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::children_iterator [inherited]

standard walker definition

Definition at line 243 of file vgtl_tree.h.

typedef ptrdiff_t _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::difference_type [inherited]

standard walker definition

Definition at line 247 of file vgtl_tree.h.

typedef _Node _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::node_type [inherited]

standard walker definition

Definition at line 244 of file vgtl_tree.h.

typedef __one_iterator<void *> _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::parents_iterator [inherited]

standard walker definition

Definition at line 242 of file vgtl_tree.h.

typedef _Ptr _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::pointer [inherited]

standard walker definition

Definition at line 233 of file vgtl_tree.h.

typedef _Ref _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::reference [inherited]

standard walker definition

Definition at line 234 of file vgtl_tree.h.

typedef size_t _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::size_type [inherited]

standard walker definition

Definition at line 246 of file vgtl_tree.h.

typedef _Tp _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::value_type [inherited]

standard walker definition

Definition at line 232 of file vgtl_tree.h.


Constructor & Destructor Documentation

template<class _Tp, class _Ref, class _Ptr, class _Ctr, class _Iterator, class _Node>
_Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >::_Tree_walker (  )  [inline]

standard constructor

Definition at line 381 of file vgtl_tree.h.

template<class _Tp, class _Ref, class _Ptr, class _Ctr, class _Iterator, class _Node>
_Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >::_Tree_walker ( _Node *  __x,
int  order = (_C_W_preorder|_C_W_postorder),
bool  front_to_back = true,
bool  depth_first = true,
bool  find_start = true 
) [inline]

This is the main constructor for an automatic walker. It sets the starting position and, optionally, the walker type.

Definition at line 406 of file vgtl_tree.h.

template<class _Tp, class _Ref, class _Ptr, class _Ctr, class _Iterator, class _Node>
_Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >::_Tree_walker ( const walker __x  )  [inline]

copy constructor

Definition at line 423 of file vgtl_tree.h.


Member Function Documentation

children_iterator _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::child_begin (  )  [inline, inherited]

return children_iterator to first child

Definition at line 307 of file vgtl_tree.h.

children_iterator _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::child_end (  )  [inline, inherited]

return children_iterator beyond last child

Definition at line 309 of file vgtl_tree.h.

ctree_data_hook& _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::data_hook (  )  [inline, inherited]

retrieve the data hook

Definition at line 280 of file vgtl_tree.h.

_Function _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::for_each_child ( _Function  __f  )  [inline, inherited]

apply the function __f to all children

Definition at line 320 of file vgtl_tree.h.

_Function _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::for_each_parent ( _Function  __f  )  [inline, inherited]

apply the function __f to all parents

Definition at line 326 of file vgtl_tree.h.

template<class _Tp, class _Ref, class _Ptr, class _Ctr, class _Iterator, class _Node>
bool _Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >::in_preorder (  )  [inline]

are we in the preorder phase of a pre+post walk?

Definition at line 587 of file vgtl_tree.h.

bool _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::is_ground (  )  [inline, inherited]

is this node a virtual node - the ground (below all roots)?

Definition at line 302 of file vgtl_tree.h.

bool _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::is_leaf (  )  [inline, inherited]

is this node a leaf?

Definition at line 296 of file vgtl_tree.h.

bool _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::is_root (  )  [inline, inherited]

is this node a root?

Definition at line 298 of file vgtl_tree.h.

bool _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::is_sky (  )  [inline, inherited]

is this node a virtual node - the sky (above all leafs)?

Definition at line 304 of file vgtl_tree.h.

size_type _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::n_children (  )  [inline, inherited]

return the number of children

Definition at line 291 of file vgtl_tree.h.

size_type _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::n_parents (  )  [inline, inherited]

return the number of parents (0 or 1)

Definition at line 293 of file vgtl_tree.h.

const _Node * _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::node (  )  [inline, inherited]

retrieve the full node

Definition at line 288 of file vgtl_tree.h.

template<class _Tp, class _Ref, class _Ptr, class _Ctr, class _Iterator, class _Node>
bool _Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >::operator!= ( const _Self __x  )  const [inline]

comparison operator

Definition at line 439 of file vgtl_tree.h.

reference _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::operator* (  )  const [inline, inherited]

dereference operator

Definition at line 265 of file vgtl_tree.h.

template<class _Tp, class _Ref, class _Ptr, class _Ctr, class _Iterator, class _Node>
_Self _Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >::operator++ ( int   )  [inline]

in(de)crement operator

Definition at line 474 of file vgtl_tree.h.

template<class _Tp, class _Ref, class _Ptr, class _Ctr, class _Iterator, class _Node>
_Self& _Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >::operator++ (  )  [inline]

in(de)crement operator

Definition at line 452 of file vgtl_tree.h.

template<class _Tp, class _Ref, class _Ptr, class _Ctr, class _Iterator, class _Node>
_Self _Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >::operator-- ( int   )  [inline]

in(de)crement operator

Definition at line 502 of file vgtl_tree.h.

template<class _Tp, class _Ref, class _Ptr, class _Ctr, class _Iterator, class _Node>
_Self& _Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >::operator-- (  )  [inline]

in(de)crement operator

Definition at line 480 of file vgtl_tree.h.

pointer _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::operator-> (  )  const [inline, inherited]

pointer operator

Definition at line 269 of file vgtl_tree.h.

template<class _Tp, class _Ref, class _Ptr, class _Ctr, class _Iterator, class _Node>
_Self _Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >::operator<< ( const parents_iterator __dummy  )  [inline]

This operator moves the walker to the parent

Definition at line 511 of file vgtl_tree.h.

template<class _Tp, class _Ref, class _Ptr, class _Ctr, class _Iterator, class _Node>
_Self& _Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >::operator<<= ( const parents_iterator __dummy  )  [inline]

go to parent assignment operator

Definition at line 542 of file vgtl_tree.h.

template<class _Tp, class _Ref, class _Ptr, class _Ctr, class _Iterator, class _Node>
_Self& _Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >::operator= ( const _Itr __x  )  [inline]

assignment from iterator

Reimplemented from _Tree_walker_base< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >.

Definition at line 577 of file vgtl_tree.h.

template<class _Tp, class _Ref, class _Ptr, class _Ctr, class _Iterator, class _Node>
bool _Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >::operator== ( const _Self __x  )  const [inline]

comparison operator

Definition at line 431 of file vgtl_tree.h.

template<class _Tp, class _Ref, class _Ptr, class _Ctr, class _Iterator, class _Node>
_Self _Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >::operator>> ( const children_iterator __i  )  [inline]

This operator moves the walker to the child pointed to by __i

Definition at line 531 of file vgtl_tree.h.

template<class _Tp, class _Ref, class _Ptr, class _Ctr, class _Iterator, class _Node>
_Self& _Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >::operator>>= ( const children_iterator __i  )  [inline]

go to child assignment operator

Definition at line 560 of file vgtl_tree.h.

template<class _Tp, class _Ref, class _Ptr, class _Ctr, class _Iterator, class _Node>
_Self& _Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >::operator~ (  )  [inline]

switch from preorder to postorder phase

Definition at line 570 of file vgtl_tree.h.

const _Node * _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::parent (  )  [inline, inherited]

retrieve the parent node

Definition at line 286 of file vgtl_tree.h.

parents_iterator _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::parent_begin (  )  [inline, inherited]

return parents_iterator to first parent (the parent)

Definition at line 312 of file vgtl_tree.h.

ctree_data_hook& _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::parent_data_hook (  )  [inline, inherited]

retrieve the parent's data hook

Definition at line 282 of file vgtl_tree.h.

parents_iterator _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::parent_end (  )  [inline, inherited]

return parents_iterator beyond last parent

Definition at line 315 of file vgtl_tree.h.

void _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::sort_children ( Compare  comp  )  [inline, inherited]

sort all children according to comp

Definition at line 344 of file vgtl_tree.h.

void _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::sort_children ( children_iterator  first,
children_iterator  last,
Compare  comp 
) [inline, inherited]

sort the children in the range [first,last) according to comp

Definition at line 333 of file vgtl_tree.h.

void _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::sort_parents ( Compare  comp  )  [inline, inherited]

sort all parents according to comp (NOP = do nothing)

Definition at line 349 of file vgtl_tree.h.

void _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::sort_parents ( parents_iterator  first,
parents_iterator  last,
Compare  comp 
) [inline, inherited]

sort the parents in the range [first,last) according to comp (NOP)

Definition at line 339 of file vgtl_tree.h.


Member Data Documentation

_Node * _Tree_walker_base< _Tp , _Ref , _Ptr , _Ctr , _Iterator , _Node >::_C_w_cur [inherited]

pointer to the current node

Definition at line 252 of file vgtl_tree.h.

template<class _Tp, class _Ref, class _Ptr, class _Ctr, class _Iterator, class _Node>
std::vector<_Iterator> _Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >::_C_w_cur_it

internal stack

Definition at line 377 of file vgtl_tree.h.

template<class _Tp, class _Ref, class _Ptr, class _Ctr, class _Iterator, class _Node>
bool _Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >::_C_w_in_preorder

walker is in preorder mode?

Definition at line 375 of file vgtl_tree.h.

struct { ... } _Tree_walker< _Tp, _Ref, _Ptr, _Ctr, _Iterator, _Node >::_C_w_t

walker type (order, front to back/back to front, depth/breath first


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

Generated on Tue Feb 9 14:42:36 2010 for Vienna Graph Template Library by  doxygen 1.5.8