/src/geos/include/geos/index/strtree/TemplateSTRtree.h
Line | Count | Source (jump to first uncovered line) |
1 | | /********************************************************************** |
2 | | * |
3 | | * GEOS - Geometry Engine Open Source |
4 | | * http://geos.osgeo.org |
5 | | * |
6 | | * Copyright (C) 2020-2021 Daniel Baston |
7 | | * |
8 | | * This is free software; you can redistribute and/or modify it under |
9 | | * the terms of the GNU Lesser General Public Licence as published |
10 | | * by the Free Software Foundation. |
11 | | * See the COPYING file for more information. |
12 | | * |
13 | | **********************************************************************/ |
14 | | |
15 | | #pragma once |
16 | | |
17 | | #include <geos/geom/Geometry.h> |
18 | | #include <geos/index/SpatialIndex.h> // for inheritance |
19 | | #include <geos/index/chain/MonotoneChain.h> |
20 | | #include <geos/index/ItemVisitor.h> |
21 | | #include <geos/util.h> |
22 | | |
23 | | #include <geos/index/strtree/TemplateSTRNode.h> |
24 | | #include <geos/index/strtree/TemplateSTRNodePair.h> |
25 | | #include <geos/index/strtree/TemplateSTRtreeDistance.h> |
26 | | #include <geos/index/strtree/Interval.h> |
27 | | |
28 | | #include <vector> |
29 | | #include <queue> |
30 | | #include <mutex> |
31 | | |
32 | | namespace geos { |
33 | | namespace index { |
34 | | namespace strtree { |
35 | | |
36 | | /** |
37 | | * \brief |
38 | | * A query-only R-tree created using the Sort-Tile-Recursive (STR) algorithm. |
39 | | * For one- or two-dimensional spatial data. |
40 | | * |
41 | | * The STR packed R-tree is simple to implement and maximizes space |
42 | | * utilization; that is, as many leaves as possible are filled to capacity. |
43 | | * Overlap between nodes is far less than in a basic R-tree. However, once the |
44 | | * tree has been built (explicitly or on the first call to `query`), items may |
45 | | * not be added or removed. |
46 | | * |
47 | | * A user will instantiate `TemplateSTRtree` instead of `TemplateSTRtreeImpl`; |
48 | | * this structure is used so that `TemplateSTRtree` can implement the |
49 | | * requirements of the `SpatialIndex` interface, which is only possible when |
50 | | * `ItemType` is a pointer. |
51 | | * |
52 | | * Described in: P. Rigaux, Michel Scholl and Agnes Voisard. Spatial |
53 | | * Databases With Application To GIS. Morgan Kaufmann, San Francisco, 2002. |
54 | | * |
55 | | */ |
56 | | template<typename ItemType, typename BoundsTraits> |
57 | | class TemplateSTRtreeImpl { |
58 | | public: |
59 | | using Node = TemplateSTRNode<ItemType, BoundsTraits>; |
60 | | using NodeList = std::vector<Node>; |
61 | | using NodeListIterator = typename NodeList::iterator; |
62 | | using BoundsType = typename BoundsTraits::BoundsType; |
63 | | |
64 | | class Iterator { |
65 | | public: |
66 | | using iterator_category = std::forward_iterator_tag; |
67 | | using value_type = ItemType; |
68 | | using difference_type = typename NodeList::const_iterator::difference_type; |
69 | | using pointer = ItemType*; |
70 | | using reference = ItemType&; |
71 | | |
72 | | Iterator(typename NodeList::const_iterator&& iter, |
73 | 7.44k | typename NodeList::const_iterator&& end) : m_iter(iter), m_end(end) { |
74 | 7.44k | skipDeleted(); |
75 | 7.44k | } |
76 | | |
77 | 2.67M | const ItemType& operator*() const { |
78 | 2.67M | return m_iter->getItem(); |
79 | 2.67M | } |
80 | | |
81 | 5.34M | Iterator& operator++() { |
82 | 5.34M | m_iter++; |
83 | 5.34M | skipDeleted(); |
84 | 5.34M | return *this; |
85 | 5.34M | } |
86 | | |
87 | | friend bool operator==(const Iterator& a, const Iterator& b) { |
88 | | return a.m_iter == b.m_iter; |
89 | | } |
90 | | |
91 | 5.35M | friend bool operator!=(const Iterator& a, const Iterator& b) { |
92 | 5.35M | return a.m_iter != b.m_iter; |
93 | 5.35M | } |
94 | | |
95 | | private: |
96 | 5.35M | void skipDeleted() { |
97 | 5.35M | while(m_iter != m_end && m_iter->isDeleted()) { |
98 | 0 | m_iter++; |
99 | 0 | } |
100 | 5.35M | } |
101 | | |
102 | | typename NodeList::const_iterator m_iter; |
103 | | typename NodeList::const_iterator m_end; |
104 | | }; |
105 | | |
106 | | class Items { |
107 | | public: |
108 | 7.44k | explicit Items(TemplateSTRtreeImpl& tree) : m_tree(tree) {} |
109 | | |
110 | 3.72k | Iterator begin() { |
111 | 3.72k | return Iterator(m_tree.nodes.cbegin(), |
112 | 3.72k | std::next(m_tree.nodes.cbegin(), static_cast<long>(m_tree.numItems))); |
113 | 3.72k | } |
114 | | |
115 | 3.72k | Iterator end() { |
116 | 3.72k | return Iterator(std::next(m_tree.nodes.cbegin(), static_cast<long>(m_tree.numItems)), |
117 | 3.72k | std::next(m_tree.nodes.cbegin(), static_cast<long>(m_tree.numItems))); |
118 | 3.72k | } |
119 | | private: |
120 | | TemplateSTRtreeImpl& m_tree; |
121 | | }; |
122 | | |
123 | | /// \defgroup construct Constructors |
124 | | /// @{ |
125 | | |
126 | | /** |
127 | | * Constructs a tree with the given maximum number of child nodes that |
128 | | * a node may have. |
129 | | */ |
130 | | explicit TemplateSTRtreeImpl(size_t p_nodeCapacity = 10) : |
131 | | root(nullptr), |
132 | | nodeCapacity(p_nodeCapacity), |
133 | | numItems(0) |
134 | 393k | {}Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::TemplateSTRtreeImpl(unsigned long) geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::TemplateSTRtreeImpl(unsigned long) Line | Count | Source | 134 | 16.7k | {} |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::TemplateSTRtreeImpl(unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::TemplateSTRtreeImpl(unsigned long) geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::TemplateSTRtreeImpl(unsigned long) Line | Count | Source | 134 | 376k | {} |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::TemplateSTRtreeImpl(unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::TemplateSTRtreeImpl(unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::TemplateSTRtreeImpl(unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::TemplateSTRtreeImpl(unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::TemplateSTRtreeImpl(unsigned long) |
135 | | |
136 | | /** |
137 | | * Constructs a tree with the given maximum number of child nodes that |
138 | | * a node may have, with the expected total number of items in the tree used |
139 | | * to pre-allocate storage. |
140 | | */ |
141 | | TemplateSTRtreeImpl(size_t p_nodeCapacity, size_t itemCapacity) : |
142 | | root(nullptr), |
143 | | nodeCapacity(p_nodeCapacity), |
144 | 20.4k | numItems(0) { |
145 | 20.4k | auto finalSize = treeSize(itemCapacity); |
146 | 20.4k | nodes.reserve(finalSize); |
147 | 20.4k | } geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::TemplateSTRtreeImpl(unsigned long, unsigned long) Line | Count | Source | 144 | 16.7k | numItems(0) { | 145 | 16.7k | auto finalSize = treeSize(itemCapacity); | 146 | 16.7k | nodes.reserve(finalSize); | 147 | 16.7k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::TemplateSTRtreeImpl(unsigned long, unsigned long) geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::TemplateSTRtreeImpl(unsigned long, unsigned long) Line | Count | Source | 144 | 3.72k | numItems(0) { | 145 | 3.72k | auto finalSize = treeSize(itemCapacity); | 146 | 3.72k | nodes.reserve(finalSize); | 147 | 3.72k | } |
|
148 | | |
149 | | /** |
150 | | * Copy constructor, needed because mutex is not copyable |
151 | | */ |
152 | | TemplateSTRtreeImpl(const TemplateSTRtreeImpl& other) : |
153 | | root(other.root), |
154 | | nodeCapacity(other.nodeCapacity), |
155 | 16.7k | numItems(other.numItems) { |
156 | 16.7k | nodes = other.nodes; |
157 | 16.7k | } |
158 | | |
159 | | TemplateSTRtreeImpl& operator=(TemplateSTRtreeImpl other) |
160 | 16.7k | { |
161 | 16.7k | root = other.root; |
162 | 16.7k | nodeCapacity = other.nodeCapacity; |
163 | 16.7k | numItems = other.numItems; |
164 | 16.7k | nodes = other.nodes; |
165 | 16.7k | return *this; |
166 | 16.7k | } |
167 | | |
168 | | /// @} |
169 | | /// \defgroup insert Insertion |
170 | | /// @{ |
171 | | |
172 | | /** Move the given item into the tree */ |
173 | 2.67M | void insert(ItemType&& item) { |
174 | 2.67M | insert(BoundsTraits::fromItem(item), std::forward<ItemType>(item)); |
175 | 2.67M | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::insert(geos::coverage::TPVWSimplifier::Edge const*&&) geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Geometry const*&&) Line | Count | Source | 173 | 2.67M | void insert(ItemType&& item) { | 174 | 2.67M | insert(BoundsTraits::fromItem(item), std::forward<ItemType>(item)); | 175 | 2.67M | } |
|
176 | | |
177 | | /** Insert a copy of the given item into the tree */ |
178 | 0 | void insert(const ItemType& item) { |
179 | 0 | insert(BoundsTraits::fromItem(item), item); |
180 | 0 | } |
181 | | |
182 | | /** Move the given item into the tree */ |
183 | 51.0M | void insert(const BoundsType& itemEnv, ItemType&& item) { |
184 | 51.0M | if (!BoundsTraits::isNull(itemEnv)) { |
185 | 48.9M | createLeafNode(std::forward<ItemType>(item), itemEnv); |
186 | 48.9M | } |
187 | 51.0M | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const&, void*&&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const&, geos::operation::distance::FacetSequence const*&&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const&, geos::algorithm::locate::IndexedPointInAreaLocator*&&) geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const&, geos::geom::Geometry const*&&) Line | Count | Source | 183 | 2.67M | void insert(const BoundsType& itemEnv, ItemType&& item) { | 184 | 2.67M | if (!BoundsTraits::isNull(itemEnv)) { | 185 | 2.67M | createLeafNode(std::forward<ItemType>(item), itemEnv); | 186 | 2.67M | } | 187 | 2.67M | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const&, geos::coverage::TPVWSimplifier::Edge const*&&) geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const&, geos::index::chain::MonotoneChain const*&&) Line | Count | Source | 183 | 48.3M | void insert(const BoundsType& itemEnv, ItemType&& item) { | 184 | 48.3M | if (!BoundsTraits::isNull(itemEnv)) { | 185 | 46.2M | createLeafNode(std::forward<ItemType>(item), itemEnv); | 186 | 46.2M | } | 187 | 48.3M | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const&, geos::operation::polygonize::EdgeRing*&&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const&, geos::geom::LinearRing const*&&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const&, geos::geom::Polygon const*&&) |
188 | | |
189 | | /** Insert a copy of the given item into the tree */ |
190 | 6.12M | void insert(const BoundsType& itemEnv, const ItemType& item) { |
191 | 6.12M | if (!BoundsTraits::isNull(itemEnv)) { |
192 | 6.12M | createLeafNode(item, itemEnv); |
193 | 6.12M | } |
194 | 6.12M | } geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::insert(geos::index::strtree::Interval const&, geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView const&) Line | Count | Source | 190 | 6.12M | void insert(const BoundsType& itemEnv, const ItemType& item) { | 191 | 6.12M | if (!BoundsTraits::isNull(itemEnv)) { | 192 | 6.12M | createLeafNode(item, itemEnv); | 193 | 6.12M | } | 194 | 6.12M | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const&, geos::geom::Geometry const* const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const&, unsigned long const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const&, geos::geom::LinearRing const* const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const&, geos::geom::Polygon const* const&) |
195 | | |
196 | | /// @} |
197 | | /// \defgroup NN Nearest-neighbor |
198 | | /// @{ |
199 | | |
200 | | /** Determine the two closest items in the tree using distance metric `distance`. */ |
201 | | template<typename ItemDistance> |
202 | 0 | std::pair<ItemType, ItemType> nearestNeighbour(ItemDistance& distance) { |
203 | 0 | return nearestNeighbour(*this, distance); |
204 | 0 | } |
205 | | |
206 | | /** Determine the two closest items in the tree using distance metric `ItemDistance`. */ |
207 | | template<typename ItemDistance> |
208 | | std::pair<ItemType, ItemType> nearestNeighbour() { |
209 | | return nearestNeighbour(*this); |
210 | | } |
211 | | |
212 | | /** Determine the two closest items this tree and `other` tree using distance metric `distance`. */ |
213 | | template<typename ItemDistance> |
214 | | std::pair<ItemType, ItemType> nearestNeighbour(TemplateSTRtreeImpl<ItemType, BoundsTraits> & other, |
215 | 0 | ItemDistance & distance) { |
216 | 0 | if (!getRoot() || !other.getRoot()) { |
217 | 0 | return { nullptr, nullptr }; |
218 | 0 | } |
219 | | |
220 | 0 | TemplateSTRtreeDistance<ItemType, BoundsTraits, ItemDistance> td(distance); |
221 | 0 | return td.nearestNeighbour(*root, *other.root); |
222 | 0 | } Unexecuted instantiation: std::__1::pair<geos::operation::distance::FacetSequence const*, geos::operation::distance::FacetSequence const*> geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::nearestNeighbour<geos::operation::distance::IndexedFacetDistance::FacetDistance>(geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>&, geos::operation::distance::IndexedFacetDistance::FacetDistance&) Unexecuted instantiation: MinimumClearance.cpp:std::__1::pair<geos::operation::distance::FacetSequence const*, geos::operation::distance::FacetSequence const*> geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::nearestNeighbour<geos::precision::MinimumClearance::compute()::MinClearanceDistance>(geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>&, geos::precision::MinimumClearance::compute()::MinClearanceDistance&) |
223 | | |
224 | | /** Determine the two closest items this tree and `other` tree using distance metric `ItemDistance`. */ |
225 | | template<typename ItemDistance> |
226 | 0 | std::pair<ItemType, ItemType> nearestNeighbour(TemplateSTRtreeImpl<ItemType, BoundsTraits>& other) { |
227 | 0 | ItemDistance id; |
228 | 0 | return nearestNeighbour(other, id); |
229 | 0 | } |
230 | | |
231 | | template<typename ItemDistance> |
232 | 0 | ItemType nearestNeighbour(const BoundsType& env, const ItemType& item, ItemDistance& itemDist) { |
233 | 0 | build(); |
234 | |
|
235 | 0 | if (getRoot() == nullptr) { |
236 | 0 | return nullptr; |
237 | 0 | } |
238 | | |
239 | 0 | TemplateSTRNode<ItemType, BoundsTraits> bnd(item, env); |
240 | 0 | TemplateSTRNodePair<ItemType, BoundsTraits, ItemDistance> pair(*getRoot(), bnd, itemDist); |
241 | |
|
242 | 0 | TemplateSTRtreeDistance<ItemType, BoundsTraits, ItemDistance> td(itemDist); |
243 | 0 | return td.nearestNeighbour(pair).first; |
244 | 0 | } Unexecuted instantiation: geos_ts_c.cpp:void* geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::nearestNeighbour<GEOSSTRtree_nearest_generic_r::CustomItemDistance>(geos::geom::Envelope const&, void* const&, GEOSSTRtree_nearest_generic_r::CustomItemDistance&) Unexecuted instantiation: geos_ts_c.cpp:void* geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::nearestNeighbour<GEOSSTRtree_nearest_generic_r::GeometryDistance>(geos::geom::Envelope const&, void* const&, GEOSSTRtree_nearest_generic_r::GeometryDistance&) |
245 | | |
246 | | template<typename ItemDistance> |
247 | 0 | ItemType nearestNeighbour(const BoundsType& env, const ItemType& item) { |
248 | 0 | ItemDistance id; |
249 | 0 | return nearestNeighbour(env, item, id); |
250 | 0 | } |
251 | | |
252 | | template<typename ItemDistance> |
253 | 0 | bool isWithinDistance(TemplateSTRtreeImpl<ItemType, BoundsTraits>& other, double maxDistance) { |
254 | 0 | ItemDistance itemDist; |
255 | |
|
256 | 0 | if (!getRoot() || !other.getRoot()) { |
257 | 0 | return false; |
258 | 0 | } |
259 | | |
260 | 0 | TemplateSTRtreeDistance<ItemType, BoundsTraits, ItemDistance> td(itemDist); |
261 | 0 | return td.isWithinDistance(*root, *other.root, maxDistance); |
262 | 0 | } |
263 | | |
264 | | /// @} |
265 | | /// \defgroup query Query |
266 | | /// @{ |
267 | | |
268 | | // Query the tree using the specified visitor. The visitor must be callable |
269 | | // either with a single argument of `const ItemType&` or with the |
270 | | // arguments `(const BoundsType&, const ItemType&). |
271 | | // The visitor need not return a value, but if it does return a value, |
272 | | // false values will be taken as a signal to stop the query. |
273 | | template<typename Visitor> |
274 | 114k | void query(const BoundsType& queryEnv, Visitor &&visitor) { |
275 | 114k | if (!built()) { |
276 | 25.1k | build(); |
277 | 25.1k | } |
278 | | |
279 | 114k | if (root && root->boundsIntersect(queryEnv)) { |
280 | 66.0k | if (root->isLeaf()) { |
281 | 0 | visitLeaf(visitor, *root); |
282 | 66.0k | } else { |
283 | 66.0k | query(queryEnv, *root, visitor); |
284 | 66.0k | } |
285 | 66.0k | } |
286 | 114k | } Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<void*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(void const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<void*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(void const*)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<void*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(void const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<void*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(void const*)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator const*)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator const*)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::operation::distance::FacetSequence const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::operation::distance::FacetSequence const*)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::operation::distance::FacetSequence const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::operation::distance::FacetSequence const*)#1}&&)IndexedPointInAreaLocator.cpp:void geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::query<geos::algorithm::locate::IndexedPointInAreaLocator::locate(geos::geom::CoordinateXY const*)::$_0&>(geos::index::strtree::Interval const&, geos::algorithm::locate::IndexedPointInAreaLocator::locate(geos::geom::CoordinateXY const*)::$_0&) Line | Count | Source | 274 | 114k | void query(const BoundsType& queryEnv, Visitor &&visitor) { | 275 | 114k | if (!built()) { | 276 | 25.1k | build(); | 277 | 25.1k | } | 278 | | | 279 | 114k | if (root && root->boundsIntersect(queryEnv)) { | 280 | 66.0k | if (root->isLeaf()) { | 281 | 0 | visitLeaf(visitor, *root); | 282 | 66.0k | } else { | 283 | 66.0k | query(queryEnv, *root, visitor); | 284 | 66.0k | } | 285 | 66.0k | } | 286 | 114k | } |
Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::Geometry const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::Geometry const*)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::Geometry const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::Geometry const*)#1}&&)Unexecuted instantiation: CoverageValidator.cpp:void geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query<geos::coverage::CoverageValidator::validate(geos::geom::Geometry const*, geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>&)::$_0&>(geos::geom::Envelope const&, geos::coverage::CoverageValidator::validate(geos::geom::Geometry const*, geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>&)::$_0&) Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::coverage::TPVWSimplifier::Edge const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::coverage::TPVWSimplifier::Edge const*)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::coverage::TPVWSimplifier::Edge const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::coverage::TPVWSimplifier::Edge const*)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::coverage::TPVWSimplifier::Edge const*, std::__1::allocator<geos::coverage::TPVWSimplifier::Edge const*> >&)::{lambda(geos::coverage::TPVWSimplifier::Edge const* const&)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::coverage::TPVWSimplifier::Edge const*, std::__1::allocator<geos::coverage::TPVWSimplifier::Edge const*> >&)::{lambda(geos::coverage::TPVWSimplifier::Edge const* const&)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::index::chain::MonotoneChain const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::index::chain::MonotoneChain const*)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::index::chain::MonotoneChain const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::index::chain::MonotoneChain const*)#1}&&)Unexecuted instantiation: MCIndexSegmentSetMutualIntersector.cpp:void geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query<geos::noding::MCIndexSegmentSetMutualIntersector::intersectChains()::$_0>(geos::geom::Envelope const&, geos::noding::MCIndexSegmentSetMutualIntersector::intersectChains()::$_0&&) Unexecuted instantiation: SegmentMCIndex.cpp:void geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query<geos::operation::buffer::SegmentMCIndex::query(geos::geom::Envelope const*, geos::index::chain::MonotoneChainSelectAction&)::$_0>(geos::geom::Envelope const&, geos::operation::buffer::SegmentMCIndex::query(geos::geom::Envelope const*, geos::index::chain::MonotoneChainSelectAction&)::$_0&&) Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >&)::{lambda(unsigned long const&)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >&)::{lambda(unsigned long const&)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::operation::polygonize::EdgeRing const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::operation::polygonize::EdgeRing const*)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::operation::polygonize::EdgeRing const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::operation::polygonize::EdgeRing const*)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::LinearRing const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::LinearRing const*)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::LinearRing const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::LinearRing const*)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::Polygon const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::Polygon const*)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::Polygon const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::Polygon const*)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::algorithm::locate::IndexedPointInAreaLocator*, std::__1::allocator<geos::algorithm::locate::IndexedPointInAreaLocator*> >&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator* const&)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::algorithm::locate::IndexedPointInAreaLocator*, std::__1::allocator<geos::algorithm::locate::IndexedPointInAreaLocator*> >&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator* const&)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::operation::polygonize::EdgeRing*, std::__1::allocator<geos::operation::polygonize::EdgeRing*> >&)::{lambda(geos::operation::polygonize::EdgeRing* const&)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::operation::polygonize::EdgeRing*, std::__1::allocator<geos::operation::polygonize::EdgeRing*> >&)::{lambda(geos::operation::polygonize::EdgeRing* const&)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::geom::LinearRing const*, std::__1::allocator<geos::geom::LinearRing const*> >&)::{lambda(geos::geom::LinearRing const* const&)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::geom::LinearRing const*, std::__1::allocator<geos::geom::LinearRing const*> >&)::{lambda(geos::geom::LinearRing const* const&)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::geom::Polygon const*, std::__1::allocator<geos::geom::Polygon const*> >&)::{lambda(geos::geom::Polygon const* const&)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::geom::Polygon const*, std::__1::allocator<geos::geom::Polygon const*> >&)::{lambda(geos::geom::Polygon const* const&)#1}&&) |
287 | | |
288 | | // Query the tree for all pairs whose bounds intersect. The visitor must |
289 | | // be callable with arguments (const ItemType&, const ItemType&). |
290 | | // The visitor will be called for each pair once, with first-inserted |
291 | | // item used for the first argument. |
292 | | // The visitor need not return a value, but if it does return a value, |
293 | | // false values will be taken as a signal to stop the query. |
294 | | template<typename Visitor> |
295 | 376k | void queryPairs(Visitor&& visitor) { |
296 | 376k | if (!built()) { |
297 | 376k | build(); |
298 | 376k | } |
299 | | |
300 | 376k | if (numItems < 2) { |
301 | 17.1k | return; |
302 | 17.1k | } |
303 | | |
304 | 42.7M | for (std::size_t i = 0; i < numItems; i++) { |
305 | 42.3M | queryPairs(nodes[i], *root, visitor); |
306 | 42.3M | } |
307 | 359k | } |
308 | | |
309 | | // Query the tree and collect items in the provided vector. |
310 | 0 | void query(const BoundsType& queryEnv, std::vector<ItemType>& results) { |
311 | 0 | query(queryEnv, [&results](const ItemType& x) { |
312 | 0 | results.push_back(x); |
313 | 0 | }); Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::coverage::TPVWSimplifier::Edge const*, std::__1::allocator<geos::coverage::TPVWSimplifier::Edge const*> >&)::{lambda(geos::coverage::TPVWSimplifier::Edge const* const&)#1}::operator()(geos::coverage::TPVWSimplifier::Edge const* const&) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >&)::{lambda(unsigned long const&)#1}::operator()(unsigned long const&) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::algorithm::locate::IndexedPointInAreaLocator*, std::__1::allocator<geos::algorithm::locate::IndexedPointInAreaLocator*> >&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator* const&)#1}::operator()(geos::algorithm::locate::IndexedPointInAreaLocator* const&) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::operation::polygonize::EdgeRing*, std::__1::allocator<geos::operation::polygonize::EdgeRing*> >&)::{lambda(geos::operation::polygonize::EdgeRing* const&)#1}::operator()(geos::operation::polygonize::EdgeRing* const&) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::geom::LinearRing const*, std::__1::allocator<geos::geom::LinearRing const*> >&)::{lambda(geos::geom::LinearRing const* const&)#1}::operator()(geos::geom::LinearRing const* const&) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::geom::Polygon const*, std::__1::allocator<geos::geom::Polygon const*> >&)::{lambda(geos::geom::Polygon const* const&)#1}::operator()(geos::geom::Polygon const* const&) const |
314 | 0 | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::coverage::TPVWSimplifier::Edge const*, std::__1::allocator<geos::coverage::TPVWSimplifier::Edge const*> >&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::algorithm::locate::IndexedPointInAreaLocator*, std::__1::allocator<geos::algorithm::locate::IndexedPointInAreaLocator*> >&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::operation::polygonize::EdgeRing*, std::__1::allocator<geos::operation::polygonize::EdgeRing*> >&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::geom::LinearRing const*, std::__1::allocator<geos::geom::LinearRing const*> >&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::geom::Polygon const*, std::__1::allocator<geos::geom::Polygon const*> >&) |
315 | | |
316 | | /** |
317 | | * Returns a depth-first iterator over all items in the tree. |
318 | | */ |
319 | 7.44k | Items items() { |
320 | 7.44k | build(); |
321 | 7.44k | return Items(*this); |
322 | 7.44k | } |
323 | | |
324 | | /** |
325 | | * Iterate over all items added thus far. Explicitly does not build |
326 | | * the tree. |
327 | | */ |
328 | | template<typename F> |
329 | 0 | void iterate(F&& func) { |
330 | 0 | auto n = built() ? numItems : nodes.size(); |
331 | 0 | for (size_t i = 0; i < n; i++) { |
332 | 0 | if (!nodes[i].isDeleted()) { |
333 | 0 | func(nodes[i].getItem()); |
334 | 0 | } |
335 | 0 | } |
336 | 0 | } |
337 | | |
338 | | /// @} |
339 | | /// \defgroup remove Item removal |
340 | | /// @{ |
341 | | |
342 | 0 | bool remove(const BoundsType& itemEnv, const ItemType& item) { |
343 | 0 | build(); |
344 | |
|
345 | 0 | if (root == nullptr) { |
346 | 0 | return false; |
347 | 0 | } |
348 | | |
349 | 0 | if (root->isLeaf()) { |
350 | 0 | if (!root->isDeleted() && root->getItem() == item) { |
351 | 0 | root->removeItem(); |
352 | 0 | return true; |
353 | 0 | } |
354 | 0 | return false; |
355 | 0 | } |
356 | | |
357 | 0 | return remove(itemEnv, *root, item); |
358 | 0 | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, void* const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, geos::algorithm::locate::IndexedPointInAreaLocator* const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, geos::operation::distance::FacetSequence const* const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, geos::geom::Geometry const* const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, geos::coverage::TPVWSimplifier::Edge const* const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, geos::index::chain::MonotoneChain const* const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, geos::operation::polygonize::EdgeRing* const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, geos::geom::LinearRing const* const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, geos::geom::Polygon const* const&) |
359 | | |
360 | | /// @} |
361 | | /// \defgroup introspect Introspection |
362 | | /// @{ |
363 | | |
364 | | /** Determine whether the tree has been built, and no more items may be added. */ |
365 | 900k | bool built() const { |
366 | 900k | return root != nullptr; |
367 | 900k | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::built() const Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::built() const Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::built() const geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::built() const Line | Count | Source | 365 | 139k | bool built() const { | 366 | 139k | return root != nullptr; | 367 | 139k | } |
geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::built() const Line | Count | Source | 365 | 7.44k | bool built() const { | 366 | 7.44k | return root != nullptr; | 367 | 7.44k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::built() const geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::built() const Line | Count | Source | 365 | 753k | bool built() const { | 366 | 753k | return root != nullptr; | 367 | 753k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::built() const Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::built() const Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::built() const Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::built() const |
368 | | |
369 | | /** Determine whether the tree has been built, and no more items may be added. */ |
370 | 0 | const Node* getRoot() { |
371 | 0 | build(); |
372 | 0 | return root; |
373 | 0 | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::getRoot() Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::getRoot() |
374 | | |
375 | | /// @} |
376 | | |
377 | | /** Build the tree if it has not already been built. */ |
378 | 409k | void build() { |
379 | 409k | std::lock_guard<std::mutex> lock(lock_); |
380 | | |
381 | 409k | if (built()) { |
382 | 3.72k | return; |
383 | 3.72k | } |
384 | | |
385 | 405k | if (nodes.empty()) { |
386 | 11.0k | return; |
387 | 11.0k | } |
388 | | |
389 | 394k | numItems = nodes.size(); |
390 | | |
391 | | // compute final size of tree and set it aside in a single |
392 | | // block of memory |
393 | 394k | auto finalSize = treeSize(numItems); |
394 | 394k | nodes.reserve(finalSize); |
395 | | |
396 | | // begin and end define a range of nodes needing parents |
397 | 394k | auto begin = nodes.begin(); |
398 | 394k | auto number = static_cast<size_t>(std::distance(begin, nodes.end())); |
399 | | |
400 | 909k | while (number > 1) { |
401 | 514k | createParentNodes(begin, number); |
402 | 514k | std::advance(begin, static_cast<long>(number)); // parents just added become children in the next round |
403 | 514k | number = static_cast<size_t>(std::distance(begin, nodes.end())); |
404 | 514k | } |
405 | | |
406 | 394k | assert(finalSize == nodes.size()); |
407 | | |
408 | 394k | root = &nodes.back(); |
409 | 394k | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::build() Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::build() Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::build() geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::build() Line | Count | Source | 378 | 25.1k | void build() { | 379 | 25.1k | std::lock_guard<std::mutex> lock(lock_); | 380 | | | 381 | 25.1k | if (built()) { | 382 | 0 | return; | 383 | 0 | } | 384 | | | 385 | 25.1k | if (nodes.empty()) { | 386 | 8.48k | return; | 387 | 8.48k | } | 388 | | | 389 | 16.6k | numItems = nodes.size(); | 390 | | | 391 | | // compute final size of tree and set it aside in a single | 392 | | // block of memory | 393 | 16.6k | auto finalSize = treeSize(numItems); | 394 | 16.6k | nodes.reserve(finalSize); | 395 | | | 396 | | // begin and end define a range of nodes needing parents | 397 | 16.6k | auto begin = nodes.begin(); | 398 | 16.6k | auto number = static_cast<size_t>(std::distance(begin, nodes.end())); | 399 | | | 400 | 43.1k | while (number > 1) { | 401 | 26.4k | createParentNodes(begin, number); | 402 | 26.4k | std::advance(begin, static_cast<long>(number)); // parents just added become children in the next round | 403 | 26.4k | number = static_cast<size_t>(std::distance(begin, nodes.end())); | 404 | 26.4k | } | 405 | | | 406 | 16.6k | assert(finalSize == nodes.size()); | 407 | | | 408 | 16.6k | root = &nodes.back(); | 409 | 16.6k | } |
geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::build() Line | Count | Source | 378 | 7.44k | void build() { | 379 | 7.44k | std::lock_guard<std::mutex> lock(lock_); | 380 | | | 381 | 7.44k | if (built()) { | 382 | 3.72k | return; | 383 | 3.72k | } | 384 | | | 385 | 3.72k | if (nodes.empty()) { | 386 | 0 | return; | 387 | 0 | } | 388 | | | 389 | 3.72k | numItems = nodes.size(); | 390 | | | 391 | | // compute final size of tree and set it aside in a single | 392 | | // block of memory | 393 | 3.72k | auto finalSize = treeSize(numItems); | 394 | 3.72k | nodes.reserve(finalSize); | 395 | | | 396 | | // begin and end define a range of nodes needing parents | 397 | 3.72k | auto begin = nodes.begin(); | 398 | 3.72k | auto number = static_cast<size_t>(std::distance(begin, nodes.end())); | 399 | | | 400 | 8.56k | while (number > 1) { | 401 | 4.84k | createParentNodes(begin, number); | 402 | 4.84k | std::advance(begin, static_cast<long>(number)); // parents just added become children in the next round | 403 | 4.84k | number = static_cast<size_t>(std::distance(begin, nodes.end())); | 404 | 4.84k | } | 405 | | | 406 | 3.72k | assert(finalSize == nodes.size()); | 407 | | | 408 | 3.72k | root = &nodes.back(); | 409 | 3.72k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::build() geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::build() Line | Count | Source | 378 | 376k | void build() { | 379 | 376k | std::lock_guard<std::mutex> lock(lock_); | 380 | | | 381 | 376k | if (built()) { | 382 | 0 | return; | 383 | 0 | } | 384 | | | 385 | 376k | if (nodes.empty()) { | 386 | 2.60k | return; | 387 | 2.60k | } | 388 | | | 389 | 374k | numItems = nodes.size(); | 390 | | | 391 | | // compute final size of tree and set it aside in a single | 392 | | // block of memory | 393 | 374k | auto finalSize = treeSize(numItems); | 394 | 374k | nodes.reserve(finalSize); | 395 | | | 396 | | // begin and end define a range of nodes needing parents | 397 | 374k | auto begin = nodes.begin(); | 398 | 374k | auto number = static_cast<size_t>(std::distance(begin, nodes.end())); | 399 | | | 400 | 857k | while (number > 1) { | 401 | 483k | createParentNodes(begin, number); | 402 | 483k | std::advance(begin, static_cast<long>(number)); // parents just added become children in the next round | 403 | 483k | number = static_cast<size_t>(std::distance(begin, nodes.end())); | 404 | 483k | } | 405 | | | 406 | 374k | assert(finalSize == nodes.size()); | 407 | | | 408 | 374k | root = &nodes.back(); | 409 | 374k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::build() Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::build() Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::build() Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::build() |
410 | | |
411 | | protected: |
412 | | std::mutex lock_; |
413 | | NodeList nodes; //**< a list of all leaf and branch nodes in the tree. */ |
414 | | Node* root; //**< a pointer to the root node, if the tree has been built. */ |
415 | | size_t nodeCapacity; //*< maximum number of children of each node */ |
416 | | size_t numItems; //*< total number of items in the tree, if it has been built. */ |
417 | | |
418 | | // Prevent instantiation of base class. |
419 | | // ~TemplateSTRtreeImpl() = default; |
420 | | |
421 | 48.9M | void createLeafNode(ItemType&& item, const BoundsType& env) { |
422 | 48.9M | nodes.emplace_back(std::forward<ItemType>(item), env); |
423 | 48.9M | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::createLeafNode(void*&&, geos::geom::Envelope const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::createLeafNode(geos::operation::distance::FacetSequence const*&&, geos::geom::Envelope const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::createLeafNode(geos::algorithm::locate::IndexedPointInAreaLocator*&&, geos::geom::Envelope const&) geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::createLeafNode(geos::geom::Geometry const*&&, geos::geom::Envelope const&) Line | Count | Source | 421 | 2.67M | void createLeafNode(ItemType&& item, const BoundsType& env) { | 422 | 2.67M | nodes.emplace_back(std::forward<ItemType>(item), env); | 423 | 2.67M | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::createLeafNode(geos::coverage::TPVWSimplifier::Edge const*&&, geos::geom::Envelope const&) geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::createLeafNode(geos::index::chain::MonotoneChain const*&&, geos::geom::Envelope const&) Line | Count | Source | 421 | 46.2M | void createLeafNode(ItemType&& item, const BoundsType& env) { | 422 | 46.2M | nodes.emplace_back(std::forward<ItemType>(item), env); | 423 | 46.2M | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::createLeafNode(geos::operation::polygonize::EdgeRing*&&, geos::geom::Envelope const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::createLeafNode(geos::geom::LinearRing const*&&, geos::geom::Envelope const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::createLeafNode(geos::geom::Polygon const*&&, geos::geom::Envelope const&) |
424 | | |
425 | 6.12M | void createLeafNode(const ItemType& item, const BoundsType& env) { |
426 | 6.12M | nodes.emplace_back(item, env); |
427 | 6.12M | } geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::createLeafNode(geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView const&, geos::index::strtree::Interval const&) Line | Count | Source | 425 | 6.12M | void createLeafNode(const ItemType& item, const BoundsType& env) { | 426 | 6.12M | nodes.emplace_back(item, env); | 427 | 6.12M | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::createLeafNode(geos::geom::Geometry const* const&, geos::geom::Envelope const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::createLeafNode(unsigned long const&, geos::geom::Envelope const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::createLeafNode(geos::geom::LinearRing const* const&, geos::geom::Envelope const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::createLeafNode(geos::geom::Polygon const* const&, geos::geom::Envelope const&) |
428 | | |
429 | 6.51M | void createBranchNode(const Node *begin, const Node *end) { |
430 | 6.51M | assert(nodes.size() < nodes.capacity()); |
431 | 6.51M | nodes.emplace_back(begin, end); |
432 | 6.51M | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::createBranchNode(geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits> const*, geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits> const*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::createBranchNode(geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits> const*, geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits> const*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::createBranchNode(geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits> const*, geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits> const*) geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::createBranchNode(geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits> const*, geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits> const*) Line | Count | Source | 429 | 714k | void createBranchNode(const Node *begin, const Node *end) { | 430 | 714k | assert(nodes.size() < nodes.capacity()); | 431 | 714k | nodes.emplace_back(begin, end); | 432 | 714k | } |
geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::createBranchNode(geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits> const*, geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits> const*) Line | Count | Source | 429 | 307k | void createBranchNode(const Node *begin, const Node *end) { | 430 | 307k | assert(nodes.size() < nodes.capacity()); | 431 | 307k | nodes.emplace_back(begin, end); | 432 | 307k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::createBranchNode(geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits> const*, geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits> const*) geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::createBranchNode(geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits> const*, geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits> const*) Line | Count | Source | 429 | 5.48M | void createBranchNode(const Node *begin, const Node *end) { | 430 | 5.48M | assert(nodes.size() < nodes.capacity()); | 431 | 5.48M | nodes.emplace_back(begin, end); | 432 | 5.48M | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::createBranchNode(geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits> const*, geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits> const*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::createBranchNode(geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits> const*, geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits> const*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::createBranchNode(geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits> const*, geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits> const*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::createBranchNode(geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits> const*, geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits> const*) |
433 | | |
434 | | // calculate what the tree size will be when it is build. This is simply |
435 | | // a version of createParentNodes that doesn't actually create anything. |
436 | 415k | size_t treeSize(size_t numLeafNodes) { |
437 | 415k | size_t nodesInTree = numLeafNodes; |
438 | | |
439 | 415k | size_t nodesWithoutParents = numLeafNodes; |
440 | 961k | while (nodesWithoutParents > 1) { |
441 | 546k | auto numSlices = sliceCount(nodesWithoutParents); |
442 | 546k | auto nodesPerSlice = sliceCapacity(nodesWithoutParents, numSlices); |
443 | | |
444 | 546k | size_t parentNodesAdded = 0; |
445 | 1.51M | for (size_t j = 0; j < numSlices; j++) { |
446 | 970k | auto nodesInSlice = std::min(nodesWithoutParents, nodesPerSlice); |
447 | 970k | nodesWithoutParents -= nodesInSlice; |
448 | | |
449 | 970k | parentNodesAdded += static_cast<size_t>(std::ceil( |
450 | 970k | static_cast<double>(nodesInSlice) / static_cast<double>(nodeCapacity))); |
451 | 970k | } |
452 | | |
453 | 546k | nodesInTree += parentNodesAdded; |
454 | 546k | nodesWithoutParents = parentNodesAdded; |
455 | 546k | } |
456 | | |
457 | 415k | return nodesInTree; |
458 | 415k | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::treeSize(unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::treeSize(unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::treeSize(unsigned long) geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::treeSize(unsigned long) Line | Count | Source | 436 | 33.3k | size_t treeSize(size_t numLeafNodes) { | 437 | 33.3k | size_t nodesInTree = numLeafNodes; | 438 | | | 439 | 33.3k | size_t nodesWithoutParents = numLeafNodes; | 440 | 86.3k | while (nodesWithoutParents > 1) { | 441 | 52.9k | auto numSlices = sliceCount(nodesWithoutParents); | 442 | 52.9k | auto nodesPerSlice = sliceCapacity(nodesWithoutParents, numSlices); | 443 | | | 444 | 52.9k | size_t parentNodesAdded = 0; | 445 | 185k | for (size_t j = 0; j < numSlices; j++) { | 446 | 132k | auto nodesInSlice = std::min(nodesWithoutParents, nodesPerSlice); | 447 | 132k | nodesWithoutParents -= nodesInSlice; | 448 | | | 449 | 132k | parentNodesAdded += static_cast<size_t>(std::ceil( | 450 | 132k | static_cast<double>(nodesInSlice) / static_cast<double>(nodeCapacity))); | 451 | 132k | } | 452 | | | 453 | 52.9k | nodesInTree += parentNodesAdded; | 454 | 52.9k | nodesWithoutParents = parentNodesAdded; | 455 | 52.9k | } | 456 | | | 457 | 33.3k | return nodesInTree; | 458 | 33.3k | } |
geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::treeSize(unsigned long) Line | Count | Source | 436 | 7.44k | size_t treeSize(size_t numLeafNodes) { | 437 | 7.44k | size_t nodesInTree = numLeafNodes; | 438 | | | 439 | 7.44k | size_t nodesWithoutParents = numLeafNodes; | 440 | 17.1k | while (nodesWithoutParents > 1) { | 441 | 9.69k | auto numSlices = sliceCount(nodesWithoutParents); | 442 | 9.69k | auto nodesPerSlice = sliceCapacity(nodesWithoutParents, numSlices); | 443 | | | 444 | 9.69k | size_t parentNodesAdded = 0; | 445 | 53.4k | for (size_t j = 0; j < numSlices; j++) { | 446 | 43.7k | auto nodesInSlice = std::min(nodesWithoutParents, nodesPerSlice); | 447 | 43.7k | nodesWithoutParents -= nodesInSlice; | 448 | | | 449 | 43.7k | parentNodesAdded += static_cast<size_t>(std::ceil( | 450 | 43.7k | static_cast<double>(nodesInSlice) / static_cast<double>(nodeCapacity))); | 451 | 43.7k | } | 452 | | | 453 | 9.69k | nodesInTree += parentNodesAdded; | 454 | 9.69k | nodesWithoutParents = parentNodesAdded; | 455 | 9.69k | } | 456 | | | 457 | 7.44k | return nodesInTree; | 458 | 7.44k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::treeSize(unsigned long) geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::treeSize(unsigned long) Line | Count | Source | 436 | 374k | size_t treeSize(size_t numLeafNodes) { | 437 | 374k | size_t nodesInTree = numLeafNodes; | 438 | | | 439 | 374k | size_t nodesWithoutParents = numLeafNodes; | 440 | 857k | while (nodesWithoutParents > 1) { | 441 | 483k | auto numSlices = sliceCount(nodesWithoutParents); | 442 | 483k | auto nodesPerSlice = sliceCapacity(nodesWithoutParents, numSlices); | 443 | | | 444 | 483k | size_t parentNodesAdded = 0; | 445 | 1.27M | for (size_t j = 0; j < numSlices; j++) { | 446 | 794k | auto nodesInSlice = std::min(nodesWithoutParents, nodesPerSlice); | 447 | 794k | nodesWithoutParents -= nodesInSlice; | 448 | | | 449 | 794k | parentNodesAdded += static_cast<size_t>(std::ceil( | 450 | 794k | static_cast<double>(nodesInSlice) / static_cast<double>(nodeCapacity))); | 451 | 794k | } | 452 | | | 453 | 483k | nodesInTree += parentNodesAdded; | 454 | 483k | nodesWithoutParents = parentNodesAdded; | 455 | 483k | } | 456 | | | 457 | 374k | return nodesInTree; | 458 | 374k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::treeSize(unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::treeSize(unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::treeSize(unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::treeSize(unsigned long) |
459 | | |
460 | 514k | void createParentNodes(const NodeListIterator& begin, size_t number) { |
461 | | // Arrange child nodes in two dimensions. |
462 | | // First, divide them into vertical slices of a given size (left-to-right) |
463 | | // Then create nodes within those slices (bottom-to-top) |
464 | 514k | auto numSlices = sliceCount(number); |
465 | 514k | std::size_t nodesPerSlice = sliceCapacity(number, numSlices); |
466 | | |
467 | | // We could sort all of the nodes here, but we don't actually need them to be |
468 | | // completely sorted. They need to be sorted enough for each node to end up |
469 | | // in the right vertical slice, but their relative position within the slice |
470 | | // doesn't matter. So we do a partial sort for each slice below instead. |
471 | 514k | auto end = begin + static_cast<long>(number); |
472 | 514k | sortNodesX(begin, end); |
473 | | |
474 | 514k | auto startOfSlice = begin; |
475 | 1.39M | for (decltype(numSlices) j = 0; j < numSlices; j++) { |
476 | | // end iterator is being invalidated at each iteration |
477 | 882k | end = begin + static_cast<long>(number); |
478 | 882k | auto nodesRemaining = static_cast<size_t>(std::distance(startOfSlice, end)); |
479 | 882k | auto nodesInSlice = std::min(nodesRemaining, nodesPerSlice); |
480 | 882k | auto endOfSlice = std::next(startOfSlice, static_cast<long>(nodesInSlice)); |
481 | | |
482 | | // Make sure that every node that should be in this slice ends up somewhere |
483 | | // between startOfSlice and endOfSlice. We don't require any ordering among |
484 | | // nodes between startOfSlice and endOfSlice. |
485 | | //partialSortNodes(startOfSlice, endOfSlice, end); |
486 | | |
487 | 882k | addParentNodesFromVerticalSlice(startOfSlice, endOfSlice); |
488 | | |
489 | 882k | startOfSlice = endOfSlice; |
490 | 882k | } |
491 | 514k | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::createParentNodes(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits>*> const&, unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::createParentNodes(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>*> const&, unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::createParentNodes(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>*> const&, unsigned long) geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::createParentNodes(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>*> const&, unsigned long) Line | Count | Source | 460 | 26.4k | void createParentNodes(const NodeListIterator& begin, size_t number) { | 461 | | // Arrange child nodes in two dimensions. | 462 | | // First, divide them into vertical slices of a given size (left-to-right) | 463 | | // Then create nodes within those slices (bottom-to-top) | 464 | 26.4k | auto numSlices = sliceCount(number); | 465 | 26.4k | std::size_t nodesPerSlice = sliceCapacity(number, numSlices); | 466 | | | 467 | | // We could sort all of the nodes here, but we don't actually need them to be | 468 | | // completely sorted. They need to be sorted enough for each node to end up | 469 | | // in the right vertical slice, but their relative position within the slice | 470 | | // doesn't matter. So we do a partial sort for each slice below instead. | 471 | 26.4k | auto end = begin + static_cast<long>(number); | 472 | 26.4k | sortNodesX(begin, end); | 473 | | | 474 | 26.4k | auto startOfSlice = begin; | 475 | 92.7k | for (decltype(numSlices) j = 0; j < numSlices; j++) { | 476 | | // end iterator is being invalidated at each iteration | 477 | 66.3k | end = begin + static_cast<long>(number); | 478 | 66.3k | auto nodesRemaining = static_cast<size_t>(std::distance(startOfSlice, end)); | 479 | 66.3k | auto nodesInSlice = std::min(nodesRemaining, nodesPerSlice); | 480 | 66.3k | auto endOfSlice = std::next(startOfSlice, static_cast<long>(nodesInSlice)); | 481 | | | 482 | | // Make sure that every node that should be in this slice ends up somewhere | 483 | | // between startOfSlice and endOfSlice. We don't require any ordering among | 484 | | // nodes between startOfSlice and endOfSlice. | 485 | | //partialSortNodes(startOfSlice, endOfSlice, end); | 486 | | | 487 | 66.3k | addParentNodesFromVerticalSlice(startOfSlice, endOfSlice); | 488 | | | 489 | 66.3k | startOfSlice = endOfSlice; | 490 | 66.3k | } | 491 | 26.4k | } |
geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::createParentNodes(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>*> const&, unsigned long) Line | Count | Source | 460 | 4.84k | void createParentNodes(const NodeListIterator& begin, size_t number) { | 461 | | // Arrange child nodes in two dimensions. | 462 | | // First, divide them into vertical slices of a given size (left-to-right) | 463 | | // Then create nodes within those slices (bottom-to-top) | 464 | 4.84k | auto numSlices = sliceCount(number); | 465 | 4.84k | std::size_t nodesPerSlice = sliceCapacity(number, numSlices); | 466 | | | 467 | | // We could sort all of the nodes here, but we don't actually need them to be | 468 | | // completely sorted. They need to be sorted enough for each node to end up | 469 | | // in the right vertical slice, but their relative position within the slice | 470 | | // doesn't matter. So we do a partial sort for each slice below instead. | 471 | 4.84k | auto end = begin + static_cast<long>(number); | 472 | 4.84k | sortNodesX(begin, end); | 473 | | | 474 | 4.84k | auto startOfSlice = begin; | 475 | 26.7k | for (decltype(numSlices) j = 0; j < numSlices; j++) { | 476 | | // end iterator is being invalidated at each iteration | 477 | 21.8k | end = begin + static_cast<long>(number); | 478 | 21.8k | auto nodesRemaining = static_cast<size_t>(std::distance(startOfSlice, end)); | 479 | 21.8k | auto nodesInSlice = std::min(nodesRemaining, nodesPerSlice); | 480 | 21.8k | auto endOfSlice = std::next(startOfSlice, static_cast<long>(nodesInSlice)); | 481 | | | 482 | | // Make sure that every node that should be in this slice ends up somewhere | 483 | | // between startOfSlice and endOfSlice. We don't require any ordering among | 484 | | // nodes between startOfSlice and endOfSlice. | 485 | | //partialSortNodes(startOfSlice, endOfSlice, end); | 486 | | | 487 | 21.8k | addParentNodesFromVerticalSlice(startOfSlice, endOfSlice); | 488 | | | 489 | 21.8k | startOfSlice = endOfSlice; | 490 | 21.8k | } | 491 | 4.84k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::createParentNodes(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>*> const&, unsigned long) geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::createParentNodes(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>*> const&, unsigned long) Line | Count | Source | 460 | 483k | void createParentNodes(const NodeListIterator& begin, size_t number) { | 461 | | // Arrange child nodes in two dimensions. | 462 | | // First, divide them into vertical slices of a given size (left-to-right) | 463 | | // Then create nodes within those slices (bottom-to-top) | 464 | 483k | auto numSlices = sliceCount(number); | 465 | 483k | std::size_t nodesPerSlice = sliceCapacity(number, numSlices); | 466 | | | 467 | | // We could sort all of the nodes here, but we don't actually need them to be | 468 | | // completely sorted. They need to be sorted enough for each node to end up | 469 | | // in the right vertical slice, but their relative position within the slice | 470 | | // doesn't matter. So we do a partial sort for each slice below instead. | 471 | 483k | auto end = begin + static_cast<long>(number); | 472 | 483k | sortNodesX(begin, end); | 473 | | | 474 | 483k | auto startOfSlice = begin; | 475 | 1.27M | for (decltype(numSlices) j = 0; j < numSlices; j++) { | 476 | | // end iterator is being invalidated at each iteration | 477 | 794k | end = begin + static_cast<long>(number); | 478 | 794k | auto nodesRemaining = static_cast<size_t>(std::distance(startOfSlice, end)); | 479 | 794k | auto nodesInSlice = std::min(nodesRemaining, nodesPerSlice); | 480 | 794k | auto endOfSlice = std::next(startOfSlice, static_cast<long>(nodesInSlice)); | 481 | | | 482 | | // Make sure that every node that should be in this slice ends up somewhere | 483 | | // between startOfSlice and endOfSlice. We don't require any ordering among | 484 | | // nodes between startOfSlice and endOfSlice. | 485 | | //partialSortNodes(startOfSlice, endOfSlice, end); | 486 | | | 487 | 794k | addParentNodesFromVerticalSlice(startOfSlice, endOfSlice); | 488 | | | 489 | 794k | startOfSlice = endOfSlice; | 490 | 794k | } | 491 | 483k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::createParentNodes(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits>*> const&, unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::createParentNodes(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&, unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::createParentNodes(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>*> const&, unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::createParentNodes(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>*> const&, unsigned long) |
492 | | |
493 | 882k | void addParentNodesFromVerticalSlice(const NodeListIterator& begin, const NodeListIterator& end) { |
494 | 882k | if (BoundsTraits::TwoDimensional::value) { |
495 | 816k | sortNodesY(begin, end); |
496 | 816k | } |
497 | | |
498 | | // Arrange the nodes vertically and full up parent nodes sequentially until they're full. |
499 | | // A possible improvement would be to rework this such so that if we have 81 nodes we |
500 | | // put 9 into each parent instead of 10 or 1. |
501 | 882k | auto firstChild = begin; |
502 | 7.39M | while (firstChild != end) { |
503 | 6.51M | auto childrenRemaining = static_cast<size_t>(std::distance(firstChild, end)); |
504 | 6.51M | auto childrenForNode = std::min(nodeCapacity, childrenRemaining); |
505 | 6.51M | auto lastChild = std::next(firstChild, static_cast<long>(childrenForNode)); |
506 | | |
507 | | //partialSortNodes(firstChild, lastChild, end); |
508 | | |
509 | | // Ideally we would be able to store firstChild and lastChild instead of |
510 | | // having to convert them to pointers, but I wasn't sure how to access |
511 | | // the NodeListIterator type from within Node without creating some weird |
512 | | // circular dependency. |
513 | 6.51M | const Node *ptr_first = &*firstChild; |
514 | 6.51M | const Node *ptr_end = ptr_first + childrenForNode; |
515 | | |
516 | 6.51M | createBranchNode(ptr_first, ptr_end); |
517 | 6.51M | firstChild = lastChild; |
518 | 6.51M | } |
519 | 882k | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::addParentNodesFromVerticalSlice(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits>*> const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::addParentNodesFromVerticalSlice(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>*> const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::addParentNodesFromVerticalSlice(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>*> const&) geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::addParentNodesFromVerticalSlice(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>*> const&) Line | Count | Source | 493 | 66.3k | void addParentNodesFromVerticalSlice(const NodeListIterator& begin, const NodeListIterator& end) { | 494 | 66.3k | if (BoundsTraits::TwoDimensional::value) { | 495 | 0 | sortNodesY(begin, end); | 496 | 0 | } | 497 | | | 498 | | // Arrange the nodes vertically and full up parent nodes sequentially until they're full. | 499 | | // A possible improvement would be to rework this such so that if we have 81 nodes we | 500 | | // put 9 into each parent instead of 10 or 1. | 501 | 66.3k | auto firstChild = begin; | 502 | 780k | while (firstChild != end) { | 503 | 714k | auto childrenRemaining = static_cast<size_t>(std::distance(firstChild, end)); | 504 | 714k | auto childrenForNode = std::min(nodeCapacity, childrenRemaining); | 505 | 714k | auto lastChild = std::next(firstChild, static_cast<long>(childrenForNode)); | 506 | | | 507 | | //partialSortNodes(firstChild, lastChild, end); | 508 | | | 509 | | // Ideally we would be able to store firstChild and lastChild instead of | 510 | | // having to convert them to pointers, but I wasn't sure how to access | 511 | | // the NodeListIterator type from within Node without creating some weird | 512 | | // circular dependency. | 513 | 714k | const Node *ptr_first = &*firstChild; | 514 | 714k | const Node *ptr_end = ptr_first + childrenForNode; | 515 | | | 516 | 714k | createBranchNode(ptr_first, ptr_end); | 517 | 714k | firstChild = lastChild; | 518 | 714k | } | 519 | 66.3k | } |
geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::addParentNodesFromVerticalSlice(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>*> const&) Line | Count | Source | 493 | 21.8k | void addParentNodesFromVerticalSlice(const NodeListIterator& begin, const NodeListIterator& end) { | 494 | 21.8k | if (BoundsTraits::TwoDimensional::value) { | 495 | 21.8k | sortNodesY(begin, end); | 496 | 21.8k | } | 497 | | | 498 | | // Arrange the nodes vertically and full up parent nodes sequentially until they're full. | 499 | | // A possible improvement would be to rework this such so that if we have 81 nodes we | 500 | | // put 9 into each parent instead of 10 or 1. | 501 | 21.8k | auto firstChild = begin; | 502 | 329k | while (firstChild != end) { | 503 | 307k | auto childrenRemaining = static_cast<size_t>(std::distance(firstChild, end)); | 504 | 307k | auto childrenForNode = std::min(nodeCapacity, childrenRemaining); | 505 | 307k | auto lastChild = std::next(firstChild, static_cast<long>(childrenForNode)); | 506 | | | 507 | | //partialSortNodes(firstChild, lastChild, end); | 508 | | | 509 | | // Ideally we would be able to store firstChild and lastChild instead of | 510 | | // having to convert them to pointers, but I wasn't sure how to access | 511 | | // the NodeListIterator type from within Node without creating some weird | 512 | | // circular dependency. | 513 | 307k | const Node *ptr_first = &*firstChild; | 514 | 307k | const Node *ptr_end = ptr_first + childrenForNode; | 515 | | | 516 | 307k | createBranchNode(ptr_first, ptr_end); | 517 | 307k | firstChild = lastChild; | 518 | 307k | } | 519 | 21.8k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::addParentNodesFromVerticalSlice(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>*> const&) geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::addParentNodesFromVerticalSlice(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>*> const&) Line | Count | Source | 493 | 794k | void addParentNodesFromVerticalSlice(const NodeListIterator& begin, const NodeListIterator& end) { | 494 | 794k | if (BoundsTraits::TwoDimensional::value) { | 495 | 794k | sortNodesY(begin, end); | 496 | 794k | } | 497 | | | 498 | | // Arrange the nodes vertically and full up parent nodes sequentially until they're full. | 499 | | // A possible improvement would be to rework this such so that if we have 81 nodes we | 500 | | // put 9 into each parent instead of 10 or 1. | 501 | 794k | auto firstChild = begin; | 502 | 6.28M | while (firstChild != end) { | 503 | 5.48M | auto childrenRemaining = static_cast<size_t>(std::distance(firstChild, end)); | 504 | 5.48M | auto childrenForNode = std::min(nodeCapacity, childrenRemaining); | 505 | 5.48M | auto lastChild = std::next(firstChild, static_cast<long>(childrenForNode)); | 506 | | | 507 | | //partialSortNodes(firstChild, lastChild, end); | 508 | | | 509 | | // Ideally we would be able to store firstChild and lastChild instead of | 510 | | // having to convert them to pointers, but I wasn't sure how to access | 511 | | // the NodeListIterator type from within Node without creating some weird | 512 | | // circular dependency. | 513 | 5.48M | const Node *ptr_first = &*firstChild; | 514 | 5.48M | const Node *ptr_end = ptr_first + childrenForNode; | 515 | | | 516 | 5.48M | createBranchNode(ptr_first, ptr_end); | 517 | 5.48M | firstChild = lastChild; | 518 | 5.48M | } | 519 | 794k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::addParentNodesFromVerticalSlice(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits>*> const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::addParentNodesFromVerticalSlice(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::addParentNodesFromVerticalSlice(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>*> const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::addParentNodesFromVerticalSlice(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>*> const&) |
520 | | |
521 | 514k | void sortNodesX(const NodeListIterator& begin, const NodeListIterator& end) { |
522 | 712M | std::sort(begin, end, [](const Node &a, const Node &b) { |
523 | 712M | return BoundsTraits::getX(a.getBounds()) < BoundsTraits::getX(b.getBounds()); |
524 | 712M | }); Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits> const&) constgeos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits> const&, geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits> const&, geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits> const&) constLine | Count | Source | 522 | 53.1M | std::sort(begin, end, [](const Node &a, const Node &b) { | 523 | 53.1M | return BoundsTraits::getX(a.getBounds()) < BoundsTraits::getX(b.getBounds()); | 524 | 53.1M | }); |
geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits> const&) constLine | Count | Source | 522 | 14.4M | std::sort(begin, end, [](const Node &a, const Node &b) { | 523 | 14.4M | return BoundsTraits::getX(a.getBounds()) < BoundsTraits::getX(b.getBounds()); | 524 | 14.4M | }); |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits> const&) constgeos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits> const&) constLine | Count | Source | 522 | 645M | std::sort(begin, end, [](const Node &a, const Node &b) { | 523 | 645M | return BoundsTraits::getX(a.getBounds()) < BoundsTraits::getX(b.getBounds()); | 524 | 645M | }); |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits> const&) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits> const&) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits> const&) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits> const&) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits> const&) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits> const&) const |
525 | 514k | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits>*> const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>*> const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>*> const&) geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>*> const&) Line | Count | Source | 521 | 26.4k | void sortNodesX(const NodeListIterator& begin, const NodeListIterator& end) { | 522 | 26.4k | std::sort(begin, end, [](const Node &a, const Node &b) { | 523 | 26.4k | return BoundsTraits::getX(a.getBounds()) < BoundsTraits::getX(b.getBounds()); | 524 | 26.4k | }); | 525 | 26.4k | } |
geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>*> const&) Line | Count | Source | 521 | 4.84k | void sortNodesX(const NodeListIterator& begin, const NodeListIterator& end) { | 522 | 4.84k | std::sort(begin, end, [](const Node &a, const Node &b) { | 523 | 4.84k | return BoundsTraits::getX(a.getBounds()) < BoundsTraits::getX(b.getBounds()); | 524 | 4.84k | }); | 525 | 4.84k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>*> const&) geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>*> const&) Line | Count | Source | 521 | 483k | void sortNodesX(const NodeListIterator& begin, const NodeListIterator& end) { | 522 | 483k | std::sort(begin, end, [](const Node &a, const Node &b) { | 523 | 483k | return BoundsTraits::getX(a.getBounds()) < BoundsTraits::getX(b.getBounds()); | 524 | 483k | }); | 525 | 483k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits>*> const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>*> const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>*> const&) |
526 | | |
527 | 816k | void sortNodesY(const NodeListIterator& begin, const NodeListIterator& end) { |
528 | 437M | std::sort(begin, end, [](const Node &a, const Node &b) { |
529 | 437M | return BoundsTraits::getY(a.getBounds()) < BoundsTraits::getY(b.getBounds()); |
530 | 437M | }); Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits> const&) constgeos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits> const&) constLine | Count | Source | 528 | 16.4M | std::sort(begin, end, [](const Node &a, const Node &b) { | 529 | 16.4M | return BoundsTraits::getY(a.getBounds()) < BoundsTraits::getY(b.getBounds()); | 530 | 16.4M | }); |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits> const&) constgeos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits> const&) constLine | Count | Source | 528 | 421M | std::sort(begin, end, [](const Node &a, const Node &b) { | 529 | 421M | return BoundsTraits::getY(a.getBounds()) < BoundsTraits::getY(b.getBounds()); | 530 | 421M | }); |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits> const&) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits> const&) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits> const&) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits> const&) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits> const&) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits> const&) const |
531 | 816k | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits>*> const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>*> const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>*> const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>*> const&) geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>*> const&) Line | Count | Source | 527 | 21.8k | void sortNodesY(const NodeListIterator& begin, const NodeListIterator& end) { | 528 | 21.8k | std::sort(begin, end, [](const Node &a, const Node &b) { | 529 | 21.8k | return BoundsTraits::getY(a.getBounds()) < BoundsTraits::getY(b.getBounds()); | 530 | 21.8k | }); | 531 | 21.8k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>*> const&) geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>*> const&) Line | Count | Source | 527 | 794k | void sortNodesY(const NodeListIterator& begin, const NodeListIterator& end) { | 528 | 794k | std::sort(begin, end, [](const Node &a, const Node &b) { | 529 | 794k | return BoundsTraits::getY(a.getBounds()) < BoundsTraits::getY(b.getBounds()); | 530 | 794k | }); | 531 | 794k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits>*> const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>*> const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>*> const&) |
532 | | |
533 | | // Helper function to visit an item using a visitor that has no return value. |
534 | | // In this case, we will always return true, indicating that querying should |
535 | | // continue. |
536 | | template<typename Visitor, |
537 | | typename std::enable_if<std::is_void<decltype(std::declval<Visitor>()(std::declval<ItemType>()))>::value, std::nullptr_t>::type = nullptr > |
538 | | bool visitLeaf(Visitor&& visitor, const Node& node) |
539 | 3.68M | { |
540 | 3.68M | visitor(node.getItem()); |
541 | 3.68M | return true; |
542 | 3.68M | } Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtree<void*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(void const*)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtree<void*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(void const*)#1}&, geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtree<void*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(void const*)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtree<void*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(void const*)#1}&, geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtree<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator const*)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtree<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator const*)#1}&, geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtree<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator const*)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtree<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator const*)#1}&, geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtree<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::operation::distance::FacetSequence const*)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtree<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::operation::distance::FacetSequence const*)#1}&, geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtree<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::operation::distance::FacetSequence const*)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtree<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::operation::distance::FacetSequence const*)#1}&, geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits> const&)IndexedPointInAreaLocator.cpp:bool geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::visitLeaf<geos::algorithm::locate::IndexedPointInAreaLocator::locate(geos::geom::CoordinateXY const*)::$_0&, (decltype(nullptr))0>(geos::algorithm::locate::IndexedPointInAreaLocator::locate(geos::geom::CoordinateXY const*)::$_0&, geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits> const&) Line | Count | Source | 539 | 3.68M | { | 540 | 3.68M | visitor(node.getItem()); | 541 | 3.68M | return true; | 542 | 3.68M | } |
Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::Geometry const*)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::Geometry const*)#1}&, geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::Geometry const*)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::Geometry const*)#1}&, geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: CoverageValidator.cpp:bool geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::coverage::CoverageValidator::validate(geos::geom::Geometry const*, geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>&)::$_0&, (decltype(nullptr))0>(geos::coverage::CoverageValidator::validate(geos::geom::Geometry const*, geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>&)::$_0&, geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits> const&) Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtree<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::coverage::TPVWSimplifier::Edge const*)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtree<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::coverage::TPVWSimplifier::Edge const*)#1}&, geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtree<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::coverage::TPVWSimplifier::Edge const*)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtree<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::coverage::TPVWSimplifier::Edge const*)#1}&, geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::coverage::TPVWSimplifier::Edge const*, std::__1::allocator<geos::coverage::TPVWSimplifier::Edge const*> >&)::{lambda(geos::coverage::TPVWSimplifier::Edge const* const&)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::coverage::TPVWSimplifier::Edge const*, std::__1::allocator<geos::coverage::TPVWSimplifier::Edge const*> >&)::{lambda(geos::coverage::TPVWSimplifier::Edge const* const&)#1}&, geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtree<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::index::chain::MonotoneChain const*)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtree<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::index::chain::MonotoneChain const*)#1}&, geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtree<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::index::chain::MonotoneChain const*)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtree<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::index::chain::MonotoneChain const*)#1}&, geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >&)::{lambda(unsigned long const&)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >&)::{lambda(unsigned long const&)#1}&, geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtree<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::operation::polygonize::EdgeRing const*)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtree<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::operation::polygonize::EdgeRing const*)#1}&, geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtree<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::operation::polygonize::EdgeRing const*)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtree<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::operation::polygonize::EdgeRing const*)#1}&, geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtree<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::LinearRing const*)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtree<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::LinearRing const*)#1}&, geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtree<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::LinearRing const*)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtree<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::LinearRing const*)#1}&, geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtree<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::Polygon const*)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtree<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::Polygon const*)#1}&, geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtree<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::Polygon const*)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtree<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::Polygon const*)#1}&, geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::algorithm::locate::IndexedPointInAreaLocator*, std::__1::allocator<geos::algorithm::locate::IndexedPointInAreaLocator*> >&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator* const&)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::algorithm::locate::IndexedPointInAreaLocator*, std::__1::allocator<geos::algorithm::locate::IndexedPointInAreaLocator*> >&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator* const&)#1}&, geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::operation::polygonize::EdgeRing*, std::__1::allocator<geos::operation::polygonize::EdgeRing*> >&)::{lambda(geos::operation::polygonize::EdgeRing* const&)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::operation::polygonize::EdgeRing*, std::__1::allocator<geos::operation::polygonize::EdgeRing*> >&)::{lambda(geos::operation::polygonize::EdgeRing* const&)#1}&, geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::geom::LinearRing const*, std::__1::allocator<geos::geom::LinearRing const*> >&)::{lambda(geos::geom::LinearRing const* const&)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::geom::LinearRing const*, std::__1::allocator<geos::geom::LinearRing const*> >&)::{lambda(geos::geom::LinearRing const* const&)#1}&, geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits> const&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::geom::Polygon const*, std::__1::allocator<geos::geom::Polygon const*> >&)::{lambda(geos::geom::Polygon const* const&)#1}&, (decltype(nullptr))0>(geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::geom::Polygon const*, std::__1::allocator<geos::geom::Polygon const*> >&)::{lambda(geos::geom::Polygon const* const&)#1}&, geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits> const&) |
543 | | |
544 | | template<typename Visitor, |
545 | | typename std::enable_if<std::is_void<decltype(std::declval<Visitor>()(std::declval<ItemType>(), std::declval<ItemType>()))>::value, std::nullptr_t>::type = nullptr > |
546 | | bool visitLeaves(Visitor&& visitor, const Node& node1, const Node& node2) |
547 | | { |
548 | | visitor(node1.getItem(), node2.getItem()); |
549 | | return true; |
550 | | } |
551 | | |
552 | | // MSVC 2015 does not implement C++11 expression SFINAE and considers this a |
553 | | // redefinition of a previous method |
554 | | #if !defined(_MSC_VER) || _MSC_VER >= 1910 |
555 | | template<typename Visitor, |
556 | | typename std::enable_if<std::is_void<decltype(std::declval<Visitor>()(std::declval<BoundsType>(), std::declval<ItemType>()))>::value, std::nullptr_t>::type = nullptr > |
557 | | bool visitLeaf(Visitor&& visitor, const Node& node) |
558 | | { |
559 | | visitor(node.getBounds(), node.getItem()); |
560 | | return true; |
561 | | } |
562 | | #endif |
563 | | |
564 | | // If the visitor function does return a value, we will use this to indicate |
565 | | // that querying should continue. |
566 | | template<typename Visitor, |
567 | | typename std::enable_if<!std::is_void<decltype(std::declval<Visitor>()(std::declval<ItemType>()))>::value, std::nullptr_t>::type = nullptr> |
568 | | bool visitLeaf(Visitor&& visitor, const Node& node) |
569 | 0 | { |
570 | 0 | return visitor(node.getItem()); |
571 | 0 | } Unexecuted instantiation: MCIndexSegmentSetMutualIntersector.cpp:bool geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::noding::MCIndexSegmentSetMutualIntersector::intersectChains()::$_0&, (decltype(nullptr))0>(geos::noding::MCIndexSegmentSetMutualIntersector::intersectChains()::$_0&, geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits> const&) Unexecuted instantiation: SegmentMCIndex.cpp:bool geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::visitLeaf<geos::operation::buffer::SegmentMCIndex::query(geos::geom::Envelope const*, geos::index::chain::MonotoneChainSelectAction&)::$_0&, (decltype(nullptr))0>(geos::operation::buffer::SegmentMCIndex::query(geos::geom::Envelope const*, geos::index::chain::MonotoneChainSelectAction&)::$_0&, geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits> const&) |
572 | | |
573 | | template<typename Visitor, |
574 | | typename std::enable_if<!std::is_void<decltype(std::declval<Visitor>()(std::declval<ItemType>(), std::declval<ItemType>()))>::value, std::nullptr_t>::type = nullptr > |
575 | | bool visitLeaves(Visitor&& visitor, const Node& node1, const Node& node2) |
576 | 407M | { |
577 | 407M | return visitor(node1.getItem(), node2.getItem()); |
578 | 407M | } |
579 | | |
580 | | // MSVC 2015 does not implement C++11 expression SFINAE and considers this a |
581 | | // redefinition of a previous method |
582 | | #if !defined(_MSC_VER) || _MSC_VER >= 1910 |
583 | | template<typename Visitor, |
584 | | typename std::enable_if<!std::is_void<decltype(std::declval<Visitor>()(std::declval<BoundsType>(), std::declval<ItemType>()))>::value, std::nullptr_t>::type = nullptr> |
585 | | bool visitLeaf(Visitor&& visitor, const Node& node) |
586 | | { |
587 | | return visitor(node.getBounds(), node.getItem()); |
588 | | } |
589 | | #endif |
590 | | |
591 | | template<typename Visitor> |
592 | | bool query(const BoundsType& queryEnv, |
593 | | const Node& node, |
594 | 540k | Visitor&& visitor) { |
595 | | |
596 | 540k | assert(!node.isLeaf()); |
597 | | |
598 | 5.51M | for (auto *child = node.beginChildren(); child < node.endChildren(); ++child) { |
599 | 4.97M | if (child->boundsIntersect(queryEnv)) { |
600 | 4.15M | if (child->isLeaf()) { |
601 | 3.68M | if (!child->isDeleted()) { |
602 | 3.68M | if (!visitLeaf(visitor, *child)) { |
603 | 0 | return false; // abort query |
604 | 0 | } |
605 | 3.68M | } |
606 | 3.68M | } else { |
607 | 474k | if (!query(queryEnv, *child, visitor)) { |
608 | 0 | return false; // abort query |
609 | 0 | } |
610 | 474k | } |
611 | 4.15M | } |
612 | 4.97M | } |
613 | 540k | return true; // continue searching |
614 | 540k | } Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<void*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(void const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<void*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(void const*)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<void*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(void const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<void*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(void const*)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator const*)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator const*)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::operation::distance::FacetSequence const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::operation::distance::FacetSequence const*)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::operation::distance::FacetSequence const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::operation::distance::FacetSequence const*)#1}&)IndexedPointInAreaLocator.cpp:bool geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::query<geos::algorithm::locate::IndexedPointInAreaLocator::locate(geos::geom::CoordinateXY const*)::$_0&>(geos::index::strtree::Interval const&, geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits> const&, geos::algorithm::locate::IndexedPointInAreaLocator::locate(geos::geom::CoordinateXY const*)::$_0&) Line | Count | Source | 594 | 540k | Visitor&& visitor) { | 595 | | | 596 | 540k | assert(!node.isLeaf()); | 597 | | | 598 | 5.51M | for (auto *child = node.beginChildren(); child < node.endChildren(); ++child) { | 599 | 4.97M | if (child->boundsIntersect(queryEnv)) { | 600 | 4.15M | if (child->isLeaf()) { | 601 | 3.68M | if (!child->isDeleted()) { | 602 | 3.68M | if (!visitLeaf(visitor, *child)) { | 603 | 0 | return false; // abort query | 604 | 0 | } | 605 | 3.68M | } | 606 | 3.68M | } else { | 607 | 474k | if (!query(queryEnv, *child, visitor)) { | 608 | 0 | return false; // abort query | 609 | 0 | } | 610 | 474k | } | 611 | 4.15M | } | 612 | 4.97M | } | 613 | 540k | return true; // continue searching | 614 | 540k | } |
Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::Geometry const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::Geometry const*)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::Geometry const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::Geometry const*)#1}&)Unexecuted instantiation: CoverageValidator.cpp:bool geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query<geos::coverage::CoverageValidator::validate(geos::geom::Geometry const*, geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>&)::$_0&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits> const&, geos::coverage::CoverageValidator::validate(geos::geom::Geometry const*, geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>&)::$_0&) Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::coverage::TPVWSimplifier::Edge const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::coverage::TPVWSimplifier::Edge const*)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::coverage::TPVWSimplifier::Edge const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::coverage::TPVWSimplifier::Edge const*)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::coverage::TPVWSimplifier::Edge const*, std::__1::allocator<geos::coverage::TPVWSimplifier::Edge const*> >&)::{lambda(geos::coverage::TPVWSimplifier::Edge const* const&)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::coverage::TPVWSimplifier::Edge const*, std::__1::allocator<geos::coverage::TPVWSimplifier::Edge const*> >&)::{lambda(geos::coverage::TPVWSimplifier::Edge const* const&)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::index::chain::MonotoneChain const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::index::chain::MonotoneChain const*)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::index::chain::MonotoneChain const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::index::chain::MonotoneChain const*)#1}&)Unexecuted instantiation: MCIndexSegmentSetMutualIntersector.cpp:bool geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query<geos::noding::MCIndexSegmentSetMutualIntersector::intersectChains()::$_0&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits> const&, geos::noding::MCIndexSegmentSetMutualIntersector::intersectChains()::$_0&) Unexecuted instantiation: SegmentMCIndex.cpp:bool geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query<geos::operation::buffer::SegmentMCIndex::query(geos::geom::Envelope const*, geos::index::chain::MonotoneChainSelectAction&)::$_0&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits> const&, geos::operation::buffer::SegmentMCIndex::query(geos::geom::Envelope const*, geos::index::chain::MonotoneChainSelectAction&)::$_0&) Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >&)::{lambda(unsigned long const&)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >&)::{lambda(unsigned long const&)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::operation::polygonize::EdgeRing const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::operation::polygonize::EdgeRing const*)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::operation::polygonize::EdgeRing const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::operation::polygonize::EdgeRing const*)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::LinearRing const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::LinearRing const*)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::LinearRing const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::LinearRing const*)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::Polygon const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::Polygon const*)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::Polygon const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::Polygon const*)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::algorithm::locate::IndexedPointInAreaLocator*, std::__1::allocator<geos::algorithm::locate::IndexedPointInAreaLocator*> >&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator* const&)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::algorithm::locate::IndexedPointInAreaLocator*, std::__1::allocator<geos::algorithm::locate::IndexedPointInAreaLocator*> >&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator* const&)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::operation::polygonize::EdgeRing*, std::__1::allocator<geos::operation::polygonize::EdgeRing*> >&)::{lambda(geos::operation::polygonize::EdgeRing* const&)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::operation::polygonize::EdgeRing*, std::__1::allocator<geos::operation::polygonize::EdgeRing*> >&)::{lambda(geos::operation::polygonize::EdgeRing* const&)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::geom::LinearRing const*, std::__1::allocator<geos::geom::LinearRing const*> >&)::{lambda(geos::geom::LinearRing const* const&)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::geom::LinearRing const*, std::__1::allocator<geos::geom::LinearRing const*> >&)::{lambda(geos::geom::LinearRing const* const&)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::geom::Polygon const*, std::__1::allocator<geos::geom::Polygon const*> >&)::{lambda(geos::geom::Polygon const* const&)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::geom::Polygon const*, std::__1::allocator<geos::geom::Polygon const*> >&)::{lambda(geos::geom::Polygon const* const&)#1}&) |
615 | | |
616 | | template<typename Visitor> |
617 | | bool queryPairs(const Node& queryNode, |
618 | | const Node& searchNode, |
619 | 748M | Visitor&& visitor) { |
620 | | |
621 | 748M | assert(!searchNode.isLeaf()); |
622 | | |
623 | 6.88G | for (auto* child = searchNode.beginChildren(); child < searchNode.endChildren(); ++child) { |
624 | 6.27G | if (child->isLeaf()) { |
625 | | // Only visit leaf nodes if they have a higher address than the query node, |
626 | | // to avoid processing the same pairs twice. |
627 | 4.07G | if (child > &queryNode && !child->isDeleted() && child->boundsIntersect(queryNode.getBounds())) { |
628 | 407M | if (!visitLeaves(visitor, queryNode, *child)) { |
629 | 26.0M | return false; // abort query |
630 | 26.0M | } |
631 | 407M | } |
632 | 4.07G | } else { |
633 | 2.19G | if (child->boundsIntersect(queryNode.getBounds())) { |
634 | 706M | if (!queryPairs(queryNode, *child, visitor)) { |
635 | 117M | return false; // abort query |
636 | 117M | } |
637 | 706M | } |
638 | 2.19G | } |
639 | 6.27G | } |
640 | | |
641 | 605M | return true; // continue searching |
642 | 748M | } |
643 | | |
644 | | bool remove(const BoundsType& queryEnv, |
645 | | const Node& node, |
646 | 0 | const ItemType& item) { |
647 | |
|
648 | 0 | assert(!node.isLeaf()); |
649 | |
|
650 | 0 | for (auto *child = node.beginChildren(); child < node.endChildren(); ++child) { |
651 | 0 | if (child->boundsIntersect(queryEnv)) { |
652 | 0 | if (child->isLeaf()) { |
653 | 0 | if (!child->isDeleted() && child->getItem() == item) { |
654 | | // const cast is ugly, but alternative seems to be to remove all |
655 | | // const qualifiers in Node and open up mutability everywhere? |
656 | 0 | auto mutableChild = const_cast<Node*>(child); |
657 | 0 | mutableChild->removeItem(); |
658 | 0 | return true; |
659 | 0 | } |
660 | 0 | } else { |
661 | 0 | bool removed = remove(queryEnv, *child, item); |
662 | 0 | if (removed) { |
663 | 0 | return true; |
664 | 0 | } |
665 | 0 | } |
666 | 0 | } |
667 | 0 | } |
668 | | |
669 | 0 | return false; |
670 | 0 | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits> const&, void* const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits> const&, geos::algorithm::locate::IndexedPointInAreaLocator* const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits> const&, geos::operation::distance::FacetSequence const* const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits> const&, geos::geom::Geometry const* const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits> const&, geos::coverage::TPVWSimplifier::Edge const* const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits> const&, geos::index::chain::MonotoneChain const* const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits> const&, geos::operation::polygonize::EdgeRing* const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits> const&, geos::geom::LinearRing const* const&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits> const&, geos::geom::Polygon const* const&) |
671 | | |
672 | 1.06M | size_t sliceCount(size_t numNodes) const { |
673 | 1.06M | double minLeafCount = std::ceil(static_cast<double>(numNodes) / static_cast<double>(nodeCapacity)); |
674 | | |
675 | 1.06M | return static_cast<size_t>(std::ceil(std::sqrt(minLeafCount))); |
676 | 1.06M | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::sliceCount(unsigned long) const Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::sliceCount(unsigned long) const Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::sliceCount(unsigned long) const geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::sliceCount(unsigned long) const Line | Count | Source | 672 | 79.4k | size_t sliceCount(size_t numNodes) const { | 673 | 79.4k | double minLeafCount = std::ceil(static_cast<double>(numNodes) / static_cast<double>(nodeCapacity)); | 674 | | | 675 | 79.4k | return static_cast<size_t>(std::ceil(std::sqrt(minLeafCount))); | 676 | 79.4k | } |
geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::sliceCount(unsigned long) const Line | Count | Source | 672 | 14.5k | size_t sliceCount(size_t numNodes) const { | 673 | 14.5k | double minLeafCount = std::ceil(static_cast<double>(numNodes) / static_cast<double>(nodeCapacity)); | 674 | | | 675 | 14.5k | return static_cast<size_t>(std::ceil(std::sqrt(minLeafCount))); | 676 | 14.5k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::sliceCount(unsigned long) const geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::sliceCount(unsigned long) const Line | Count | Source | 672 | 967k | size_t sliceCount(size_t numNodes) const { | 673 | 967k | double minLeafCount = std::ceil(static_cast<double>(numNodes) / static_cast<double>(nodeCapacity)); | 674 | | | 675 | 967k | return static_cast<size_t>(std::ceil(std::sqrt(minLeafCount))); | 676 | 967k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::sliceCount(unsigned long) const Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::sliceCount(unsigned long) const Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::sliceCount(unsigned long) const Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::sliceCount(unsigned long) const |
677 | | |
678 | 1.06M | static size_t sliceCapacity(size_t numNodes, size_t numSlices) { |
679 | 1.06M | return static_cast<size_t>(std::ceil(static_cast<double>(numNodes) / static_cast<double>(numSlices))); |
680 | 1.06M | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::sliceCapacity(unsigned long, unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::sliceCapacity(unsigned long, unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::sliceCapacity(unsigned long, unsigned long) geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::sliceCapacity(unsigned long, unsigned long) Line | Count | Source | 678 | 79.4k | static size_t sliceCapacity(size_t numNodes, size_t numSlices) { | 679 | 79.4k | return static_cast<size_t>(std::ceil(static_cast<double>(numNodes) / static_cast<double>(numSlices))); | 680 | 79.4k | } |
geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::sliceCapacity(unsigned long, unsigned long) Line | Count | Source | 678 | 14.5k | static size_t sliceCapacity(size_t numNodes, size_t numSlices) { | 679 | 14.5k | return static_cast<size_t>(std::ceil(static_cast<double>(numNodes) / static_cast<double>(numSlices))); | 680 | 14.5k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::sliceCapacity(unsigned long, unsigned long) geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::sliceCapacity(unsigned long, unsigned long) Line | Count | Source | 678 | 967k | static size_t sliceCapacity(size_t numNodes, size_t numSlices) { | 679 | 967k | return static_cast<size_t>(std::ceil(static_cast<double>(numNodes) / static_cast<double>(numSlices))); | 680 | 967k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::sliceCapacity(unsigned long, unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::sliceCapacity(unsigned long, unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::sliceCapacity(unsigned long, unsigned long) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::sliceCapacity(unsigned long, unsigned long) |
681 | | }; |
682 | | |
683 | | struct EnvelopeTraits { |
684 | | using BoundsType = geom::Envelope; |
685 | | using TwoDimensional = std::true_type; |
686 | | |
687 | 2.95G | static bool intersects(const BoundsType& a, const BoundsType& b) { |
688 | 2.95G | return a.intersects(b); |
689 | 2.95G | } |
690 | | |
691 | 0 | static double size(const BoundsType& a) { |
692 | 0 | return a.getArea(); |
693 | 0 | } |
694 | | |
695 | 0 | static double distance(const BoundsType& a, const BoundsType& b) { |
696 | 0 | return a.distance(b); |
697 | 0 | } |
698 | | |
699 | 0 | static double maxDistance(const BoundsType& a, const BoundsType& b) { |
700 | 0 | return a.maxDistance(b); |
701 | 0 | } |
702 | | |
703 | 0 | static BoundsType empty() { |
704 | 0 | return {}; |
705 | 0 | } |
706 | | |
707 | | template<typename ItemType> |
708 | 0 | static const BoundsType& fromItem(const ItemType& i) { |
709 | 0 | return *(i->getEnvelopeInternal()); |
710 | 0 | } |
711 | | |
712 | | template<typename ItemType> |
713 | 2.67M | static const BoundsType& fromItem(ItemType&& i) { |
714 | 2.67M | return *(i->getEnvelopeInternal()); |
715 | 2.67M | } Unexecuted instantiation: geos::geom::Envelope const& geos::index::strtree::EnvelopeTraits::fromItem<geos::coverage::TPVWSimplifier::Edge const*&>(geos::coverage::TPVWSimplifier::Edge const*&) geos::geom::Envelope const& geos::index::strtree::EnvelopeTraits::fromItem<geos::geom::Geometry const*&>(geos::geom::Geometry const*&) Line | Count | Source | 713 | 2.67M | static const BoundsType& fromItem(ItemType&& i) { | 714 | 2.67M | return *(i->getEnvelopeInternal()); | 715 | 2.67M | } |
|
716 | | |
717 | 1.31G | static double getX(const BoundsType& a) { |
718 | 1.31G | return a.getMinX() + a.getMaxX(); |
719 | 1.31G | } |
720 | | |
721 | 875M | static double getY(const BoundsType& a) { |
722 | 875M | return a.getMinY() + a.getMaxY(); |
723 | 875M | } |
724 | | |
725 | 48.5M | static void expandToInclude(BoundsType& a, const BoundsType& b) { |
726 | 48.5M | a.expandToInclude(b); |
727 | 48.5M | } |
728 | | |
729 | 51.0M | static bool isNull(const BoundsType& a) { |
730 | 51.0M | return a.isNull(); |
731 | 51.0M | } |
732 | | }; |
733 | | |
734 | | struct IntervalTraits { |
735 | | using BoundsType = Interval; |
736 | | using TwoDimensional = std::false_type; |
737 | | |
738 | 5.07M | static bool intersects(const BoundsType& a, const BoundsType& b) { |
739 | 5.07M | return a.intersects(&b); |
740 | 5.07M | } |
741 | | |
742 | 0 | static double size(const BoundsType& a) { |
743 | 0 | return a.getWidth(); |
744 | 0 | } |
745 | | |
746 | 106M | static double getX(const BoundsType& a) { |
747 | 106M | return a.getMin() + a.getMax(); |
748 | 106M | } |
749 | | |
750 | 0 | static double getY(const BoundsType& a) { |
751 | 0 | return a.getMin() + a.getMax(); |
752 | 0 | } |
753 | | |
754 | 6.10M | static void expandToInclude(BoundsType& a, const BoundsType& b) { |
755 | 6.10M | a.expandToInclude(&b); |
756 | 6.10M | } |
757 | | |
758 | 6.12M | static bool isNull(const BoundsType& a) { |
759 | 6.12M | (void) a; |
760 | 6.12M | return false; |
761 | 6.12M | } |
762 | | }; |
763 | | |
764 | | |
765 | | template<typename ItemType, typename BoundsTraits = EnvelopeTraits> |
766 | | class TemplateSTRtree : public TemplateSTRtreeImpl<ItemType, BoundsTraits> { |
767 | | public: |
768 | | using TemplateSTRtreeImpl<ItemType, BoundsTraits>::TemplateSTRtreeImpl; |
769 | | }; |
770 | | |
771 | | // When ItemType is a pointer and our bounds are geom::Envelope, adopt |
772 | | // the SpatialIndex interface which requires queries via an envelope |
773 | | // and items to be representable as void*. |
774 | | template<typename ItemType> |
775 | | class TemplateSTRtree<ItemType*, EnvelopeTraits> : public TemplateSTRtreeImpl<ItemType*, EnvelopeTraits>, public SpatialIndex { |
776 | | public: |
777 | | using TemplateSTRtreeImpl<ItemType*, EnvelopeTraits>::TemplateSTRtreeImpl; |
778 | | using TemplateSTRtreeImpl<ItemType*, EnvelopeTraits>::insert; |
779 | | using TemplateSTRtreeImpl<ItemType*, EnvelopeTraits>::query; |
780 | | using TemplateSTRtreeImpl<ItemType*, EnvelopeTraits>::remove; |
781 | | |
782 | | // The SpatialIndex methods only work when we are storing a pointer type. |
783 | 0 | void query(const geom::Envelope* queryEnv, std::vector<void*>& results) override { |
784 | 0 | query(*queryEnv, [&results](const ItemType* x) { |
785 | 0 | results.push_back(const_cast<void*>(static_cast<const void*>(x))); |
786 | 0 | }); Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<void*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(void const*)#1}::operator()(void const*) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::Geometry const*)#1}::operator()(geos::geom::Geometry const*) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::coverage::TPVWSimplifier::Edge const*)#1}::operator()(geos::coverage::TPVWSimplifier::Edge const*) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::index::chain::MonotoneChain const*)#1}::operator()(geos::index::chain::MonotoneChain const*) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::operation::distance::FacetSequence const*)#1}::operator()(geos::operation::distance::FacetSequence const*) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::LinearRing const*)#1}::operator()(geos::geom::LinearRing const*) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator const*)#1}::operator()(geos::algorithm::locate::IndexedPointInAreaLocator const*) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::operation::polygonize::EdgeRing const*)#1}::operator()(geos::operation::polygonize::EdgeRing const*) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::geom::Polygon const*)#1}::operator()(geos::geom::Polygon const*) const |
787 | 0 | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<void*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&) |
788 | | |
789 | 0 | void query(const geom::Envelope* queryEnv, ItemVisitor& visitor) override { |
790 | 0 | query(*queryEnv, [&visitor](const ItemType* x) { |
791 | 0 | visitor.visitItem(const_cast<void*>(static_cast<const void*>(x))); |
792 | 0 | }); Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<void*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(void const*)#1}::operator()(void const*) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::Geometry const*)#1}::operator()(geos::geom::Geometry const*) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::coverage::TPVWSimplifier::Edge const*)#1}::operator()(geos::coverage::TPVWSimplifier::Edge const*) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::index::chain::MonotoneChain const*)#1}::operator()(geos::index::chain::MonotoneChain const*) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::operation::distance::FacetSequence const*)#1}::operator()(geos::operation::distance::FacetSequence const*) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::LinearRing const*)#1}::operator()(geos::geom::LinearRing const*) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::algorithm::locate::IndexedPointInAreaLocator const*)#1}::operator()(geos::algorithm::locate::IndexedPointInAreaLocator const*) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::operation::polygonize::EdgeRing const*)#1}::operator()(geos::operation::polygonize::EdgeRing const*) constUnexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::geom::Polygon const*)#1}::operator()(geos::geom::Polygon const*) const |
793 | 0 | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<void*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&) |
794 | | |
795 | 0 | bool remove(const geom::Envelope* itemEnv, void* item) override { |
796 | 0 | return remove(*itemEnv, static_cast<ItemType*>(item)); |
797 | 0 | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<void*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const*, void*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const*, void*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const*, void*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const*, void*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const*, void*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const*, void*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const*, void*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const*, void*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const*, void*) |
798 | | |
799 | 0 | void insert(const geom::Envelope* itemEnv, void* item) override { |
800 | 0 | insert(*itemEnv, std::move(static_cast<ItemType*>(item))); |
801 | 0 | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<void*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const*, void*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const*, void*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const*, void*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const*, void*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const*, void*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const*, void*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const*, void*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const*, void*) Unexecuted instantiation: geos::index::strtree::TemplateSTRtree<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const*, void*) |
802 | | }; |
803 | | |
804 | | |
805 | | } |
806 | | } |
807 | | } |