Coverage Report

Created: 2024-07-03 06:16

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