/src/geos/include/geos/index/strtree/TemplateSTRtree.h
Line | Count | Source |
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 | 10.8k | typename NodeList::const_iterator&& end) : m_iter(iter), m_end(end) { |
74 | 10.8k | skipDeleted(); |
75 | 10.8k | } |
76 | | |
77 | 4.85M | const ItemType& operator*() const { |
78 | 4.85M | return m_iter->getItem(); |
79 | 4.85M | } |
80 | | |
81 | 9.71M | Iterator& operator++() { |
82 | 9.71M | m_iter++; |
83 | 9.71M | skipDeleted(); |
84 | 9.71M | return *this; |
85 | 9.71M | } |
86 | | |
87 | | friend bool operator==(const Iterator& a, const Iterator& b) { |
88 | | return a.m_iter == b.m_iter; |
89 | | } |
90 | | |
91 | 9.72M | friend bool operator!=(const Iterator& a, const Iterator& b) { |
92 | 9.72M | return a.m_iter != b.m_iter; |
93 | 9.72M | } |
94 | | |
95 | | private: |
96 | 9.72M | void skipDeleted() { |
97 | 9.72M | while(m_iter != m_end && m_iter->isDeleted()) { |
98 | 0 | m_iter++; |
99 | 0 | } |
100 | 9.72M | } |
101 | | |
102 | | typename NodeList::const_iterator m_iter; |
103 | | typename NodeList::const_iterator m_end; |
104 | | }; |
105 | | |
106 | | class Items { |
107 | | public: |
108 | 10.8k | explicit Items(TemplateSTRtreeImpl& tree) : m_tree(tree) {} |
109 | | |
110 | 5.40k | Iterator begin() { |
111 | 5.40k | return Iterator(m_tree.nodes.cbegin(), |
112 | 5.40k | std::next(m_tree.nodes.cbegin(), static_cast<long>(m_tree.numItems))); |
113 | 5.40k | } |
114 | | |
115 | 5.40k | Iterator end() { |
116 | 5.40k | return Iterator(std::next(m_tree.nodes.cbegin(), static_cast<long>(m_tree.numItems)), |
117 | 5.40k | std::next(m_tree.nodes.cbegin(), static_cast<long>(m_tree.numItems))); |
118 | 5.40k | } |
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 | 699k | root(nullptr), |
132 | 699k | nodeCapacity(p_nodeCapacity), |
133 | 699k | numItems(0) |
134 | 699k | { |
135 | 699k | validateConstruction(); |
136 | 699k | } 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 | 131 | 23.0k | root(nullptr), | 132 | 23.0k | nodeCapacity(p_nodeCapacity), | 133 | 23.0k | numItems(0) | 134 | 23.0k | { | 135 | 23.0k | validateConstruction(); | 136 | 23.0k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::TemplateSTRtreeImpl(unsigned long) 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 | 131 | 456k | root(nullptr), | 132 | 456k | nodeCapacity(p_nodeCapacity), | 133 | 456k | numItems(0) | 134 | 456k | { | 135 | 456k | validateConstruction(); | 136 | 456k | } |
geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::TemplateSTRtreeImpl(unsigned long) Line | Count | Source | 131 | 220k | root(nullptr), | 132 | 220k | nodeCapacity(p_nodeCapacity), | 133 | 220k | numItems(0) | 134 | 220k | { | 135 | 220k | validateConstruction(); | 136 | 220k | } |
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) |
137 | | |
138 | | /** |
139 | | * Constructs a tree with the given maximum number of child nodes that |
140 | | * a node may have, with the expected total number of items in the tree used |
141 | | * to pre-allocate storage. |
142 | | */ |
143 | | TemplateSTRtreeImpl(size_t p_nodeCapacity, size_t itemCapacity) : |
144 | 28.4k | root(nullptr), |
145 | 28.4k | nodeCapacity(p_nodeCapacity), |
146 | 28.4k | numItems(0) |
147 | 28.4k | { |
148 | 28.4k | auto finalSize = treeSize(itemCapacity); |
149 | 28.4k | nodes.reserve(finalSize); |
150 | 28.4k | validateConstruction(); |
151 | 28.4k | } geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::TemplateSTRtreeImpl(unsigned long, unsigned long) Line | Count | Source | 144 | 23.0k | root(nullptr), | 145 | 23.0k | nodeCapacity(p_nodeCapacity), | 146 | 23.0k | numItems(0) | 147 | 23.0k | { | 148 | 23.0k | auto finalSize = treeSize(itemCapacity); | 149 | 23.0k | nodes.reserve(finalSize); | 150 | 23.0k | validateConstruction(); | 151 | 23.0k | } |
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 | 5.40k | root(nullptr), | 145 | 5.40k | nodeCapacity(p_nodeCapacity), | 146 | 5.40k | numItems(0) | 147 | 5.40k | { | 148 | 5.40k | auto finalSize = treeSize(itemCapacity); | 149 | 5.40k | nodes.reserve(finalSize); | 150 | 5.40k | validateConstruction(); | 151 | 5.40k | } |
|
152 | | |
153 | | /** |
154 | | * Copy constructor, needed because mutex is not copyable |
155 | | */ |
156 | | TemplateSTRtreeImpl(const TemplateSTRtreeImpl& other) : |
157 | 23.0k | root(other.root), |
158 | 23.0k | nodeCapacity(other.nodeCapacity), |
159 | 23.0k | numItems(other.numItems) { |
160 | 23.0k | nodes = other.nodes; |
161 | 23.0k | } |
162 | | |
163 | | TemplateSTRtreeImpl& operator=(TemplateSTRtreeImpl other) |
164 | 23.0k | { |
165 | 23.0k | root = other.root; |
166 | 23.0k | nodeCapacity = other.nodeCapacity; |
167 | 23.0k | numItems = other.numItems; |
168 | 23.0k | nodes = other.nodes; |
169 | 23.0k | return *this; |
170 | 23.0k | } |
171 | | |
172 | | /// @} |
173 | | /// \defgroup insert Insertion |
174 | | /// @{ |
175 | | |
176 | | /** Move the given item into the tree */ |
177 | 4.85M | void insert(ItemType&& item) { |
178 | 4.85M | insert(BoundsTraits::fromItem(item), std::forward<ItemType>(item)); |
179 | 4.85M | } 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 | 177 | 4.85M | void insert(ItemType&& item) { | 178 | 4.85M | insert(BoundsTraits::fromItem(item), std::forward<ItemType>(item)); | 179 | 4.85M | } |
|
180 | | |
181 | | /** Insert a copy of the given item into the tree */ |
182 | 0 | void insert(const ItemType& item) { |
183 | 0 | insert(BoundsTraits::fromItem(item), item); |
184 | 0 | } |
185 | | |
186 | | /** Move the given item into the tree */ |
187 | 44.5M | void insert(const BoundsType& itemEnv, ItemType&& item) { |
188 | 44.5M | if (!BoundsTraits::isNull(itemEnv)) { |
189 | 41.8M | createLeafNode(std::forward<ItemType>(item), itemEnv); |
190 | 41.8M | } |
191 | 44.5M | } 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::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const&, geos::index::chain::MonotoneChain const*&&) Line | Count | Source | 187 | 39.7M | void insert(const BoundsType& itemEnv, ItemType&& item) { | 188 | 39.7M | if (!BoundsTraits::isNull(itemEnv)) { | 189 | 36.9M | createLeafNode(std::forward<ItemType>(item), itemEnv); | 190 | 36.9M | } | 191 | 39.7M | } |
geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const&, geos::geom::Geometry const*&&) Line | Count | Source | 187 | 4.85M | void insert(const BoundsType& itemEnv, ItemType&& item) { | 188 | 4.85M | if (!BoundsTraits::isNull(itemEnv)) { | 189 | 4.85M | createLeafNode(std::forward<ItemType>(item), itemEnv); | 190 | 4.85M | } | 191 | 4.85M | } |
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*&&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const&, geos::operation::overlayng::OverlayEdgeRing*&&) 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*&&) |
192 | | |
193 | | /** Insert a copy of the given item into the tree */ |
194 | 7.48M | void insert(const BoundsType& itemEnv, const ItemType& item) { |
195 | 7.48M | if (!BoundsTraits::isNull(itemEnv)) { |
196 | 7.48M | createLeafNode(item, itemEnv); |
197 | 7.48M | } |
198 | 7.48M | } 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 | 194 | 7.36M | void insert(const BoundsType& itemEnv, const ItemType& item) { | 195 | 7.36M | if (!BoundsTraits::isNull(itemEnv)) { | 196 | 7.36M | createLeafNode(item, itemEnv); | 197 | 7.36M | } | 198 | 7.36M | } |
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::Geometry const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const&, geos::geom::Geometry const* const&) geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const&, geos::operation::overlayng::OverlayEdgeRing* const&) Line | Count | Source | 194 | 122k | void insert(const BoundsType& itemEnv, const ItemType& item) { | 195 | 122k | if (!BoundsTraits::isNull(itemEnv)) { | 196 | 122k | createLeafNode(item, itemEnv); | 197 | 122k | } | 198 | 122k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::insert(geos::geom::Envelope const&, geos::index::chain::MonotoneChain const* 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&) |
199 | | |
200 | | /// @} |
201 | | /// \defgroup NN Nearest-neighbor |
202 | | /// @{ |
203 | | |
204 | | /** Determine the two closest items in the tree using distance metric `distance`. */ |
205 | | template<typename ItemDistance> |
206 | 0 | std::pair<ItemType, ItemType> nearestNeighbour(ItemDistance& distance) { |
207 | 0 | return nearestNeighbour(*this, distance); |
208 | 0 | } |
209 | | |
210 | | /** Determine the two closest items in the tree using distance metric `ItemDistance`. */ |
211 | | template<typename ItemDistance> |
212 | | std::pair<ItemType, ItemType> nearestNeighbour() { |
213 | | return nearestNeighbour(*this); |
214 | | } |
215 | | |
216 | | /** Determine the two closest items this tree and `other` tree using distance metric `distance`. */ |
217 | | template<typename ItemDistance> |
218 | | std::pair<ItemType, ItemType> nearestNeighbour(TemplateSTRtreeImpl<ItemType, BoundsTraits> & other, |
219 | 0 | ItemDistance & distance) { |
220 | 0 | if (!getRoot() || !other.getRoot()) { |
221 | 0 | return { nullptr, nullptr }; |
222 | 0 | } |
223 | | |
224 | 0 | TemplateSTRtreeDistance<ItemType, BoundsTraits, ItemDistance> td(distance); |
225 | 0 | return td.nearestNeighbour(*root, *other.root); |
226 | 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&) |
227 | | |
228 | | /** Determine the two closest items this tree and `other` tree using distance metric `ItemDistance`. */ |
229 | | template<typename ItemDistance> |
230 | 0 | std::pair<ItemType, ItemType> nearestNeighbour(TemplateSTRtreeImpl<ItemType, BoundsTraits>& other) { |
231 | 0 | ItemDistance id; |
232 | 0 | return nearestNeighbour(other, id); |
233 | 0 | } |
234 | | |
235 | | template<typename ItemDistance> |
236 | 0 | ItemType nearestNeighbour(const BoundsType& env, const ItemType& item, ItemDistance& itemDist) { |
237 | 0 | build(); |
238 | |
|
239 | 0 | if (getRoot() == nullptr) { |
240 | 0 | return nullptr; |
241 | 0 | } |
242 | | |
243 | 0 | TemplateSTRNode<ItemType, BoundsTraits> bnd(item, env); |
244 | 0 | TemplateSTRNodePair<ItemType, BoundsTraits, ItemDistance> pair(*getRoot(), bnd, itemDist); |
245 | |
|
246 | 0 | TemplateSTRtreeDistance<ItemType, BoundsTraits, ItemDistance> td(itemDist); |
247 | 0 | return td.nearestNeighbour(pair).first; |
248 | 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&) |
249 | | |
250 | | template<typename ItemDistance> |
251 | 0 | ItemType nearestNeighbour(const BoundsType& env, const ItemType& item) { |
252 | 0 | ItemDistance id; |
253 | 0 | return nearestNeighbour(env, item, id); |
254 | 0 | } |
255 | | |
256 | | template<typename ItemDistance> |
257 | 0 | bool isWithinDistance(TemplateSTRtreeImpl<ItemType, BoundsTraits>& other, double maxDistance) { |
258 | 0 | ItemDistance itemDist; |
259 | |
|
260 | 0 | if (!getRoot() || !other.getRoot()) { |
261 | 0 | return false; |
262 | 0 | } |
263 | | |
264 | 0 | TemplateSTRtreeDistance<ItemType, BoundsTraits, ItemDistance> td(itemDist); |
265 | 0 | return td.isWithinDistance(*root, *other.root, maxDistance); |
266 | 0 | } |
267 | | |
268 | | /// @} |
269 | | /// \defgroup query Query |
270 | | /// @{ |
271 | | |
272 | | // Query the tree using the specified visitor. The visitor must be callable |
273 | | // either with a single argument of `const ItemType&` or with the |
274 | | // arguments `(const BoundsType&, const ItemType&). |
275 | | // The visitor need not return a value, but if it does return a value, |
276 | | // false values will be taken as a signal to stop the query. |
277 | | template<typename Visitor> |
278 | 341k | void query(const BoundsType& queryEnv, Visitor &&visitor) { |
279 | 341k | if (!built()) { |
280 | 225k | build(); |
281 | 225k | } |
282 | | |
283 | 341k | if (root && root->boundsIntersect(queryEnv)) { |
284 | 86.9k | if (root->isLeaf()) { |
285 | 4.44k | visitLeaf(visitor, *root); |
286 | 82.5k | } else { |
287 | 82.5k | query(queryEnv, *root, visitor); |
288 | 82.5k | } |
289 | 86.9k | } |
290 | 341k | } 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}&&)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}&&)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 | 278 | 305k | void query(const BoundsType& queryEnv, Visitor &&visitor) { | 279 | 305k | if (!built()) { | 280 | 190k | build(); | 281 | 190k | } | 282 | | | 283 | 305k | if (root && root->boundsIntersect(queryEnv)) { | 284 | 80.6k | if (root->isLeaf()) { | 285 | 401 | visitLeaf(visitor, *root); | 286 | 80.2k | } else { | 287 | 80.2k | query(queryEnv, *root, visitor); | 288 | 80.2k | } | 289 | 80.6k | } | 290 | 305k | } |
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::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: 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: DBSCANClusterFinder.cpp:void geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::query<geos::operation::cluster::DBSCANClusterFinder::process(std::__1::vector<geos::geom::Geometry const*, std::__1::allocator<geos::geom::Geometry const*> > const&, geos::index::strtree::TemplateSTRtree<unsigned long, geos::index::strtree::EnvelopeTraits>&, geos::operation::cluster::UnionFind&)::$_0>(geos::geom::Envelope const&, geos::operation::cluster::DBSCANClusterFinder::process(std::__1::vector<geos::geom::Geometry const*, std::__1::allocator<geos::geom::Geometry const*> > const&, geos::index::strtree::TemplateSTRtree<unsigned long, geos::index::strtree::EnvelopeTraits>&, geos::operation::cluster::UnionFind&)::$_0&&) Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::operation::overlayng::OverlayEdgeRing const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::operation::overlayng::OverlayEdgeRing const*)#1}&&)Unexecuted instantiation: void geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::operation::overlayng::OverlayEdgeRing const*)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtree<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::operation::overlayng::OverlayEdgeRing const*)#1}&&)void geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::operation::overlayng::OverlayEdgeRing*, std::__1::allocator<geos::operation::overlayng::OverlayEdgeRing*> >&)::{lambda(geos::operation::overlayng::OverlayEdgeRing* const&)#1}>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::operation::overlayng::OverlayEdgeRing*, std::__1::allocator<geos::operation::overlayng::OverlayEdgeRing*> >&)::{lambda(geos::operation::overlayng::OverlayEdgeRing* const&)#1}&&)Line | Count | Source | 278 | 36.1k | void query(const BoundsType& queryEnv, Visitor &&visitor) { | 279 | 36.1k | if (!built()) { | 280 | 35.1k | build(); | 281 | 35.1k | } | 282 | | | 283 | 36.1k | if (root && root->boundsIntersect(queryEnv)) { | 284 | 6.36k | if (root->isLeaf()) { | 285 | 4.04k | visitLeaf(visitor, *root); | 286 | 4.04k | } else { | 287 | 2.31k | query(queryEnv, *root, visitor); | 288 | 2.31k | } | 289 | 6.36k | } | 290 | 36.1k | } |
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}&&) |
291 | | |
292 | | // Query the tree for all pairs whose bounds intersect. The visitor must |
293 | | // be callable with arguments (const ItemType&, const ItemType&). |
294 | | // The visitor will be called for each pair once, with first-inserted |
295 | | // item used for the first argument. |
296 | | // The visitor need not return a value, but if it does return a value, |
297 | | // false values will be taken as a signal to stop the query. |
298 | | template<typename Visitor> |
299 | 456k | void queryPairs(Visitor&& visitor) { |
300 | 456k | if (!built()) { |
301 | 456k | build(); |
302 | 456k | } |
303 | | |
304 | 456k | if (numItems < 2) { |
305 | 23.0k | return; |
306 | 23.0k | } |
307 | | |
308 | 32.1M | for (std::size_t i = 0; i < numItems; i++) { |
309 | 31.7M | queryPairs(nodes[i], *root, visitor); |
310 | 31.7M | } |
311 | 433k | } MCIndexNoder.cpp:void geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::queryPairs<geos::noding::MCIndexNoder::intersectChains()::$_0>(geos::noding::MCIndexNoder::intersectChains()::$_0&&) Line | Count | Source | 299 | 456k | void queryPairs(Visitor&& visitor) { | 300 | 456k | if (!built()) { | 301 | 456k | build(); | 302 | 456k | } | 303 | | | 304 | 456k | if (numItems < 2) { | 305 | 23.0k | return; | 306 | 23.0k | } | 307 | | | 308 | 32.1M | for (std::size_t i = 0; i < numItems; i++) { | 309 | 31.7M | queryPairs(nodes[i], *root, visitor); | 310 | 31.7M | } | 311 | 433k | } |
Unexecuted instantiation: EdgeSetIntersector.cpp:void geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::queryPairs<geos::operation::relateng::EdgeSetIntersector::process(geos::operation::relateng::EdgeSegmentIntersector&)::$_0>(geos::operation::relateng::EdgeSetIntersector::process(geos::operation::relateng::EdgeSegmentIntersector&)::$_0&&) |
312 | | |
313 | | // Query the tree and collect items in the provided vector. |
314 | 36.1k | void query(const BoundsType& queryEnv, std::vector<ItemType>& results) { |
315 | 36.1k | query(queryEnv, [&results](const ItemType& x) { |
316 | 7.54k | results.push_back(x); |
317 | 7.54k | }); 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> >&)::{lambda(unsigned long const&)#1}::operator()(unsigned long const&) constUnexecuted 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&) constgeos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::operation::overlayng::OverlayEdgeRing*, std::__1::allocator<geos::operation::overlayng::OverlayEdgeRing*> >&)::{lambda(geos::operation::overlayng::OverlayEdgeRing* const&)#1}::operator()(geos::operation::overlayng::OverlayEdgeRing* const&) constLine | Count | Source | 315 | 7.54k | query(queryEnv, [&results](const ItemType& x) { | 316 | 7.54k | results.push_back(x); | 317 | 7.54k | }); |
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*> >&)::{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 |
318 | 36.1k | } 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::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*> >&) geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::operation::overlayng::OverlayEdgeRing*, std::__1::allocator<geos::operation::overlayng::OverlayEdgeRing*> >&) Line | Count | Source | 314 | 36.1k | void query(const BoundsType& queryEnv, std::vector<ItemType>& results) { | 315 | 36.1k | query(queryEnv, [&results](const ItemType& x) { | 316 | 36.1k | results.push_back(x); | 317 | 36.1k | }); | 318 | 36.1k | } |
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*> >&) |
319 | | |
320 | | /** |
321 | | * Returns a depth-first iterator over all items in the tree. |
322 | | */ |
323 | 10.8k | Items items() { |
324 | 10.8k | build(); |
325 | 10.8k | return Items(*this); |
326 | 10.8k | } |
327 | | |
328 | | /** |
329 | | * Iterate over all items added thus far. Explicitly does not build |
330 | | * the tree. |
331 | | */ |
332 | | template<typename F> |
333 | 0 | void iterate(F&& func) { |
334 | 0 | auto n = built() ? numItems : nodes.size(); |
335 | 0 | for (size_t i = 0; i < n; i++) { |
336 | 0 | if (!nodes[i].isDeleted()) { |
337 | 0 | func(nodes[i].getItem()); |
338 | 0 | } |
339 | 0 | } |
340 | 0 | } |
341 | | |
342 | | /// @} |
343 | | /// \defgroup remove Item removal |
344 | | /// @{ |
345 | | |
346 | 0 | bool remove(const BoundsType& itemEnv, const ItemType& item) { |
347 | 0 | build(); |
348 | |
|
349 | 0 | if (root == nullptr) { |
350 | 0 | return false; |
351 | 0 | } |
352 | | |
353 | 0 | if (root->isLeaf()) { |
354 | 0 | if (!root->isDeleted() && root->getItem() == item) { |
355 | 0 | root->removeItem(); |
356 | 0 | return true; |
357 | 0 | } |
358 | 0 | return false; |
359 | 0 | } |
360 | | |
361 | 0 | return remove(itemEnv, *root, item); |
362 | 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::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::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::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, geos::operation::overlayng::OverlayEdgeRing* 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&) |
363 | | |
364 | | /// @} |
365 | | /// \defgroup introspect Introspection |
366 | | /// @{ |
367 | | |
368 | | /** Determine whether the tree has been built, and no more items may be added. */ |
369 | 1.49M | bool built() const { |
370 | 1.49M | return root != nullptr; |
371 | 1.49M | } 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::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::built() const Line | Count | Source | 369 | 912k | bool built() const { | 370 | 912k | return root != nullptr; | 371 | 912k | } |
geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::built() const Line | Count | Source | 369 | 495k | bool built() const { | 370 | 495k | return root != nullptr; | 371 | 495k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::built() const geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::built() const Line | Count | Source | 369 | 10.8k | bool built() const { | 370 | 10.8k | return root != nullptr; | 371 | 10.8k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::built() const geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::built() const Line | Count | Source | 369 | 71.2k | bool built() const { | 370 | 71.2k | return root != nullptr; | 371 | 71.2k | } |
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 |
372 | | |
373 | | /** Determine whether the tree has been built, and no more items may be added. */ |
374 | 0 | const Node* getRoot() { |
375 | 0 | build(); |
376 | 0 | return root; |
377 | 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() |
378 | | |
379 | | /// @} |
380 | | |
381 | | /** Build the tree if it has not already been built. */ |
382 | 693k | void build() { |
383 | 693k | std::lock_guard<std::mutex> lock(lock_); |
384 | | |
385 | 693k | if (built()) { |
386 | 5.40k | return; |
387 | 5.40k | } |
388 | | |
389 | 687k | if (nodes.empty()) { |
390 | 200k | return; |
391 | 200k | } |
392 | | |
393 | 487k | numItems = nodes.size(); |
394 | | |
395 | | // compute final size of tree and set it aside in a single |
396 | | // block of memory |
397 | 487k | auto finalSize = treeSize(numItems); |
398 | 487k | nodes.reserve(finalSize); |
399 | | |
400 | | // begin and end define a range of nodes needing parents |
401 | 487k | auto begin = nodes.begin(); |
402 | 487k | auto number = static_cast<size_t>(std::distance(begin, nodes.end())); |
403 | | |
404 | 1.13M | while (number > 1) { |
405 | 646k | createParentNodes(begin, number); |
406 | 646k | std::advance(begin, static_cast<long>(number)); // parents just added become children in the next round |
407 | 646k | number = static_cast<size_t>(std::distance(begin, nodes.end())); |
408 | 646k | } |
409 | | |
410 | 487k | assert(finalSize == nodes.size()); |
411 | | |
412 | 487k | root = &nodes.back(); |
413 | 487k | } 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::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::build() Line | Count | Source | 382 | 456k | void build() { | 383 | 456k | std::lock_guard<std::mutex> lock(lock_); | 384 | | | 385 | 456k | if (built()) { | 386 | 0 | return; | 387 | 0 | } | 388 | | | 389 | 456k | if (nodes.empty()) { | 390 | 2.99k | return; | 391 | 2.99k | } | 392 | | | 393 | 453k | numItems = nodes.size(); | 394 | | | 395 | | // compute final size of tree and set it aside in a single | 396 | | // block of memory | 397 | 453k | auto finalSize = treeSize(numItems); | 398 | 453k | nodes.reserve(finalSize); | 399 | | | 400 | | // begin and end define a range of nodes needing parents | 401 | 453k | auto begin = nodes.begin(); | 402 | 453k | auto number = static_cast<size_t>(std::distance(begin, nodes.end())); | 403 | | | 404 | 1.05M | while (number > 1) { | 405 | 600k | createParentNodes(begin, number); | 406 | 600k | std::advance(begin, static_cast<long>(number)); // parents just added become children in the next round | 407 | 600k | number = static_cast<size_t>(std::distance(begin, nodes.end())); | 408 | 600k | } | 409 | | | 410 | 453k | assert(finalSize == nodes.size()); | 411 | | | 412 | 453k | root = &nodes.back(); | 413 | 453k | } |
geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::build() Line | Count | Source | 382 | 190k | void build() { | 383 | 190k | std::lock_guard<std::mutex> lock(lock_); | 384 | | | 385 | 190k | if (built()) { | 386 | 0 | return; | 387 | 0 | } | 388 | | | 389 | 190k | if (nodes.empty()) { | 390 | 167k | return; | 391 | 167k | } | 392 | | | 393 | 22.8k | numItems = nodes.size(); | 394 | | | 395 | | // compute final size of tree and set it aside in a single | 396 | | // block of memory | 397 | 22.8k | auto finalSize = treeSize(numItems); | 398 | 22.8k | nodes.reserve(finalSize); | 399 | | | 400 | | // begin and end define a range of nodes needing parents | 401 | 22.8k | auto begin = nodes.begin(); | 402 | 22.8k | auto number = static_cast<size_t>(std::distance(begin, nodes.end())); | 403 | | | 404 | 60.5k | while (number > 1) { | 405 | 37.7k | createParentNodes(begin, number); | 406 | 37.7k | std::advance(begin, static_cast<long>(number)); // parents just added become children in the next round | 407 | 37.7k | number = static_cast<size_t>(std::distance(begin, nodes.end())); | 408 | 37.7k | } | 409 | | | 410 | 22.8k | assert(finalSize == nodes.size()); | 411 | | | 412 | 22.8k | root = &nodes.back(); | 413 | 22.8k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::build() geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::build() Line | Count | Source | 382 | 10.8k | void build() { | 383 | 10.8k | std::lock_guard<std::mutex> lock(lock_); | 384 | | | 385 | 10.8k | if (built()) { | 386 | 5.40k | return; | 387 | 5.40k | } | 388 | | | 389 | 5.40k | if (nodes.empty()) { | 390 | 0 | return; | 391 | 0 | } | 392 | | | 393 | 5.40k | numItems = nodes.size(); | 394 | | | 395 | | // compute final size of tree and set it aside in a single | 396 | | // block of memory | 397 | 5.40k | auto finalSize = treeSize(numItems); | 398 | 5.40k | nodes.reserve(finalSize); | 399 | | | 400 | | // begin and end define a range of nodes needing parents | 401 | 5.40k | auto begin = nodes.begin(); | 402 | 5.40k | auto number = static_cast<size_t>(std::distance(begin, nodes.end())); | 403 | | | 404 | 11.6k | while (number > 1) { | 405 | 6.28k | createParentNodes(begin, number); | 406 | 6.28k | std::advance(begin, static_cast<long>(number)); // parents just added become children in the next round | 407 | 6.28k | number = static_cast<size_t>(std::distance(begin, nodes.end())); | 408 | 6.28k | } | 409 | | | 410 | 5.40k | assert(finalSize == nodes.size()); | 411 | | | 412 | 5.40k | root = &nodes.back(); | 413 | 5.40k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::build() geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::build() Line | Count | Source | 382 | 35.1k | void build() { | 383 | 35.1k | std::lock_guard<std::mutex> lock(lock_); | 384 | | | 385 | 35.1k | if (built()) { | 386 | 0 | return; | 387 | 0 | } | 388 | | | 389 | 35.1k | if (nodes.empty()) { | 390 | 29.2k | return; | 391 | 29.2k | } | 392 | | | 393 | 5.90k | numItems = nodes.size(); | 394 | | | 395 | | // compute final size of tree and set it aside in a single | 396 | | // block of memory | 397 | 5.90k | auto finalSize = treeSize(numItems); | 398 | 5.90k | nodes.reserve(finalSize); | 399 | | | 400 | | // begin and end define a range of nodes needing parents | 401 | 5.90k | auto begin = nodes.begin(); | 402 | 5.90k | auto number = static_cast<size_t>(std::distance(begin, nodes.end())); | 403 | | | 404 | 8.13k | while (number > 1) { | 405 | 2.23k | createParentNodes(begin, number); | 406 | 2.23k | std::advance(begin, static_cast<long>(number)); // parents just added become children in the next round | 407 | 2.23k | number = static_cast<size_t>(std::distance(begin, nodes.end())); | 408 | 2.23k | } | 409 | | | 410 | 5.90k | assert(finalSize == nodes.size()); | 411 | | | 412 | 5.90k | root = &nodes.back(); | 413 | 5.90k | } |
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() |
414 | | |
415 | | protected: |
416 | | std::mutex lock_; |
417 | | NodeList nodes; //**< a list of all leaf and branch nodes in the tree. */ |
418 | | Node* root; //**< a pointer to the root node, if the tree has been built. */ |
419 | | size_t nodeCapacity; //*< maximum number of children of each node */ |
420 | | size_t numItems; //*< total number of items in the tree, if it has been built. */ |
421 | | |
422 | | // Prevent instantiation of base class. |
423 | | // ~TemplateSTRtreeImpl() = default; |
424 | | |
425 | 41.8M | void createLeafNode(ItemType&& item, const BoundsType& env) { |
426 | 41.8M | nodes.emplace_back(std::forward<ItemType>(item), env); |
427 | 41.8M | } 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::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::createLeafNode(geos::index::chain::MonotoneChain const*&&, geos::geom::Envelope const&) Line | Count | Source | 425 | 36.9M | void createLeafNode(ItemType&& item, const BoundsType& env) { | 426 | 36.9M | nodes.emplace_back(std::forward<ItemType>(item), env); | 427 | 36.9M | } |
geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::createLeafNode(geos::geom::Geometry const*&&, geos::geom::Envelope const&) Line | Count | Source | 425 | 4.85M | void createLeafNode(ItemType&& item, const BoundsType& env) { | 426 | 4.85M | nodes.emplace_back(std::forward<ItemType>(item), env); | 427 | 4.85M | } |
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&) Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::createLeafNode(geos::operation::overlayng::OverlayEdgeRing*&&, geos::geom::Envelope const&) 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&) |
428 | | |
429 | 7.48M | void createLeafNode(const ItemType& item, const BoundsType& env) { |
430 | 7.48M | nodes.emplace_back(item, env); |
431 | 7.48M | } 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 | 429 | 7.36M | void createLeafNode(const ItemType& item, const BoundsType& env) { | 430 | 7.36M | nodes.emplace_back(item, env); | 431 | 7.36M | } |
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::Geometry const*, geos::index::strtree::EnvelopeTraits>::createLeafNode(geos::geom::Geometry const* const&, geos::geom::Envelope const&) geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::createLeafNode(geos::operation::overlayng::OverlayEdgeRing* const&, geos::geom::Envelope const&) Line | Count | Source | 429 | 122k | void createLeafNode(const ItemType& item, const BoundsType& env) { | 430 | 122k | nodes.emplace_back(item, env); | 431 | 122k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::createLeafNode(geos::index::chain::MonotoneChain const* 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&) |
432 | | |
433 | 5.94M | void createBranchNode(const Node *begin, const Node *end) { |
434 | 5.94M | assert(nodes.size() < nodes.capacity()); |
435 | 5.94M | nodes.emplace_back(begin, end); |
436 | 5.94M | } 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::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 | 433 | 4.52M | void createBranchNode(const Node *begin, const Node *end) { | 434 | | assert(nodes.size() < nodes.capacity()); | 435 | 4.52M | nodes.emplace_back(begin, end); | 436 | 4.52M | } |
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 | 433 | 864k | void createBranchNode(const Node *begin, const Node *end) { | 434 | | assert(nodes.size() < nodes.capacity()); | 435 | 864k | nodes.emplace_back(begin, end); | 436 | 864k | } |
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*) 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 | 433 | 555k | void createBranchNode(const Node *begin, const Node *end) { | 434 | | assert(nodes.size() < nodes.capacity()); | 435 | 555k | nodes.emplace_back(begin, end); | 436 | 555k | } |
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::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::createBranchNode(geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits> const*, geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits> const*) Line | Count | Source | 433 | 2.23k | void createBranchNode(const Node *begin, const Node *end) { | 434 | | assert(nodes.size() < nodes.capacity()); | 435 | 2.23k | nodes.emplace_back(begin, end); | 436 | 2.23k | } |
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*) |
437 | | |
438 | | // calculate what the tree size will be when it is build. This is simply |
439 | | // a version of createParentNodes that doesn't actually create anything. |
440 | 515k | size_t treeSize(size_t numLeafNodes) { |
441 | 515k | size_t nodesInTree = numLeafNodes; |
442 | | |
443 | 515k | size_t nodesWithoutParents = numLeafNodes; |
444 | 1.20M | while (nodesWithoutParents > 1) { |
445 | 690k | auto numSlices = sliceCount(nodesWithoutParents); |
446 | 690k | auto nodesPerSlice = sliceCapacity(nodesWithoutParents, numSlices); |
447 | | |
448 | 690k | size_t parentNodesAdded = 0; |
449 | 1.89M | for (size_t j = 0; j < numSlices; j++) { |
450 | 1.20M | auto nodesInSlice = std::min(nodesWithoutParents, nodesPerSlice); |
451 | 1.20M | nodesWithoutParents -= nodesInSlice; |
452 | | |
453 | 1.20M | parentNodesAdded += static_cast<size_t>(std::ceil( |
454 | 1.20M | static_cast<double>(nodesInSlice) / static_cast<double>(nodeCapacity))); |
455 | 1.20M | } |
456 | | |
457 | 690k | nodesInTree += parentNodesAdded; |
458 | 690k | nodesWithoutParents = parentNodesAdded; |
459 | 690k | } |
460 | | |
461 | 515k | return nodesInTree; |
462 | 515k | } 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::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::treeSize(unsigned long) Line | Count | Source | 440 | 453k | size_t treeSize(size_t numLeafNodes) { | 441 | 453k | size_t nodesInTree = numLeafNodes; | 442 | | | 443 | 453k | size_t nodesWithoutParents = numLeafNodes; | 444 | 1.05M | while (nodesWithoutParents > 1) { | 445 | 600k | auto numSlices = sliceCount(nodesWithoutParents); | 446 | 600k | auto nodesPerSlice = sliceCapacity(nodesWithoutParents, numSlices); | 447 | | | 448 | 600k | size_t parentNodesAdded = 0; | 449 | 1.55M | for (size_t j = 0; j < numSlices; j++) { | 450 | 952k | auto nodesInSlice = std::min(nodesWithoutParents, nodesPerSlice); | 451 | 952k | nodesWithoutParents -= nodesInSlice; | 452 | | | 453 | 952k | parentNodesAdded += static_cast<size_t>(std::ceil( | 454 | 952k | static_cast<double>(nodesInSlice) / static_cast<double>(nodeCapacity))); | 455 | 952k | } | 456 | | | 457 | 600k | nodesInTree += parentNodesAdded; | 458 | 600k | nodesWithoutParents = parentNodesAdded; | 459 | 600k | } | 460 | | | 461 | 453k | return nodesInTree; | 462 | 453k | } |
geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::treeSize(unsigned long) Line | Count | Source | 440 | 45.8k | size_t treeSize(size_t numLeafNodes) { | 441 | 45.8k | size_t nodesInTree = numLeafNodes; | 442 | | | 443 | 45.8k | size_t nodesWithoutParents = numLeafNodes; | 444 | 121k | while (nodesWithoutParents > 1) { | 445 | 75.4k | auto numSlices = sliceCount(nodesWithoutParents); | 446 | 75.4k | auto nodesPerSlice = sliceCapacity(nodesWithoutParents, numSlices); | 447 | | | 448 | 75.4k | size_t parentNodesAdded = 0; | 449 | 261k | for (size_t j = 0; j < numSlices; j++) { | 450 | 186k | auto nodesInSlice = std::min(nodesWithoutParents, nodesPerSlice); | 451 | 186k | nodesWithoutParents -= nodesInSlice; | 452 | | | 453 | 186k | parentNodesAdded += static_cast<size_t>(std::ceil( | 454 | 186k | static_cast<double>(nodesInSlice) / static_cast<double>(nodeCapacity))); | 455 | 186k | } | 456 | | | 457 | 75.4k | nodesInTree += parentNodesAdded; | 458 | 75.4k | nodesWithoutParents = parentNodesAdded; | 459 | 75.4k | } | 460 | | | 461 | 45.8k | return nodesInTree; | 462 | 45.8k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::treeSize(unsigned long) geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::treeSize(unsigned long) Line | Count | Source | 440 | 10.8k | size_t treeSize(size_t numLeafNodes) { | 441 | 10.8k | size_t nodesInTree = numLeafNodes; | 442 | | | 443 | 10.8k | size_t nodesWithoutParents = numLeafNodes; | 444 | 23.3k | while (nodesWithoutParents > 1) { | 445 | 12.5k | auto numSlices = sliceCount(nodesWithoutParents); | 446 | 12.5k | auto nodesPerSlice = sliceCapacity(nodesWithoutParents, numSlices); | 447 | | | 448 | 12.5k | size_t parentNodesAdded = 0; | 449 | 80.0k | for (size_t j = 0; j < numSlices; j++) { | 450 | 67.4k | auto nodesInSlice = std::min(nodesWithoutParents, nodesPerSlice); | 451 | 67.4k | nodesWithoutParents -= nodesInSlice; | 452 | | | 453 | 67.4k | parentNodesAdded += static_cast<size_t>(std::ceil( | 454 | 67.4k | static_cast<double>(nodesInSlice) / static_cast<double>(nodeCapacity))); | 455 | 67.4k | } | 456 | | | 457 | 12.5k | nodesInTree += parentNodesAdded; | 458 | 12.5k | nodesWithoutParents = parentNodesAdded; | 459 | 12.5k | } | 460 | | | 461 | 10.8k | return nodesInTree; | 462 | 10.8k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::treeSize(unsigned long) geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::treeSize(unsigned long) Line | Count | Source | 440 | 5.90k | size_t treeSize(size_t numLeafNodes) { | 441 | 5.90k | size_t nodesInTree = numLeafNodes; | 442 | | | 443 | 5.90k | size_t nodesWithoutParents = numLeafNodes; | 444 | 8.13k | while (nodesWithoutParents > 1) { | 445 | 2.23k | auto numSlices = sliceCount(nodesWithoutParents); | 446 | 2.23k | auto nodesPerSlice = sliceCapacity(nodesWithoutParents, numSlices); | 447 | | | 448 | 2.23k | size_t parentNodesAdded = 0; | 449 | 4.46k | for (size_t j = 0; j < numSlices; j++) { | 450 | 2.23k | auto nodesInSlice = std::min(nodesWithoutParents, nodesPerSlice); | 451 | 2.23k | nodesWithoutParents -= nodesInSlice; | 452 | | | 453 | 2.23k | parentNodesAdded += static_cast<size_t>(std::ceil( | 454 | 2.23k | static_cast<double>(nodesInSlice) / static_cast<double>(nodeCapacity))); | 455 | 2.23k | } | 456 | | | 457 | 2.23k | nodesInTree += parentNodesAdded; | 458 | 2.23k | nodesWithoutParents = parentNodesAdded; | 459 | 2.23k | } | 460 | | | 461 | 5.90k | return nodesInTree; | 462 | 5.90k | } |
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) |
463 | | |
464 | 646k | void createParentNodes(const NodeListIterator& begin, size_t number) { |
465 | | // Arrange child nodes in two dimensions. |
466 | | // First, divide them into vertical slices of a given size (left-to-right) |
467 | | // Then create nodes within those slices (bottom-to-top) |
468 | 646k | auto numSlices = sliceCount(number); |
469 | 646k | std::size_t nodesPerSlice = sliceCapacity(number, numSlices); |
470 | | |
471 | | // We could sort all of the nodes here, but we don't actually need them to be |
472 | | // completely sorted. They need to be sorted enough for each node to end up |
473 | | // in the right vertical slice, but their relative position within the slice |
474 | | // doesn't matter. So we do a partial sort for each slice below instead. |
475 | 646k | auto end = begin + static_cast<long>(number); |
476 | 646k | sortNodesX(begin, end); |
477 | | |
478 | 646k | auto startOfSlice = begin; |
479 | 1.72M | for (decltype(numSlices) j = 0; j < numSlices; j++) { |
480 | | // end iterator is being invalidated at each iteration |
481 | 1.08M | end = begin + static_cast<long>(number); |
482 | 1.08M | auto nodesRemaining = static_cast<size_t>(std::distance(startOfSlice, end)); |
483 | 1.08M | auto nodesInSlice = std::min(nodesRemaining, nodesPerSlice); |
484 | 1.08M | auto endOfSlice = std::next(startOfSlice, static_cast<long>(nodesInSlice)); |
485 | | |
486 | | // Make sure that every node that should be in this slice ends up somewhere |
487 | | // between startOfSlice and endOfSlice. We don't require any ordering among |
488 | | // nodes between startOfSlice and endOfSlice. |
489 | | //partialSortNodes(startOfSlice, endOfSlice, end); |
490 | | |
491 | 1.08M | addParentNodesFromVerticalSlice(startOfSlice, endOfSlice); |
492 | | |
493 | 1.08M | startOfSlice = endOfSlice; |
494 | 1.08M | } |
495 | 646k | } 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::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 | 464 | 600k | void createParentNodes(const NodeListIterator& begin, size_t number) { | 465 | | // Arrange child nodes in two dimensions. | 466 | | // First, divide them into vertical slices of a given size (left-to-right) | 467 | | // Then create nodes within those slices (bottom-to-top) | 468 | 600k | auto numSlices = sliceCount(number); | 469 | 600k | std::size_t nodesPerSlice = sliceCapacity(number, numSlices); | 470 | | | 471 | | // We could sort all of the nodes here, but we don't actually need them to be | 472 | | // completely sorted. They need to be sorted enough for each node to end up | 473 | | // in the right vertical slice, but their relative position within the slice | 474 | | // doesn't matter. So we do a partial sort for each slice below instead. | 475 | 600k | auto end = begin + static_cast<long>(number); | 476 | 600k | sortNodesX(begin, end); | 477 | | | 478 | 600k | auto startOfSlice = begin; | 479 | 1.55M | for (decltype(numSlices) j = 0; j < numSlices; j++) { | 480 | | // end iterator is being invalidated at each iteration | 481 | 952k | end = begin + static_cast<long>(number); | 482 | 952k | auto nodesRemaining = static_cast<size_t>(std::distance(startOfSlice, end)); | 483 | 952k | auto nodesInSlice = std::min(nodesRemaining, nodesPerSlice); | 484 | 952k | auto endOfSlice = std::next(startOfSlice, static_cast<long>(nodesInSlice)); | 485 | | | 486 | | // Make sure that every node that should be in this slice ends up somewhere | 487 | | // between startOfSlice and endOfSlice. We don't require any ordering among | 488 | | // nodes between startOfSlice and endOfSlice. | 489 | | //partialSortNodes(startOfSlice, endOfSlice, end); | 490 | | | 491 | 952k | addParentNodesFromVerticalSlice(startOfSlice, endOfSlice); | 492 | | | 493 | 952k | startOfSlice = endOfSlice; | 494 | 952k | } | 495 | 600k | } |
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 | 464 | 37.7k | void createParentNodes(const NodeListIterator& begin, size_t number) { | 465 | | // Arrange child nodes in two dimensions. | 466 | | // First, divide them into vertical slices of a given size (left-to-right) | 467 | | // Then create nodes within those slices (bottom-to-top) | 468 | 37.7k | auto numSlices = sliceCount(number); | 469 | 37.7k | std::size_t nodesPerSlice = sliceCapacity(number, numSlices); | 470 | | | 471 | | // We could sort all of the nodes here, but we don't actually need them to be | 472 | | // completely sorted. They need to be sorted enough for each node to end up | 473 | | // in the right vertical slice, but their relative position within the slice | 474 | | // doesn't matter. So we do a partial sort for each slice below instead. | 475 | 37.7k | auto end = begin + static_cast<long>(number); | 476 | 37.7k | sortNodesX(begin, end); | 477 | | | 478 | 37.7k | auto startOfSlice = begin; | 479 | 130k | for (decltype(numSlices) j = 0; j < numSlices; j++) { | 480 | | // end iterator is being invalidated at each iteration | 481 | 93.0k | end = begin + static_cast<long>(number); | 482 | 93.0k | auto nodesRemaining = static_cast<size_t>(std::distance(startOfSlice, end)); | 483 | 93.0k | auto nodesInSlice = std::min(nodesRemaining, nodesPerSlice); | 484 | 93.0k | auto endOfSlice = std::next(startOfSlice, static_cast<long>(nodesInSlice)); | 485 | | | 486 | | // Make sure that every node that should be in this slice ends up somewhere | 487 | | // between startOfSlice and endOfSlice. We don't require any ordering among | 488 | | // nodes between startOfSlice and endOfSlice. | 489 | | //partialSortNodes(startOfSlice, endOfSlice, end); | 490 | | | 491 | 93.0k | addParentNodesFromVerticalSlice(startOfSlice, endOfSlice); | 492 | | | 493 | 93.0k | startOfSlice = endOfSlice; | 494 | 93.0k | } | 495 | 37.7k | } |
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) 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 | 464 | 6.28k | void createParentNodes(const NodeListIterator& begin, size_t number) { | 465 | | // Arrange child nodes in two dimensions. | 466 | | // First, divide them into vertical slices of a given size (left-to-right) | 467 | | // Then create nodes within those slices (bottom-to-top) | 468 | 6.28k | auto numSlices = sliceCount(number); | 469 | 6.28k | std::size_t nodesPerSlice = sliceCapacity(number, numSlices); | 470 | | | 471 | | // We could sort all of the nodes here, but we don't actually need them to be | 472 | | // completely sorted. They need to be sorted enough for each node to end up | 473 | | // in the right vertical slice, but their relative position within the slice | 474 | | // doesn't matter. So we do a partial sort for each slice below instead. | 475 | 6.28k | auto end = begin + static_cast<long>(number); | 476 | 6.28k | sortNodesX(begin, end); | 477 | | | 478 | 6.28k | auto startOfSlice = begin; | 479 | 40.0k | for (decltype(numSlices) j = 0; j < numSlices; j++) { | 480 | | // end iterator is being invalidated at each iteration | 481 | 33.7k | end = begin + static_cast<long>(number); | 482 | 33.7k | auto nodesRemaining = static_cast<size_t>(std::distance(startOfSlice, end)); | 483 | 33.7k | auto nodesInSlice = std::min(nodesRemaining, nodesPerSlice); | 484 | 33.7k | auto endOfSlice = std::next(startOfSlice, static_cast<long>(nodesInSlice)); | 485 | | | 486 | | // Make sure that every node that should be in this slice ends up somewhere | 487 | | // between startOfSlice and endOfSlice. We don't require any ordering among | 488 | | // nodes between startOfSlice and endOfSlice. | 489 | | //partialSortNodes(startOfSlice, endOfSlice, end); | 490 | | | 491 | 33.7k | addParentNodesFromVerticalSlice(startOfSlice, endOfSlice); | 492 | | | 493 | 33.7k | startOfSlice = endOfSlice; | 494 | 33.7k | } | 495 | 6.28k | } |
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::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::createParentNodes(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&, unsigned long) Line | Count | Source | 464 | 2.23k | void createParentNodes(const NodeListIterator& begin, size_t number) { | 465 | | // Arrange child nodes in two dimensions. | 466 | | // First, divide them into vertical slices of a given size (left-to-right) | 467 | | // Then create nodes within those slices (bottom-to-top) | 468 | 2.23k | auto numSlices = sliceCount(number); | 469 | 2.23k | std::size_t nodesPerSlice = sliceCapacity(number, numSlices); | 470 | | | 471 | | // We could sort all of the nodes here, but we don't actually need them to be | 472 | | // completely sorted. They need to be sorted enough for each node to end up | 473 | | // in the right vertical slice, but their relative position within the slice | 474 | | // doesn't matter. So we do a partial sort for each slice below instead. | 475 | 2.23k | auto end = begin + static_cast<long>(number); | 476 | 2.23k | sortNodesX(begin, end); | 477 | | | 478 | 2.23k | auto startOfSlice = begin; | 479 | 4.46k | for (decltype(numSlices) j = 0; j < numSlices; j++) { | 480 | | // end iterator is being invalidated at each iteration | 481 | 2.23k | end = begin + static_cast<long>(number); | 482 | 2.23k | auto nodesRemaining = static_cast<size_t>(std::distance(startOfSlice, end)); | 483 | 2.23k | auto nodesInSlice = std::min(nodesRemaining, nodesPerSlice); | 484 | 2.23k | auto endOfSlice = std::next(startOfSlice, static_cast<long>(nodesInSlice)); | 485 | | | 486 | | // Make sure that every node that should be in this slice ends up somewhere | 487 | | // between startOfSlice and endOfSlice. We don't require any ordering among | 488 | | // nodes between startOfSlice and endOfSlice. | 489 | | //partialSortNodes(startOfSlice, endOfSlice, end); | 490 | | | 491 | 2.23k | addParentNodesFromVerticalSlice(startOfSlice, endOfSlice); | 492 | | | 493 | 2.23k | startOfSlice = endOfSlice; | 494 | 2.23k | } | 495 | 2.23k | } |
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) |
496 | | |
497 | 1.08M | void addParentNodesFromVerticalSlice(const NodeListIterator& begin, const NodeListIterator& end) { |
498 | 1.08M | if (BoundsTraits::TwoDimensional::value) { |
499 | 988k | sortNodesY(begin, end); |
500 | 988k | } |
501 | | |
502 | | // Arrange the nodes vertically and full up parent nodes sequentially until they're full. |
503 | | // A possible improvement would be to rework this such so that if we have 81 nodes we |
504 | | // put 9 into each parent instead of 10 or 1. |
505 | 1.08M | auto firstChild = begin; |
506 | 7.03M | while (firstChild != end) { |
507 | 5.94M | auto childrenRemaining = static_cast<size_t>(std::distance(firstChild, end)); |
508 | 5.94M | auto childrenForNode = std::min(nodeCapacity, childrenRemaining); |
509 | 5.94M | auto lastChild = std::next(firstChild, static_cast<long>(childrenForNode)); |
510 | | |
511 | | //partialSortNodes(firstChild, lastChild, end); |
512 | | |
513 | | // Ideally we would be able to store firstChild and lastChild instead of |
514 | | // having to convert them to pointers, but I wasn't sure how to access |
515 | | // the NodeListIterator type from within Node without creating some weird |
516 | | // circular dependency. |
517 | 5.94M | const Node *ptr_first = &*firstChild; |
518 | 5.94M | const Node *ptr_end = ptr_first + childrenForNode; |
519 | | |
520 | 5.94M | createBranchNode(ptr_first, ptr_end); |
521 | 5.94M | firstChild = lastChild; |
522 | 5.94M | } |
523 | 1.08M | } 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::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 | 497 | 952k | void addParentNodesFromVerticalSlice(const NodeListIterator& begin, const NodeListIterator& end) { | 498 | 952k | if (BoundsTraits::TwoDimensional::value) { | 499 | 952k | sortNodesY(begin, end); | 500 | 952k | } | 501 | | | 502 | | // Arrange the nodes vertically and full up parent nodes sequentially until they're full. | 503 | | // A possible improvement would be to rework this such so that if we have 81 nodes we | 504 | | // put 9 into each parent instead of 10 or 1. | 505 | 952k | auto firstChild = begin; | 506 | 5.47M | while (firstChild != end) { | 507 | 4.52M | auto childrenRemaining = static_cast<size_t>(std::distance(firstChild, end)); | 508 | 4.52M | auto childrenForNode = std::min(nodeCapacity, childrenRemaining); | 509 | 4.52M | auto lastChild = std::next(firstChild, static_cast<long>(childrenForNode)); | 510 | | | 511 | | //partialSortNodes(firstChild, lastChild, end); | 512 | | | 513 | | // Ideally we would be able to store firstChild and lastChild instead of | 514 | | // having to convert them to pointers, but I wasn't sure how to access | 515 | | // the NodeListIterator type from within Node without creating some weird | 516 | | // circular dependency. | 517 | 4.52M | const Node *ptr_first = &*firstChild; | 518 | 4.52M | const Node *ptr_end = ptr_first + childrenForNode; | 519 | | | 520 | 4.52M | createBranchNode(ptr_first, ptr_end); | 521 | 4.52M | firstChild = lastChild; | 522 | 4.52M | } | 523 | 952k | } |
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 | 497 | 93.0k | void addParentNodesFromVerticalSlice(const NodeListIterator& begin, const NodeListIterator& end) { | 498 | 93.0k | if (BoundsTraits::TwoDimensional::value) { | 499 | 0 | sortNodesY(begin, end); | 500 | 0 | } | 501 | | | 502 | | // Arrange the nodes vertically and full up parent nodes sequentially until they're full. | 503 | | // A possible improvement would be to rework this such so that if we have 81 nodes we | 504 | | // put 9 into each parent instead of 10 or 1. | 505 | 93.0k | auto firstChild = begin; | 506 | 957k | while (firstChild != end) { | 507 | 864k | auto childrenRemaining = static_cast<size_t>(std::distance(firstChild, end)); | 508 | 864k | auto childrenForNode = std::min(nodeCapacity, childrenRemaining); | 509 | 864k | auto lastChild = std::next(firstChild, static_cast<long>(childrenForNode)); | 510 | | | 511 | | //partialSortNodes(firstChild, lastChild, end); | 512 | | | 513 | | // Ideally we would be able to store firstChild and lastChild instead of | 514 | | // having to convert them to pointers, but I wasn't sure how to access | 515 | | // the NodeListIterator type from within Node without creating some weird | 516 | | // circular dependency. | 517 | 864k | const Node *ptr_first = &*firstChild; | 518 | 864k | const Node *ptr_end = ptr_first + childrenForNode; | 519 | | | 520 | 864k | createBranchNode(ptr_first, ptr_end); | 521 | 864k | firstChild = lastChild; | 522 | 864k | } | 523 | 93.0k | } |
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&) 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 | 497 | 33.7k | void addParentNodesFromVerticalSlice(const NodeListIterator& begin, const NodeListIterator& end) { | 498 | 33.7k | if (BoundsTraits::TwoDimensional::value) { | 499 | 33.7k | sortNodesY(begin, end); | 500 | 33.7k | } | 501 | | | 502 | | // Arrange the nodes vertically and full up parent nodes sequentially until they're full. | 503 | | // A possible improvement would be to rework this such so that if we have 81 nodes we | 504 | | // put 9 into each parent instead of 10 or 1. | 505 | 33.7k | auto firstChild = begin; | 506 | 589k | while (firstChild != end) { | 507 | 555k | auto childrenRemaining = static_cast<size_t>(std::distance(firstChild, end)); | 508 | 555k | auto childrenForNode = std::min(nodeCapacity, childrenRemaining); | 509 | 555k | auto lastChild = std::next(firstChild, static_cast<long>(childrenForNode)); | 510 | | | 511 | | //partialSortNodes(firstChild, lastChild, end); | 512 | | | 513 | | // Ideally we would be able to store firstChild and lastChild instead of | 514 | | // having to convert them to pointers, but I wasn't sure how to access | 515 | | // the NodeListIterator type from within Node without creating some weird | 516 | | // circular dependency. | 517 | 555k | const Node *ptr_first = &*firstChild; | 518 | 555k | const Node *ptr_end = ptr_first + childrenForNode; | 519 | | | 520 | 555k | createBranchNode(ptr_first, ptr_end); | 521 | 555k | firstChild = lastChild; | 522 | 555k | } | 523 | 33.7k | } |
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::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::addParentNodesFromVerticalSlice(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&) Line | Count | Source | 497 | 2.23k | void addParentNodesFromVerticalSlice(const NodeListIterator& begin, const NodeListIterator& end) { | 498 | 2.23k | if (BoundsTraits::TwoDimensional::value) { | 499 | 2.23k | sortNodesY(begin, end); | 500 | 2.23k | } | 501 | | | 502 | | // Arrange the nodes vertically and full up parent nodes sequentially until they're full. | 503 | | // A possible improvement would be to rework this such so that if we have 81 nodes we | 504 | | // put 9 into each parent instead of 10 or 1. | 505 | 2.23k | auto firstChild = begin; | 506 | 4.46k | while (firstChild != end) { | 507 | 2.23k | auto childrenRemaining = static_cast<size_t>(std::distance(firstChild, end)); | 508 | 2.23k | auto childrenForNode = std::min(nodeCapacity, childrenRemaining); | 509 | 2.23k | auto lastChild = std::next(firstChild, static_cast<long>(childrenForNode)); | 510 | | | 511 | | //partialSortNodes(firstChild, lastChild, end); | 512 | | | 513 | | // Ideally we would be able to store firstChild and lastChild instead of | 514 | | // having to convert them to pointers, but I wasn't sure how to access | 515 | | // the NodeListIterator type from within Node without creating some weird | 516 | | // circular dependency. | 517 | 2.23k | const Node *ptr_first = &*firstChild; | 518 | 2.23k | const Node *ptr_end = ptr_first + childrenForNode; | 519 | | | 520 | 2.23k | createBranchNode(ptr_first, ptr_end); | 521 | 2.23k | firstChild = lastChild; | 522 | 2.23k | } | 523 | 2.23k | } |
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&) |
524 | | |
525 | 646k | void sortNodesX(const NodeListIterator& begin, const NodeListIterator& end) { |
526 | 508M | std::sort(begin, end, [](const Node &a, const Node &b) { |
527 | 508M | return BoundsTraits::getX(a.getBounds()) < BoundsTraits::getX(b.getBounds()); |
528 | 508M | }); 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 | 526 | 53.2M | std::sort(begin, end, [](const Node &a, const Node &b) { | 527 | 53.2M | return BoundsTraits::getX(a.getBounds()) < BoundsTraits::getX(b.getBounds()); | 528 | 53.2M | }); |
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&) constgeos::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 | 526 | 27.7M | std::sort(begin, end, [](const Node &a, const Node &b) { | 527 | 27.7M | return BoundsTraits::getX(a.getBounds()) < BoundsTraits::getX(b.getBounds()); | 528 | 27.7M | }); |
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 | 526 | 427M | std::sort(begin, end, [](const Node &a, const Node &b) { | 527 | 427M | return BoundsTraits::getX(a.getBounds()) < BoundsTraits::getX(b.getBounds()); | 528 | 427M | }); |
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&)::{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&) constgeos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits> const&) constLine | Count | Source | 526 | 7.42k | std::sort(begin, end, [](const Node &a, const Node &b) { | 527 | 7.42k | return BoundsTraits::getX(a.getBounds()) < BoundsTraits::getX(b.getBounds()); | 528 | 7.42k | }); |
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&)::{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 |
529 | 646k | } 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::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 | 525 | 600k | void sortNodesX(const NodeListIterator& begin, const NodeListIterator& end) { | 526 | 600k | std::sort(begin, end, [](const Node &a, const Node &b) { | 527 | 600k | return BoundsTraits::getX(a.getBounds()) < BoundsTraits::getX(b.getBounds()); | 528 | 600k | }); | 529 | 600k | } |
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 | 525 | 37.7k | void sortNodesX(const NodeListIterator& begin, const NodeListIterator& end) { | 526 | 37.7k | std::sort(begin, end, [](const Node &a, const Node &b) { | 527 | 37.7k | return BoundsTraits::getX(a.getBounds()) < BoundsTraits::getX(b.getBounds()); | 528 | 37.7k | }); | 529 | 37.7k | } |
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&) 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 | 525 | 6.28k | void sortNodesX(const NodeListIterator& begin, const NodeListIterator& end) { | 526 | 6.28k | std::sort(begin, end, [](const Node &a, const Node &b) { | 527 | 6.28k | return BoundsTraits::getX(a.getBounds()) < BoundsTraits::getX(b.getBounds()); | 528 | 6.28k | }); | 529 | 6.28k | } |
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::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::sortNodesX(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&) Line | Count | Source | 525 | 2.23k | void sortNodesX(const NodeListIterator& begin, const NodeListIterator& end) { | 526 | 2.23k | std::sort(begin, end, [](const Node &a, const Node &b) { | 527 | 2.23k | return BoundsTraits::getX(a.getBounds()) < BoundsTraits::getX(b.getBounds()); | 528 | 2.23k | }); | 529 | 2.23k | } |
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&) |
530 | | |
531 | 988k | void sortNodesY(const NodeListIterator& begin, const NodeListIterator& end) { |
532 | 331M | std::sort(begin, end, [](const Node &a, const Node &b) { |
533 | 331M | return BoundsTraits::getY(a.getBounds()) < BoundsTraits::getY(b.getBounds()); |
534 | 331M | }); 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&) constUnexecuted 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&) 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 | 532 | 39.6M | std::sort(begin, end, [](const Node &a, const Node &b) { | 533 | 39.6M | return BoundsTraits::getY(a.getBounds()) < BoundsTraits::getY(b.getBounds()); | 534 | 39.6M | }); |
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 | 532 | 291M | std::sort(begin, end, [](const Node &a, const Node &b) { | 533 | 291M | return BoundsTraits::getY(a.getBounds()) < BoundsTraits::getY(b.getBounds()); | 534 | 291M | }); |
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&)::{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&) constgeos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&)::{lambda(geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits> const&)#1}::operator()(geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits> const&) constLine | Count | Source | 532 | 7.11k | std::sort(begin, end, [](const Node &a, const Node &b) { | 533 | 7.11k | return BoundsTraits::getY(a.getBounds()) < BoundsTraits::getY(b.getBounds()); | 534 | 7.11k | }); |
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&)::{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 |
535 | 988k | } 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&) 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 | 531 | 952k | void sortNodesY(const NodeListIterator& begin, const NodeListIterator& end) { | 532 | 952k | std::sort(begin, end, [](const Node &a, const Node &b) { | 533 | 952k | return BoundsTraits::getY(a.getBounds()) < BoundsTraits::getY(b.getBounds()); | 534 | 952k | }); | 535 | 952k | } |
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&) 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&) 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 | 531 | 33.7k | void sortNodesY(const NodeListIterator& begin, const NodeListIterator& end) { | 532 | 33.7k | std::sort(begin, end, [](const Node &a, const Node &b) { | 533 | 33.7k | return BoundsTraits::getY(a.getBounds()) < BoundsTraits::getY(b.getBounds()); | 534 | 33.7k | }); | 535 | 33.7k | } |
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::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::sortNodesY(std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&, std::__1::__wrap_iter<geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>*> const&) Line | Count | Source | 531 | 2.23k | void sortNodesY(const NodeListIterator& begin, const NodeListIterator& end) { | 532 | 2.23k | std::sort(begin, end, [](const Node &a, const Node &b) { | 533 | 2.23k | return BoundsTraits::getY(a.getBounds()) < BoundsTraits::getY(b.getBounds()); | 534 | 2.23k | }); | 535 | 2.23k | } |
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&) |
536 | | |
537 | | // Helper function to visit an item using a visitor that has no return value. |
538 | | // In this case, we will always return true, indicating that querying should |
539 | | // continue. |
540 | | template<typename Visitor, |
541 | | typename std::enable_if<std::is_void<decltype(std::declval<Visitor>()(std::declval<ItemType>()))>::value, std::nullptr_t>::type = nullptr > |
542 | | bool visitLeaf(Visitor&& visitor, const Node& node) |
543 | 4.57M | { |
544 | 4.57M | visitor(node.getItem()); |
545 | 4.57M | return true; |
546 | 4.57M | } Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPvNS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS3_S4_E5queryEPKNS_4geom8EnvelopeERNSt3__16vectorIS3_NSD_9allocatorIS3_EEEEEUlPKvE_TnNSD_9enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSD_7declvalB8ne220000IS3_EEDTclsr3stdE9__declvalISO_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSO_RKNS1_15TemplateSTRNodeIS3_S4_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPvNS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS3_S4_E5queryEPKNS_4geom8EnvelopeERNS0_11ItemVisitorEEUlPKvE_TnNSt3__19enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSJ_7declvalB8ne220000IS3_EEDTclsr3stdE9__declvalISL_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSL_RKNS1_15TemplateSTRNodeIS3_S4_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPNS_9algorithm6locate25IndexedPointInAreaLocatorENS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS6_S7_E5queryEPKNS_4geom8EnvelopeERNSt3__16vectorIPvNSG_9allocatorISI_EEEEEUlPKS5_E_TnNSG_9enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSG_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISS_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSS_RKNS1_15TemplateSTRNodeIS6_S7_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPNS_9algorithm6locate25IndexedPointInAreaLocatorENS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS6_S7_E5queryEPKNS_4geom8EnvelopeERNS0_11ItemVisitorEEUlPKS5_E_TnNSt3__19enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSM_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISO_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSO_RKNS1_15TemplateSTRNodeIS6_S7_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS_9operation8distance13FacetSequenceENS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS7_S8_E5queryEPKNS_4geom8EnvelopeERNSt3__16vectorIPvNSH_9allocatorISJ_EEEEEUlS7_E_TnNSH_9enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSH_7declvalB8ne220000IS7_EEDTclsr3stdE9__declvalISR_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSR_RKNS1_15TemplateSTRNodeIS7_S8_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS_9operation8distance13FacetSequenceENS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS7_S8_E5queryEPKNS_4geom8EnvelopeERNS0_11ItemVisitorEEUlS7_E_TnNSt3__19enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSL_7declvalB8ne220000IS7_EEDTclsr3stdE9__declvalISN_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSN_RKNS1_15TemplateSTRNodeIS7_S8_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS0_5chain13MonotoneChainENS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS6_S7_E5queryEPKNS_4geom8EnvelopeERNSt3__16vectorIPvNSG_9allocatorISI_EEEEEUlS6_E_TnNSG_9enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSG_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISQ_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSQ_RKNS1_15TemplateSTRNodeIS6_S7_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS0_5chain13MonotoneChainENS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS6_S7_E5queryEPKNS_4geom8EnvelopeERNS0_11ItemVisitorEEUlS6_E_TnNSt3__19enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSK_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISM_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSM_RKNS1_15TemplateSTRNodeIS6_S7_EE IndexedPointInAreaLocator.cpp:_ZN4geos5index7strtree19TemplateSTRtreeImplINS_9algorithm6locate25IndexedPointInAreaLocator11SegmentViewENS1_14IntervalTraitsEE9visitLeafIRZNS5_6locateEPKNS_4geom12CoordinateXYEE3$_0TnNSt3__19enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSG_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISI_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSI_RKNS1_15TemplateSTRNodeIS6_S7_EE Line | Count | Source | 543 | 4.56M | { | 544 | 4.56M | visitor(node.getItem()); | 545 | 4.56M | return true; | 546 | 4.56M | } |
Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplImNS1_14EnvelopeTraitsEE9visitLeafIRZNS4_5queryERKNS_4geom8EnvelopeERNSt3__16vectorImNSA_9allocatorImEEEEEUlRKmE_TnNSA_9enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSA_7declvalB8ne220000ImEEDTclsr3stdE9__declvalISL_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSL_RKNS1_15TemplateSTRNodeImS3_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS_4geom8GeometryENS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS6_S7_E5queryEPKNS3_8EnvelopeERNSt3__16vectorIPvNSF_9allocatorISH_EEEEEUlS6_E_TnNSF_9enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSF_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISP_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSP_RKNS1_15TemplateSTRNodeIS6_S7_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS_4geom8GeometryENS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS6_S7_E5queryEPKNS3_8EnvelopeERNS0_11ItemVisitorEEUlS6_E_TnNSt3__19enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSJ_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISL_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSL_RKNS1_15TemplateSTRNodeIS6_S7_EE Unexecuted instantiation: CoverageValidator.cpp:_ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS_4geom8GeometryENS1_14EnvelopeTraitsEE9visitLeafIRZNS_8coverage17CoverageValidator8validateES6_RNS1_15TemplateSTRtreeIS6_S7_EEE3$_0TnNSt3__19enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSH_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISJ_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSJ_RKNS1_15TemplateSTRNodeIS6_S7_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS_8coverage14TPVWSimplifier4EdgeENS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS7_S8_E5queryEPKNS_4geom8EnvelopeERNSt3__16vectorIPvNSH_9allocatorISJ_EEEEEUlS7_E_TnNSH_9enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSH_7declvalB8ne220000IS7_EEDTclsr3stdE9__declvalISR_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSR_RKNS1_15TemplateSTRNodeIS7_S8_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS_8coverage14TPVWSimplifier4EdgeENS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS7_S8_E5queryEPKNS_4geom8EnvelopeERNS0_11ItemVisitorEEUlS7_E_TnNSt3__19enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSL_7declvalB8ne220000IS7_EEDTclsr3stdE9__declvalISN_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSN_RKNS1_15TemplateSTRNodeIS7_S8_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS_8coverage14TPVWSimplifier4EdgeENS1_14EnvelopeTraitsEE9visitLeafIRZNS9_5queryERKNS_4geom8EnvelopeERNSt3__16vectorIS7_NSF_9allocatorIS7_EEEEEUlRKS7_E_TnNSF_9enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSF_7declvalB8ne220000IS7_EEDTclsr3stdE9__declvalISQ_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSQ_RKNS1_15TemplateSTRNodeIS7_S8_EE Unexecuted instantiation: DBSCANClusterFinder.cpp:_ZN4geos5index7strtree19TemplateSTRtreeImplImNS1_14EnvelopeTraitsEE9visitLeafIRZNS_9operation7cluster19DBSCANClusterFinder7processERKNSt3__16vectorIPKNS_4geom8GeometryENS9_9allocatorISE_EEEERNS1_15TemplateSTRtreeImS3_EERNS7_9UnionFindEE3$_0TnNS9_9enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNS9_7declvalB8ne220000ImEEDTclsr3stdE9__declvalISS_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSS_RKNS1_15TemplateSTRNodeImS3_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPNS_9operation9overlayng15OverlayEdgeRingENS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS6_S7_E5queryEPKNS_4geom8EnvelopeERNSt3__16vectorIPvNSG_9allocatorISI_EEEEEUlPKS5_E_TnNSG_9enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSG_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISS_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSS_RKNS1_15TemplateSTRNodeIS6_S7_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPNS_9operation9overlayng15OverlayEdgeRingENS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS6_S7_E5queryEPKNS_4geom8EnvelopeERNS0_11ItemVisitorEEUlPKS5_E_TnNSt3__19enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSM_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISO_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSO_RKNS1_15TemplateSTRNodeIS6_S7_EE _ZN4geos5index7strtree19TemplateSTRtreeImplIPNS_9operation9overlayng15OverlayEdgeRingENS1_14EnvelopeTraitsEE9visitLeafIRZNS8_5queryERKNS_4geom8EnvelopeERNSt3__16vectorIS6_NSE_9allocatorIS6_EEEEEUlRKS6_E_TnNSE_9enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSE_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISP_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSP_RKNS1_15TemplateSTRNodeIS6_S7_EE Line | Count | Source | 543 | 7.54k | { | 544 | 7.54k | visitor(node.getItem()); | 545 | 7.54k | return true; | 546 | 7.54k | } |
Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPNS_9operation10polygonize8EdgeRingENS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS6_S7_E5queryEPKNS_4geom8EnvelopeERNSt3__16vectorIPvNSG_9allocatorISI_EEEEEUlPKS5_E_TnNSG_9enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSG_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISS_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSS_RKNS1_15TemplateSTRNodeIS6_S7_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPNS_9operation10polygonize8EdgeRingENS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS6_S7_E5queryEPKNS_4geom8EnvelopeERNS0_11ItemVisitorEEUlPKS5_E_TnNSt3__19enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSM_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISO_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSO_RKNS1_15TemplateSTRNodeIS6_S7_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS_4geom10LinearRingENS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS6_S7_E5queryEPKNS3_8EnvelopeERNSt3__16vectorIPvNSF_9allocatorISH_EEEEEUlS6_E_TnNSF_9enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSF_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISP_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSP_RKNS1_15TemplateSTRNodeIS6_S7_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS_4geom10LinearRingENS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS6_S7_E5queryEPKNS3_8EnvelopeERNS0_11ItemVisitorEEUlS6_E_TnNSt3__19enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSJ_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISL_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSL_RKNS1_15TemplateSTRNodeIS6_S7_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS_4geom7PolygonENS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS6_S7_E5queryEPKNS3_8EnvelopeERNSt3__16vectorIPvNSF_9allocatorISH_EEEEEUlS6_E_TnNSF_9enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSF_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISP_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSP_RKNS1_15TemplateSTRNodeIS6_S7_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS_4geom7PolygonENS1_14EnvelopeTraitsEE9visitLeafIRZNS1_15TemplateSTRtreeIS6_S7_E5queryEPKNS3_8EnvelopeERNS0_11ItemVisitorEEUlS6_E_TnNSt3__19enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSJ_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISL_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSL_RKNS1_15TemplateSTRNodeIS6_S7_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPNS_9algorithm6locate25IndexedPointInAreaLocatorENS1_14EnvelopeTraitsEE9visitLeafIRZNS8_5queryERKNS_4geom8EnvelopeERNSt3__16vectorIS6_NSE_9allocatorIS6_EEEEEUlRKS6_E_TnNSE_9enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSE_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISP_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSP_RKNS1_15TemplateSTRNodeIS6_S7_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPNS_9operation10polygonize8EdgeRingENS1_14EnvelopeTraitsEE9visitLeafIRZNS8_5queryERKNS_4geom8EnvelopeERNSt3__16vectorIS6_NSE_9allocatorIS6_EEEEEUlRKS6_E_TnNSE_9enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSE_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISP_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSP_RKNS1_15TemplateSTRNodeIS6_S7_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS_4geom10LinearRingENS1_14EnvelopeTraitsEE9visitLeafIRZNS8_5queryERKNS3_8EnvelopeERNSt3__16vectorIS6_NSD_9allocatorIS6_EEEEEUlRKS6_E_TnNSD_9enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSD_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISO_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSO_RKNS1_15TemplateSTRNodeIS6_S7_EE Unexecuted instantiation: _ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS_4geom7PolygonENS1_14EnvelopeTraitsEE9visitLeafIRZNS8_5queryERKNS3_8EnvelopeERNSt3__16vectorIS6_NSD_9allocatorIS6_EEEEEUlRKS6_E_TnNSD_9enable_ifIXsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSD_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISO_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSO_RKNS1_15TemplateSTRNodeIS6_S7_EE |
547 | | |
548 | | template<typename Visitor, |
549 | | typename std::enable_if<std::is_void<decltype(std::declval<Visitor>()(std::declval<ItemType>(), std::declval<ItemType>()))>::value, std::nullptr_t>::type = nullptr > |
550 | | bool visitLeaves(Visitor&& visitor, const Node& node1, const Node& node2) |
551 | | { |
552 | | visitor(node1.getItem(), node2.getItem()); |
553 | | return true; |
554 | | } |
555 | | |
556 | | // MSVC 2015 does not implement C++11 expression SFINAE and considers this a |
557 | | // redefinition of a previous method |
558 | | #if !defined(_MSC_VER) || _MSC_VER >= 1910 |
559 | | template<typename Visitor, |
560 | | typename std::enable_if<std::is_void<decltype(std::declval<Visitor>()(std::declval<BoundsType>(), std::declval<ItemType>()))>::value, std::nullptr_t>::type = nullptr > |
561 | | bool visitLeaf(Visitor&& visitor, const Node& node) |
562 | | { |
563 | | visitor(node.getBounds(), node.getItem()); |
564 | | return true; |
565 | | } |
566 | | #endif |
567 | | |
568 | | // If the visitor function does return a value, we will use this to indicate |
569 | | // that querying should continue. |
570 | | template<typename Visitor, |
571 | | typename std::enable_if<!std::is_void<decltype(std::declval<Visitor>()(std::declval<ItemType>()))>::value, std::nullptr_t>::type = nullptr> |
572 | | bool visitLeaf(Visitor&& visitor, const Node& node) |
573 | 0 | { |
574 | 0 | return visitor(node.getItem()); |
575 | 0 | } Unexecuted instantiation: MCIndexSegmentSetMutualIntersector.cpp:_ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS0_5chain13MonotoneChainENS1_14EnvelopeTraitsEE9visitLeafIRZNS_6noding34MCIndexSegmentSetMutualIntersector15intersectChainsEvE3$_0TnNSt3__19enable_ifIXntsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSE_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISG_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSG_RKNS1_15TemplateSTRNodeIS6_S7_EE Unexecuted instantiation: SegmentMCIndex.cpp:_ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS0_5chain13MonotoneChainENS1_14EnvelopeTraitsEE9visitLeafIRZNS_9operation6buffer14SegmentMCIndex5queryEPKNS_4geom8EnvelopeERNS3_25MonotoneChainSelectActionEE3$_0TnNSt3__19enable_ifIXntsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSL_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISN_ELi0EEEvEEEEEE5valueEDnE4typeELDn0EEEbOSN_RKNS1_15TemplateSTRNodeIS6_S7_EE |
576 | | |
577 | | template<typename Visitor, |
578 | | typename std::enable_if<!std::is_void<decltype(std::declval<Visitor>()(std::declval<ItemType>(), std::declval<ItemType>()))>::value, std::nullptr_t>::type = nullptr > |
579 | | bool visitLeaves(Visitor&& visitor, const Node& node1, const Node& node2) |
580 | 299M | { |
581 | 299M | return visitor(node1.getItem(), node2.getItem()); |
582 | 299M | } MCIndexNoder.cpp:_ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS0_5chain13MonotoneChainENS1_14EnvelopeTraitsEE11visitLeavesIRZNS_6noding12MCIndexNoder15intersectChainsEvE3$_0TnNSt3__19enable_ifIXntsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSE_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISG_ELi0EEEvEEclL_ZNSH_IS6_EESI_vEEEEEE5valueEDnE4typeELDn0EEEbOSG_RKNS1_15TemplateSTRNodeIS6_S7_EESQ_ Line | Count | Source | 580 | 299M | { | 581 | 299M | return visitor(node1.getItem(), node2.getItem()); | 582 | 299M | } |
Unexecuted instantiation: EdgeSetIntersector.cpp:_ZN4geos5index7strtree19TemplateSTRtreeImplIPKNS0_5chain13MonotoneChainENS1_14EnvelopeTraitsEE11visitLeavesIRZNS_9operation8relateng18EdgeSetIntersector7processERNSB_22EdgeSegmentIntersectorEE3$_0TnNSt3__19enable_ifIXntsr3std7is_voidIDTclclsr3stdE7declvalIT_EEclL_ZNSH_7declvalB8ne220000IS6_EEDTclsr3stdE9__declvalISJ_ELi0EEEvEEclL_ZNSK_IS6_EESL_vEEEEEE5valueEDnE4typeELDn0EEEbOSJ_RKNS1_15TemplateSTRNodeIS6_S7_EEST_ |
583 | | |
584 | | // MSVC 2015 does not implement C++11 expression SFINAE and considers this a |
585 | | // redefinition of a previous method |
586 | | #if !defined(_MSC_VER) || _MSC_VER >= 1910 |
587 | | template<typename Visitor, |
588 | | typename std::enable_if<!std::is_void<decltype(std::declval<Visitor>()(std::declval<BoundsType>(), std::declval<ItemType>()))>::value, std::nullptr_t>::type = nullptr> |
589 | | bool visitLeaf(Visitor&& visitor, const Node& node) |
590 | | { |
591 | | return visitor(node.getBounds(), node.getItem()); |
592 | | } |
593 | | #endif |
594 | | |
595 | | template<typename Visitor> |
596 | | bool query(const BoundsType& queryEnv, |
597 | | const Node& node, |
598 | 687k | Visitor&& visitor) { |
599 | | |
600 | 687k | assert(!node.isLeaf()); |
601 | | |
602 | 6.87M | for (auto *child = node.beginChildren(); child < node.endChildren(); ++child) { |
603 | 6.18M | if (child->boundsIntersect(queryEnv)) { |
604 | 5.17M | if (child->isLeaf()) { |
605 | 4.56M | if (!child->isDeleted()) { |
606 | 4.56M | if (!visitLeaf(visitor, *child)) { |
607 | 0 | return false; // abort query |
608 | 0 | } |
609 | 4.56M | } |
610 | 4.56M | } else { |
611 | 605k | if (!query(queryEnv, *child, visitor)) { |
612 | 0 | return false; // abort query |
613 | 0 | } |
614 | 605k | } |
615 | 5.17M | } |
616 | 6.18M | } |
617 | 687k | return true; // continue searching |
618 | 687k | } 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}&)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}&)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 | 598 | 685k | Visitor&& visitor) { | 599 | | | 600 | 685k | assert(!node.isLeaf()); | 601 | | | 602 | 6.86M | for (auto *child = node.beginChildren(); child < node.endChildren(); ++child) { | 603 | 6.17M | if (child->boundsIntersect(queryEnv)) { | 604 | 5.16M | if (child->isLeaf()) { | 605 | 4.56M | if (!child->isDeleted()) { | 606 | 4.56M | if (!visitLeaf(visitor, *child)) { | 607 | 0 | return false; // abort query | 608 | 0 | } | 609 | 4.56M | } | 610 | 4.56M | } else { | 611 | 605k | if (!query(queryEnv, *child, visitor)) { | 612 | 0 | return false; // abort query | 613 | 0 | } | 614 | 605k | } | 615 | 5.16M | } | 616 | 6.17M | } | 617 | 685k | return true; // continue searching | 618 | 685k | } |
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::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: 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: DBSCANClusterFinder.cpp:bool geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::query<geos::operation::cluster::DBSCANClusterFinder::process(std::__1::vector<geos::geom::Geometry const*, std::__1::allocator<geos::geom::Geometry const*> > const&, geos::index::strtree::TemplateSTRtree<unsigned long, geos::index::strtree::EnvelopeTraits>&, geos::operation::cluster::UnionFind&)::$_0&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<unsigned long, geos::index::strtree::EnvelopeTraits> const&, geos::operation::cluster::DBSCANClusterFinder::process(std::__1::vector<geos::geom::Geometry const*, std::__1::allocator<geos::geom::Geometry const*> > const&, geos::index::strtree::TemplateSTRtree<unsigned long, geos::index::strtree::EnvelopeTraits>&, geos::operation::cluster::UnionFind&)::$_0&) Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::operation::overlayng::OverlayEdgeRing const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::operation::overlayng::OverlayEdgeRing const*)#1}&)Unexecuted instantiation: bool geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtree<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::operation::overlayng::OverlayEdgeRing const*)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtree<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::operation::overlayng::OverlayEdgeRing const*)#1}&)bool geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query<geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::operation::overlayng::OverlayEdgeRing*, std::__1::allocator<geos::operation::overlayng::OverlayEdgeRing*> >&)::{lambda(geos::operation::overlayng::OverlayEdgeRing* const&)#1}&>(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const&, std::__1::vector<geos::operation::overlayng::OverlayEdgeRing*, std::__1::allocator<geos::operation::overlayng::OverlayEdgeRing*> >&)::{lambda(geos::operation::overlayng::OverlayEdgeRing* const&)#1}&)Line | Count | Source | 598 | 2.31k | Visitor&& visitor) { | 599 | | | 600 | 2.31k | assert(!node.isLeaf()); | 601 | | | 602 | 9.22k | for (auto *child = node.beginChildren(); child < node.endChildren(); ++child) { | 603 | 6.91k | if (child->boundsIntersect(queryEnv)) { | 604 | 3.49k | if (child->isLeaf()) { | 605 | 3.49k | if (!child->isDeleted()) { | 606 | 3.49k | if (!visitLeaf(visitor, *child)) { | 607 | 0 | return false; // abort query | 608 | 0 | } | 609 | 3.49k | } | 610 | 3.49k | } else { | 611 | 0 | if (!query(queryEnv, *child, visitor)) { | 612 | 0 | return false; // abort query | 613 | 0 | } | 614 | 0 | } | 615 | 3.49k | } | 616 | 6.91k | } | 617 | 2.31k | return true; // continue searching | 618 | 2.31k | } |
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}&) |
619 | | |
620 | | template<typename Visitor> |
621 | | bool queryPairs(const Node& queryNode, |
622 | | const Node& searchNode, |
623 | 400M | Visitor&& visitor) { |
624 | | |
625 | 400M | assert(!searchNode.isLeaf()); |
626 | | |
627 | 3.58G | for (auto* child = searchNode.beginChildren(); child < searchNode.endChildren(); ++child) { |
628 | 3.25G | if (child->isLeaf()) { |
629 | | // Only visit leaf nodes if they have a higher address than the query node, |
630 | | // to avoid processing the same pairs twice. |
631 | 2.08G | if (child > &queryNode && !child->isDeleted() && child->boundsIntersect(queryNode.getBounds())) { |
632 | 299M | if (!visitLeaves(visitor, queryNode, *child)) { |
633 | 14.2M | return false; // abort query |
634 | 14.2M | } |
635 | 299M | } |
636 | 2.08G | } else { |
637 | 1.17G | if (child->boundsIntersect(queryNode.getBounds())) { |
638 | 368M | if (!queryPairs(queryNode, *child, visitor)) { |
639 | 59.3M | return false; // abort query |
640 | 59.3M | } |
641 | 368M | } |
642 | 1.17G | } |
643 | 3.25G | } |
644 | | |
645 | 326M | return true; // continue searching |
646 | 400M | } MCIndexNoder.cpp:bool geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::queryPairs<geos::noding::MCIndexNoder::intersectChains()::$_0&>(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&, geos::noding::MCIndexNoder::intersectChains()::$_0&) Line | Count | Source | 623 | 400M | Visitor&& visitor) { | 624 | | | 625 | 400M | assert(!searchNode.isLeaf()); | 626 | | | 627 | 3.58G | for (auto* child = searchNode.beginChildren(); child < searchNode.endChildren(); ++child) { | 628 | 3.25G | if (child->isLeaf()) { | 629 | | // Only visit leaf nodes if they have a higher address than the query node, | 630 | | // to avoid processing the same pairs twice. | 631 | 2.08G | if (child > &queryNode && !child->isDeleted() && child->boundsIntersect(queryNode.getBounds())) { | 632 | 299M | if (!visitLeaves(visitor, queryNode, *child)) { | 633 | 14.2M | return false; // abort query | 634 | 14.2M | } | 635 | 299M | } | 636 | 2.08G | } else { | 637 | 1.17G | if (child->boundsIntersect(queryNode.getBounds())) { | 638 | 368M | if (!queryPairs(queryNode, *child, visitor)) { | 639 | 59.3M | return false; // abort query | 640 | 59.3M | } | 641 | 368M | } | 642 | 1.17G | } | 643 | 3.25G | } | 644 | | | 645 | 326M | return true; // continue searching | 646 | 400M | } |
Unexecuted instantiation: EdgeSetIntersector.cpp:bool geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::queryPairs<geos::operation::relateng::EdgeSetIntersector::process(geos::operation::relateng::EdgeSegmentIntersector&)::$_0&>(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&, geos::operation::relateng::EdgeSetIntersector::process(geos::operation::relateng::EdgeSegmentIntersector&)::$_0&) |
647 | | |
648 | | bool remove(const BoundsType& queryEnv, |
649 | | const Node& node, |
650 | 0 | const ItemType& item) { |
651 | |
|
652 | 0 | assert(!node.isLeaf()); |
653 | |
|
654 | 0 | for (auto *child = node.beginChildren(); child < node.endChildren(); ++child) { |
655 | 0 | if (child->boundsIntersect(queryEnv)) { |
656 | 0 | if (child->isLeaf()) { |
657 | 0 | if (!child->isDeleted() && child->getItem() == item) { |
658 | | // const cast is ugly, but alternative seems to be to remove all |
659 | | // const qualifiers in Node and open up mutability everywhere? |
660 | 0 | auto mutableChild = const_cast<Node*>(child); |
661 | 0 | mutableChild->removeItem(); |
662 | 0 | return true; |
663 | 0 | } |
664 | 0 | } else { |
665 | 0 | bool removed = remove(queryEnv, *child, item); |
666 | 0 | if (removed) { |
667 | 0 | return true; |
668 | 0 | } |
669 | 0 | } |
670 | 0 | } |
671 | 0 | } |
672 | | |
673 | 0 | return false; |
674 | 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::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::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::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::remove(geos::geom::Envelope const&, geos::index::strtree::TemplateSTRNode<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits> const&, geos::operation::overlayng::OverlayEdgeRing* 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&) |
675 | | |
676 | 1.33M | size_t sliceCount(size_t numNodes) const { |
677 | 1.33M | double minLeafCount = std::ceil(static_cast<double>(numNodes) / static_cast<double>(nodeCapacity)); |
678 | | |
679 | 1.33M | return static_cast<size_t>(std::ceil(std::sqrt(minLeafCount))); |
680 | 1.33M | } 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::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::sliceCount(unsigned long) const Line | Count | Source | 676 | 1.20M | size_t sliceCount(size_t numNodes) const { | 677 | 1.20M | double minLeafCount = std::ceil(static_cast<double>(numNodes) / static_cast<double>(nodeCapacity)); | 678 | | | 679 | 1.20M | return static_cast<size_t>(std::ceil(std::sqrt(minLeafCount))); | 680 | 1.20M | } |
geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::sliceCount(unsigned long) const Line | Count | Source | 676 | 113k | size_t sliceCount(size_t numNodes) const { | 677 | 113k | double minLeafCount = std::ceil(static_cast<double>(numNodes) / static_cast<double>(nodeCapacity)); | 678 | | | 679 | 113k | return static_cast<size_t>(std::ceil(std::sqrt(minLeafCount))); | 680 | 113k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::sliceCount(unsigned long) const geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::sliceCount(unsigned long) const Line | Count | Source | 676 | 18.8k | size_t sliceCount(size_t numNodes) const { | 677 | 18.8k | double minLeafCount = std::ceil(static_cast<double>(numNodes) / static_cast<double>(nodeCapacity)); | 678 | | | 679 | 18.8k | return static_cast<size_t>(std::ceil(std::sqrt(minLeafCount))); | 680 | 18.8k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::sliceCount(unsigned long) const geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::sliceCount(unsigned long) const Line | Count | Source | 676 | 4.46k | size_t sliceCount(size_t numNodes) const { | 677 | 4.46k | double minLeafCount = std::ceil(static_cast<double>(numNodes) / static_cast<double>(nodeCapacity)); | 678 | | | 679 | 4.46k | return static_cast<size_t>(std::ceil(std::sqrt(minLeafCount))); | 680 | 4.46k | } |
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 |
681 | | |
682 | 1.33M | static size_t sliceCapacity(size_t numNodes, size_t numSlices) { |
683 | 1.33M | return static_cast<size_t>(std::ceil(static_cast<double>(numNodes) / static_cast<double>(numSlices))); |
684 | 1.33M | } 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::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::sliceCapacity(unsigned long, unsigned long) Line | Count | Source | 682 | 1.20M | static size_t sliceCapacity(size_t numNodes, size_t numSlices) { | 683 | 1.20M | return static_cast<size_t>(std::ceil(static_cast<double>(numNodes) / static_cast<double>(numSlices))); | 684 | 1.20M | } |
geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::sliceCapacity(unsigned long, unsigned long) Line | Count | Source | 682 | 113k | static size_t sliceCapacity(size_t numNodes, size_t numSlices) { | 683 | 113k | return static_cast<size_t>(std::ceil(static_cast<double>(numNodes) / static_cast<double>(numSlices))); | 684 | 113k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::sliceCapacity(unsigned long, unsigned long) geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::sliceCapacity(unsigned long, unsigned long) Line | Count | Source | 682 | 18.8k | static size_t sliceCapacity(size_t numNodes, size_t numSlices) { | 683 | 18.8k | return static_cast<size_t>(std::ceil(static_cast<double>(numNodes) / static_cast<double>(numSlices))); | 684 | 18.8k | } |
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::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::sliceCapacity(unsigned long, unsigned long) Line | Count | Source | 682 | 4.46k | static size_t sliceCapacity(size_t numNodes, size_t numSlices) { | 683 | 4.46k | return static_cast<size_t>(std::ceil(static_cast<double>(numNodes) / static_cast<double>(numSlices))); | 684 | 4.46k | } |
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) |
685 | | |
686 | 728k | void validateConstruction() const { |
687 | 728k | if (nodeCapacity < 2) { |
688 | 0 | throw util::IllegalArgumentException("STRTree node capacity must be >= 2"); |
689 | 0 | } |
690 | 728k | } Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<void*, geos::index::strtree::EnvelopeTraits>::validateConstruction() const Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits>::validateConstruction() const geos::index::strtree::TemplateSTRtreeImpl<geos::index::chain::MonotoneChain const*, geos::index::strtree::EnvelopeTraits>::validateConstruction() const Line | Count | Source | 686 | 456k | void validateConstruction() const { | 687 | 456k | if (nodeCapacity < 2) { | 688 | 0 | throw util::IllegalArgumentException("STRTree node capacity must be >= 2"); | 689 | 0 | } | 690 | 456k | } |
geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator::SegmentView, geos::index::strtree::IntervalTraits>::validateConstruction() const Line | Count | Source | 686 | 46.0k | void validateConstruction() const { | 687 | 46.0k | if (nodeCapacity < 2) { | 688 | 0 | throw util::IllegalArgumentException("STRTree node capacity must be >= 2"); | 689 | 0 | } | 690 | 46.0k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<unsigned long, geos::index::strtree::EnvelopeTraits>::validateConstruction() const geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Geometry const*, geos::index::strtree::EnvelopeTraits>::validateConstruction() const Line | Count | Source | 686 | 5.40k | void validateConstruction() const { | 687 | 5.40k | if (nodeCapacity < 2) { | 688 | 0 | throw util::IllegalArgumentException("STRTree node capacity must be >= 2"); | 689 | 0 | } | 690 | 5.40k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::coverage::TPVWSimplifier::Edge const*, geos::index::strtree::EnvelopeTraits>::validateConstruction() const geos::index::strtree::TemplateSTRtreeImpl<geos::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::validateConstruction() const Line | Count | Source | 686 | 220k | void validateConstruction() const { | 687 | 220k | if (nodeCapacity < 2) { | 688 | 0 | throw util::IllegalArgumentException("STRTree node capacity must be >= 2"); | 689 | 0 | } | 690 | 220k | } |
Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::operation::polygonize::EdgeRing*, geos::index::strtree::EnvelopeTraits>::validateConstruction() const Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::LinearRing const*, geos::index::strtree::EnvelopeTraits>::validateConstruction() const Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::algorithm::locate::IndexedPointInAreaLocator*, geos::index::strtree::EnvelopeTraits>::validateConstruction() const Unexecuted instantiation: geos::index::strtree::TemplateSTRtreeImpl<geos::geom::Polygon const*, geos::index::strtree::EnvelopeTraits>::validateConstruction() const |
691 | | }; |
692 | | |
693 | | struct EnvelopeTraits { |
694 | | using BoundsType = geom::Envelope; |
695 | | using TwoDimensional = std::true_type; |
696 | | |
697 | 1.76G | static bool intersects(const BoundsType& a, const BoundsType& b) { |
698 | 1.76G | return a.intersects(b); |
699 | 1.76G | } |
700 | | |
701 | 0 | static double size(const BoundsType& a) { |
702 | 0 | return a.getArea(); |
703 | 0 | } |
704 | | |
705 | 0 | static double distance(const BoundsType& a, const BoundsType& b) { |
706 | 0 | return a.distance(b); |
707 | 0 | } |
708 | | |
709 | 0 | static double maxDistance(const BoundsType& a, const BoundsType& b) { |
710 | 0 | return a.maxDistance(b); |
711 | 0 | } |
712 | | |
713 | 0 | static BoundsType empty() { |
714 | 0 | return {}; |
715 | 0 | } |
716 | | |
717 | | template<typename ItemType> |
718 | 0 | static const BoundsType& fromItem(const ItemType& i) { |
719 | 0 | return *(i->getEnvelopeInternal()); |
720 | 0 | } |
721 | | |
722 | | template<typename ItemType> |
723 | 4.85M | static const BoundsType& fromItem(ItemType&& i) { |
724 | 4.85M | return *(i->getEnvelopeInternal()); |
725 | 4.85M | } 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 | 723 | 4.85M | static const BoundsType& fromItem(ItemType&& i) { | 724 | 4.85M | return *(i->getEnvelopeInternal()); | 725 | 4.85M | } |
|
726 | | |
727 | 911M | static double getX(const BoundsType& a) { |
728 | 911M | return a.getMinX() + a.getMaxX(); |
729 | 911M | } |
730 | | |
731 | 663M | static double getY(const BoundsType& a) { |
732 | 663M | return a.getMinY() + a.getMaxY(); |
733 | 663M | } |
734 | | |
735 | 41.3M | static void expandToInclude(BoundsType& a, const BoundsType& b) { |
736 | 41.3M | a.expandToInclude(b); |
737 | 41.3M | } |
738 | | |
739 | 44.7M | static bool isNull(const BoundsType& a) { |
740 | 44.7M | return a.isNull(); |
741 | 44.7M | } |
742 | | }; |
743 | | |
744 | | struct IntervalTraits { |
745 | | using BoundsType = Interval; |
746 | | using TwoDimensional = std::false_type; |
747 | | |
748 | 6.31M | static bool intersects(const BoundsType& a, const BoundsType& b) { |
749 | 6.31M | return a.intersects(&b); |
750 | 6.31M | } |
751 | | |
752 | 0 | static double size(const BoundsType& a) { |
753 | 0 | return a.getWidth(); |
754 | 0 | } |
755 | | |
756 | 106M | static double getX(const BoundsType& a) { |
757 | 106M | return a.getMin() + a.getMax(); |
758 | 106M | } |
759 | | |
760 | 0 | static double getY(const BoundsType& a) { |
761 | 0 | return a.getMin() + a.getMax(); |
762 | 0 | } |
763 | | |
764 | 7.34M | static void expandToInclude(BoundsType& a, const BoundsType& b) { |
765 | 7.34M | a.expandToInclude(&b); |
766 | 7.34M | } |
767 | | |
768 | 7.36M | static bool isNull(const BoundsType& a) { |
769 | 7.36M | (void) a; |
770 | 7.36M | return false; |
771 | 7.36M | } |
772 | | }; |
773 | | |
774 | | |
775 | | template<typename ItemType, typename BoundsTraits = EnvelopeTraits> |
776 | | class TemplateSTRtree : public TemplateSTRtreeImpl<ItemType, BoundsTraits> { |
777 | | public: |
778 | | using TemplateSTRtreeImpl<ItemType, BoundsTraits>::TemplateSTRtreeImpl; |
779 | | }; |
780 | | |
781 | | // When ItemType is a pointer and our bounds are geom::Envelope, adopt |
782 | | // the SpatialIndex interface which requires queries via an envelope |
783 | | // and items to be representable as void*. |
784 | | template<typename ItemType> |
785 | | class TemplateSTRtree<ItemType*, EnvelopeTraits> : public TemplateSTRtreeImpl<ItemType*, EnvelopeTraits>, public SpatialIndex { |
786 | | public: |
787 | | using TemplateSTRtreeImpl<ItemType*, EnvelopeTraits>::TemplateSTRtreeImpl; |
788 | | using TemplateSTRtreeImpl<ItemType*, EnvelopeTraits>::insert; |
789 | | using TemplateSTRtreeImpl<ItemType*, EnvelopeTraits>::query; |
790 | | using TemplateSTRtreeImpl<ItemType*, EnvelopeTraits>::remove; |
791 | | |
792 | | // The SpatialIndex methods only work when we are storing a pointer type. |
793 | 0 | void query(const geom::Envelope* queryEnv, std::vector<void*>& results) override { |
794 | 0 | query(*queryEnv, [&results](const ItemType* x) { |
795 | 0 | results.push_back(const_cast<void*>(static_cast<const void*>(x))); |
796 | 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::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, std::__1::vector<void*, std::__1::allocator<void*> >&)::{lambda(geos::operation::overlayng::OverlayEdgeRing const*)#1}::operator()(geos::operation::overlayng::OverlayEdgeRing 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 |
797 | 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::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::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::operation::overlayng::OverlayEdgeRing*, 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*> >&) |
798 | | |
799 | 0 | void query(const geom::Envelope* queryEnv, ItemVisitor& visitor) override { |
800 | 0 | query(*queryEnv, [&visitor](const ItemType* x) { |
801 | 0 | visitor.visitItem(const_cast<void*>(static_cast<const void*>(x))); |
802 | 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::operation::overlayng::OverlayEdgeRing*, geos::index::strtree::EnvelopeTraits>::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)::{lambda(geos::operation::overlayng::OverlayEdgeRing const*)#1}::operator()(geos::operation::overlayng::OverlayEdgeRing 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 |
803 | 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::index::chain::MonotoneChain 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::operation::overlayng::OverlayEdgeRing*, 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&) |
804 | | |
805 | 0 | bool remove(const geom::Envelope* itemEnv, void* item) override { |
806 | 0 | return remove(*itemEnv, static_cast<ItemType*>(item)); |
807 | 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::index::chain::MonotoneChain 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::operation::overlayng::OverlayEdgeRing*, 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*) |
808 | | |
809 | 0 | void insert(const geom::Envelope* itemEnv, void* item) override { |
810 | 0 | insert(*itemEnv, std::move(static_cast<ItemType*>(item))); |
811 | 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::index::chain::MonotoneChain const*, 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::operation::overlayng::OverlayEdgeRing*, 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*) |
812 | | }; |
813 | | |
814 | | |
815 | | } |
816 | | } |
817 | | } |