Krita Source Code Documentation
Loading...
Searching...
No Matches
KisForestDetail::HierarchyIterator< T, is_const > Class Template Reference

#include <KisForest.h>

+ Inheritance diagram for KisForestDetail::HierarchyIterator< T, is_const >:

Public Types

using NodeType = typename BaseClass::NodeType
 
using RootNodeType = std::add_const_if_t<is_const, RootNode<T>>
 
- Public Types inherited from KisForestDetail::BaseIterator< HierarchyIterator< T, is_const >, T, boost::forward_traversal_tag, is_const >
using NodeType
 
using value_type
 

Public Member Functions

 HierarchyIterator (NodeType *node)
 
 operator HierarchyIterator< T, true > () const
 
- Public Member Functions inherited from KisForestDetail::BaseIterator< HierarchyIterator< T, is_const >, T, boost::forward_traversal_tag, is_const >
 BaseIterator (NodeType *node)
 
NodeTypenode () const
 

Private Types

using BaseClass
 

Private Member Functions

void increment ()
 

Friends

class boost::iterator_core_access
 

Additional Inherited Members

- Protected Attributes inherited from KisForestDetail::BaseIterator< HierarchyIterator< T, is_const >, T, boost::forward_traversal_tag, is_const >
NodeTypem_node
 

Detailed Description

template<typename T, bool is_const>
class KisForestDetail::HierarchyIterator< T, is_const >

Hierarchy iterator is used to traverse from the current node to the root of the current subtree of the forest. It models ForwardIterator concept.

// Forest:
//
// 0 1
// 2
// 3 5 6
// 7
// 4
// 8 9
// 10
KisForest<int>::iterator nodeIt = findValue(forest, 5);
// print all the parent nodes for nodeIt, including nodeIt itself
for (auto it = hierarchyBegin(nodeIt); it != hierarchyEnd(nodeIt); ++it) {
qDebug() << *it;
}
// prints: 5,3,0
ResultIterator hierarchyBegin(Iterator it)
Definition KisForest.h:419
ResultIterator hierarchyEnd(Iterator it)
Definition KisForest.h:427

WARNING: converting end() iterator to other iterator types currently leads to undefined behavior.

Definition at line 381 of file KisForest.h.

Member Typedef Documentation

◆ BaseClass

template<typename T , bool is_const>
using KisForestDetail::HierarchyIterator< T, is_const >::BaseClass
private
Initial value:
BaseIterator <HierarchyIterator<T, is_const>,
T,
boost::forward_traversal_tag,
is_const>

Definition at line 387 of file KisForest.h.

◆ NodeType

template<typename T , bool is_const>
using KisForestDetail::HierarchyIterator< T, is_const >::NodeType = typename BaseClass::NodeType

Definition at line 393 of file KisForest.h.

◆ RootNodeType

template<typename T , bool is_const>
using KisForestDetail::HierarchyIterator< T, is_const >::RootNodeType = std::add_const_if_t<is_const, RootNode<T>>

Definition at line 392 of file KisForest.h.

Constructor & Destructor Documentation

◆ HierarchyIterator()

template<typename T , bool is_const>
KisForestDetail::HierarchyIterator< T, is_const >::HierarchyIterator ( NodeType * node)
inline

Definition at line 395 of file KisForest.h.

396 : BaseClass(node)
397 {
398 }
BaseIterator< HierarchyIterator< T, is_const >, T, boost::forward_traversal_tag, is_const > BaseClass
Definition KisForest.h:387

Member Function Documentation

◆ increment()

template<typename T , bool is_const>
void KisForestDetail::HierarchyIterator< T, is_const >::increment ( )
inlineprivate

Definition at line 407 of file KisForest.h.

407 {
408 RootNodeType *parent = this->m_node->parent;
409 this->m_node =
410 static_cast<NodeType*>(
411 parent && !parent->isRoot() ?
412 parent : nullptr);
413 }
std::add_const_if_t< is_const, RootNode< T > > RootNodeType
Definition KisForest.h:392
typename BaseClass::NodeType NodeType
Definition KisForest.h:393
ChildIterator< value_type, is_const > parent(const ChildIterator< value_type, is_const > &it)
Definition KisForest.h:327

References KisForestDetail::BaseIterator< HierarchyIterator< T, is_const >, T, boost::forward_traversal_tag, is_const >::m_node, and KisForestDetail::parent().

◆ operator HierarchyIterator< T, true >()

template<typename T , bool is_const>
KisForestDetail::HierarchyIterator< T, is_const >::operator HierarchyIterator< T, true > ( ) const
inline

Definition at line 400 of file KisForest.h.

400 {
401 return HierarchyIterator<T, true>(this->m_node);
402 }

References KisForestDetail::BaseIterator< HierarchyIterator< T, is_const >, T, boost::forward_traversal_tag, is_const >::m_node.

Friends And Related Symbol Documentation

◆ boost::iterator_core_access

template<typename T , bool is_const>
friend class boost::iterator_core_access
friend

Definition at line 405 of file KisForest.h.


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