15 #ifndef GEOS_INDEX_STRTREE_ABSTRACTSTRTREE_H
16 #define GEOS_INDEX_STRTREE_ABSTRACTSTRTREE_H
18 #include <geos/export.h>
20 #include <geos/index/strtree/AbstractNode.h>
57 ItemsListItem(
void* item_)
62 ItemsListItem(ItemsList* item_)
77 assert(t == item_is_geometry);
83 assert(t == item_is_list);
94 class ItemsList :
public std::vector<ItemsListItem> {
96 typedef std::vector<ItemsListItem> base_type;
99 delete_item(ItemsListItem& item)
101 if(ItemsListItem::item_is_list == item.t) {
109 std::for_each(begin(), end(), &ItemsList::delete_item);
114 push_back(
void* item)
116 this->base_type::push_back(ItemsListItem(item));
121 push_back_owned(ItemsList* itemList)
123 this->base_type::push_back(ItemsListItem(itemList));
159 std::unique_ptr<BoundableList> sortBoundablesY(
const BoundableList* input);
161 bool remove(
const void* searchBounds,
AbstractNode& node,
void* item);
187 const void* bBounds) = 0;
195 std::vector <AbstractNode*>* nodes;
210 assert(!nodeList->empty());
223 virtual void insert(
const void* bounds,
void* item);
226 void query(
const void* searchBounds, std::vector<void*>& foundItems);
234 bool remove(
const void* itemEnv,
void* item);
236 std::unique_ptr<BoundableList> boundablesAtLevel(
int level);
239 std::size_t nodeCapacity;
261 nodeCapacity(newNodeCapacity)
263 assert(newNodeCapacity > 1);
287 virtual void query(
const void* searchBounds,
const AbstractNode* node, std::vector<void*>* matches);
A visitor for items in an index.
Definition: ItemVisitor.h:29
A node of the STR tree.
Definition: AbstractNode.h:44
A test for intersection between two bounds, necessary because subclasses of AbstractSTRtree have diff...
Definition: AbstractSTRtree.h:176
virtual bool intersects(const void *aBounds, const void *bBounds)=0
Base class for STRtree and SIRtree.
Definition: AbstractSTRtree.h:139
void iterate(ItemVisitor &visitor)
virtual void insert(const void *bounds, void *item)
Also builds the tree, if necessary.
void query(const void *searchBounds, ItemVisitor &visitor)
Also builds the tree, if necessary.
AbstractSTRtree(std::size_t newNodeCapacity)
Constructs an AbstractSTRtree with the specified maximum number of child nodes that a node may have.
Definition: AbstractSTRtree.h:256
bool remove(const void *itemEnv, void *item)
Also builds the tree, if necessary.
void query(const void *searchBounds, std::vector< void * > &foundItems)
Also builds the tree, if necessary.
virtual std::size_t getNodeCapacity()
Returns the maximum number of child nodes that a node may have.
Definition: AbstractSTRtree.h:282
virtual IntersectsOp * getIntersectsOp()=0
virtual std::unique_ptr< BoundableList > createParentBoundables(BoundableList *childBoundables, int newLevel)
Sorts the childBoundables then divides them into groups of size M, where M is the node capacity.
virtual void boundablesAtLevel(int level, AbstractNode *top, BoundableList *boundables)
ItemsList * itemsTree()
Gets a tree structure (as a nested list) corresponding to the structure of the items and nodes in thi...
virtual void build()
Creates parent nodes, grandparent nodes, and so forth up to the root node, for the data that has been...
std::vector< Boundable * > BoundableList
A list of boundables. TODO: use a list.
Definition: AbstractSTRtree.h:44
Basic namespace for all GEOS functionalities.
Definition: IndexedNestedRingTester.h:26