19 #ifndef GEOS_IDX_QUADTREE_NODEBASE_H
20 #define GEOS_IDX_QUADTREE_NODEBASE_H
22 #include <geos/export.h>
29 #pragma warning(disable: 4251)
71 std::vector<void*>& getItems();
78 std::vector<void*>&
addAllItems(std::vector<void*>& resultItems)
const;
80 virtual void addAllItemsFromOverlapping(
const geom::Envelope& searchEnv,
81 std::vector<void*>& resultItems)
const;
83 unsigned int depth()
const;
87 size_t getNodeCount()
const;
89 virtual std::string toString()
const;
102 bool hasItems()
const;
104 bool hasChildren()
const;
106 bool isPrunable()
const;
125 virtual bool isSearchMatch(
const geom::Envelope& searchEnv)
const = 0;
132 NodeBase::hasChildren()
const
134 for(
const auto& subnode :
subnodes) {
135 if(subnode !=
nullptr) {
144 NodeBase::isPrunable()
const
146 return !(hasChildren() || hasItems());
150 NodeBase::hasItems()
const
152 return !
items.empty();
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:60
An Envelope defines a rectangulare region of the 2D coordinate plane.
Definition: Envelope.h:58
A visitor for items in an index.
Definition: ItemVisitor.h:29
The base class for nodes in a Quadtree.
Definition: quadtree/NodeBase.h:55
std::vector< void * > & addAllItems(std::vector< void * > &resultItems) const
Push all node items to the given vector, return the argument.
std::array< Node *, 4 > subnodes
Definition: quadtree/NodeBase.h:123
std::vector< void * > items
Actual items are NOT owned by this class.
Definition: quadtree/NodeBase.h:111
bool remove(const geom::Envelope *itemEnv, void *item)
Basic namespace for all GEOS functionalities.
Definition: IndexedNestedRingTester.h:26