39 #ifndef PCL_OUTOFCORE_DEPTH_FIRST_ITERATOR_IMPL_H_
40 #define PCL_OUTOFCORE_DEPTH_FIRST_ITERATOR_IMPL_H_
47 template<
typename Po
intT,
typename ContainerT>
50 , currentChildIdx_ (0)
59 template<
typename Po
intT,
typename ContainerT>
66 template<
typename Po
intT,
typename ContainerT>
71 if (this->currentNode_)
80 if (currentChildIdx_ < 8)
82 itNode = this->octree_.getBranchChildPtr (*currentBranch, currentChildIdx_);
85 while ((currentChildIdx_ < 7) && !(itNode))
89 itNode = this->octree_.getBranchChildPtr (*currentBranch, currentChildIdx_);
109 if (!stack_.empty ())
111 std::pair<OutofcoreOctreeBaseNode<ContainerT, PointT>*,
unsigned char>& stackEntry = stack_.back ();
114 this->currentNode_ = stackEntry.first;
115 currentChildIdx_ = stackEntry.second;
118 this->currentOctreeDepth_--;
122 this->currentNode_ =
nullptr;
128 std::pair<OutofcoreOctreeBaseNode<ContainerT, PointT>*,
unsigned char> newStackEntry;
129 newStackEntry.first = this->currentNode_;
130 newStackEntry.second =
static_cast<unsigned char> (currentChildIdx_+1);
132 stack_.push_back (newStackEntry);
136 this->currentOctreeDepth_++;
138 this->currentNode_ = itNode;
150 #endif //PCL_OUTOFCORE_DEPTH_FIRST_ITERATOR_IMPL_H_