KiCad PCB EDA Suite
Loading...
Searching...
No Matches
KIRTREE::DYNAMIC_RTREE< DATATYPE, ELEMTYPE, NUMDIMS, TMAXNODES >::SearchIterator Class Reference

Lazy iterator that traverses only nodes overlapping a query rectangle. More...

#include <dynamic_rtree.h>

Classes

struct  STACK_ENTRY
 

Public Types

using iterator_category = std::input_iterator_tag
 
using value_type = DATATYPE
 
using difference_type = ptrdiff_t
 
using pointer = const DATATYPE*
 
using reference = const DATATYPE&
 

Public Member Functions

 SearchIterator ()
 
 SearchIterator (NODE *aRoot, const ELEMTYPE aMin[NUMDIMS], const ELEMTYPE aMax[NUMDIMS])
 
const DATATYPE & operator* () const
 
SearchIteratoroperator++ ()
 
bool operator== (const SearchIterator &aOther) const
 
bool operator!= (const SearchIterator &aOther) const
 

Private Member Functions

void advance ()
 

Private Attributes

std::vector< STACK_ENTRYm_stack
 
ELEMTYPE m_min [NUMDIMS]
 
ELEMTYPE m_max [NUMDIMS]
 
DATATYPE m_current = {}
 
bool m_atEnd = true
 

Detailed Description

template<class DATATYPE, class ELEMTYPE = int, int NUMDIMS = 2, int TMAXNODES = 16>
class KIRTREE::DYNAMIC_RTREE< DATATYPE, ELEMTYPE, NUMDIMS, TMAXNODES >::SearchIterator

Lazy iterator that traverses only nodes overlapping a query rectangle.

Uses a small traversal stack rather than storing all results into a vector.

Definition at line 463 of file dynamic_rtree.h.

Member Typedef Documentation

◆ difference_type

template<class DATATYPE, class ELEMTYPE = int, int NUMDIMS = 2, int TMAXNODES = 16>
using KIRTREE::DYNAMIC_RTREE< DATATYPE, ELEMTYPE, NUMDIMS, TMAXNODES >::SearchIterator::difference_type = ptrdiff_t

Definition at line 468 of file dynamic_rtree.h.

◆ iterator_category

template<class DATATYPE, class ELEMTYPE = int, int NUMDIMS = 2, int TMAXNODES = 16>
using KIRTREE::DYNAMIC_RTREE< DATATYPE, ELEMTYPE, NUMDIMS, TMAXNODES >::SearchIterator::iterator_category = std::input_iterator_tag

Definition at line 466 of file dynamic_rtree.h.

◆ pointer

template<class DATATYPE, class ELEMTYPE = int, int NUMDIMS = 2, int TMAXNODES = 16>
using KIRTREE::DYNAMIC_RTREE< DATATYPE, ELEMTYPE, NUMDIMS, TMAXNODES >::SearchIterator::pointer = const DATATYPE*

Definition at line 469 of file dynamic_rtree.h.

◆ reference

template<class DATATYPE, class ELEMTYPE = int, int NUMDIMS = 2, int TMAXNODES = 16>
using KIRTREE::DYNAMIC_RTREE< DATATYPE, ELEMTYPE, NUMDIMS, TMAXNODES >::SearchIterator::reference = const DATATYPE&

Definition at line 470 of file dynamic_rtree.h.

◆ value_type

template<class DATATYPE, class ELEMTYPE = int, int NUMDIMS = 2, int TMAXNODES = 16>
using KIRTREE::DYNAMIC_RTREE< DATATYPE, ELEMTYPE, NUMDIMS, TMAXNODES >::SearchIterator::value_type = DATATYPE

Definition at line 467 of file dynamic_rtree.h.

Constructor & Destructor Documentation

◆ SearchIterator() [1/2]

template<class DATATYPE, class ELEMTYPE = int, int NUMDIMS = 2, int TMAXNODES = 16>
KIRTREE::DYNAMIC_RTREE< DATATYPE, ELEMTYPE, NUMDIMS, TMAXNODES >::SearchIterator::SearchIterator ( )
inline

Definition at line 472 of file dynamic_rtree.h.

References m_atEnd.

Referenced by operator!=(), operator++(), and operator==().

◆ SearchIterator() [2/2]

template<class DATATYPE, class ELEMTYPE = int, int NUMDIMS = 2, int TMAXNODES = 16>
KIRTREE::DYNAMIC_RTREE< DATATYPE, ELEMTYPE, NUMDIMS, TMAXNODES >::SearchIterator::SearchIterator ( NODE * aRoot,
const ELEMTYPE aMin[NUMDIMS],
const ELEMTYPE aMax[NUMDIMS] )
inline

Member Function Documentation

◆ advance()

template<class DATATYPE, class ELEMTYPE = int, int NUMDIMS = 2, int TMAXNODES = 16>
void KIRTREE::DYNAMIC_RTREE< DATATYPE, ELEMTYPE, NUMDIMS, TMAXNODES >::SearchIterator::advance ( )
inlineprivate

Definition at line 519 of file dynamic_rtree.h.

References m_atEnd, m_current, m_max, m_min, m_stack, and top().

Referenced by operator++(), and SearchIterator().

◆ operator!=()

template<class DATATYPE, class ELEMTYPE = int, int NUMDIMS = 2, int TMAXNODES = 16>
bool KIRTREE::DYNAMIC_RTREE< DATATYPE, ELEMTYPE, NUMDIMS, TMAXNODES >::SearchIterator::operator!= ( const SearchIterator & aOther) const
inline

Definition at line 507 of file dynamic_rtree.h.

References SearchIterator().

◆ operator*()

template<class DATATYPE, class ELEMTYPE = int, int NUMDIMS = 2, int TMAXNODES = 16>
const DATATYPE & KIRTREE::DYNAMIC_RTREE< DATATYPE, ELEMTYPE, NUMDIMS, TMAXNODES >::SearchIterator::operator* ( ) const
inline

Definition at line 494 of file dynamic_rtree.h.

References m_current.

◆ operator++()

template<class DATATYPE, class ELEMTYPE = int, int NUMDIMS = 2, int TMAXNODES = 16>
SearchIterator & KIRTREE::DYNAMIC_RTREE< DATATYPE, ELEMTYPE, NUMDIMS, TMAXNODES >::SearchIterator::operator++ ( )
inline

Definition at line 496 of file dynamic_rtree.h.

References advance(), and SearchIterator().

◆ operator==()

template<class DATATYPE, class ELEMTYPE = int, int NUMDIMS = 2, int TMAXNODES = 16>
bool KIRTREE::DYNAMIC_RTREE< DATATYPE, ELEMTYPE, NUMDIMS, TMAXNODES >::SearchIterator::operator== ( const SearchIterator & aOther) const
inline

Definition at line 502 of file dynamic_rtree.h.

References m_atEnd, and SearchIterator().

Member Data Documentation

◆ m_atEnd

template<class DATATYPE, class ELEMTYPE = int, int NUMDIMS = 2, int TMAXNODES = 16>
bool KIRTREE::DYNAMIC_RTREE< DATATYPE, ELEMTYPE, NUMDIMS, TMAXNODES >::SearchIterator::m_atEnd = true
private

Definition at line 572 of file dynamic_rtree.h.

Referenced by advance(), operator==(), SearchIterator(), and SearchIterator().

◆ m_current

template<class DATATYPE, class ELEMTYPE = int, int NUMDIMS = 2, int TMAXNODES = 16>
DATATYPE KIRTREE::DYNAMIC_RTREE< DATATYPE, ELEMTYPE, NUMDIMS, TMAXNODES >::SearchIterator::m_current = {}
private

Definition at line 571 of file dynamic_rtree.h.

Referenced by advance(), and operator*().

◆ m_max

template<class DATATYPE, class ELEMTYPE = int, int NUMDIMS = 2, int TMAXNODES = 16>
ELEMTYPE KIRTREE::DYNAMIC_RTREE< DATATYPE, ELEMTYPE, NUMDIMS, TMAXNODES >::SearchIterator::m_max[NUMDIMS]
private

Definition at line 570 of file dynamic_rtree.h.

Referenced by advance(), and SearchIterator().

◆ m_min

template<class DATATYPE, class ELEMTYPE = int, int NUMDIMS = 2, int TMAXNODES = 16>
ELEMTYPE KIRTREE::DYNAMIC_RTREE< DATATYPE, ELEMTYPE, NUMDIMS, TMAXNODES >::SearchIterator::m_min[NUMDIMS]
private

Definition at line 569 of file dynamic_rtree.h.

Referenced by advance(), and SearchIterator().

◆ m_stack

template<class DATATYPE, class ELEMTYPE = int, int NUMDIMS = 2, int TMAXNODES = 16>
std::vector<STACK_ENTRY> KIRTREE::DYNAMIC_RTREE< DATATYPE, ELEMTYPE, NUMDIMS, TMAXNODES >::SearchIterator::m_stack
private

Definition at line 568 of file dynamic_rtree.h.

Referenced by advance(), and SearchIterator().


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