/src/geos/include/geos/index/strtree/TemplateSTRNodePair.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/index/strtree/TemplateSTRNode.h> |
18 | | #include <utility> |
19 | | |
20 | | namespace geos { |
21 | | namespace index { |
22 | | namespace strtree { |
23 | | |
24 | | template<typename ItemType, typename BoundsTraits, typename ItemDistance> |
25 | | class TemplateSTRNodePair { |
26 | | public: |
27 | | using Node = TemplateSTRNode<ItemType, BoundsTraits>; |
28 | | |
29 | | TemplateSTRNodePair(const Node &node1, const Node &node2, ItemDistance& id) |
30 | 0 | : m_node1(&node1), m_node2(&node2), m_distance(distance(id)) {} Unexecuted instantiation: geos_ts_c.cpp:geos::index::strtree::TemplateSTRNodePair<void*, geos::index::strtree::EnvelopeTraits, GEOSSTRtree_nearest_generic_r::CustomItemDistance>::TemplateSTRNodePair(geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits> const&, GEOSSTRtree_nearest_generic_r::CustomItemDistance&) Unexecuted instantiation: geos_ts_c.cpp:geos::index::strtree::TemplateSTRNodePair<void*, geos::index::strtree::EnvelopeTraits, GEOSSTRtree_nearest_generic_r::GeometryDistance>::TemplateSTRNodePair(geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits> const&, geos::index::strtree::TemplateSTRNode<void*, geos::index::strtree::EnvelopeTraits> const&, GEOSSTRtree_nearest_generic_r::GeometryDistance&) Unexecuted instantiation: geos::index::strtree::TemplateSTRNodePair<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits, geos::operation::distance::IndexedFacetDistance::FacetDistance>::TemplateSTRNodePair(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::operation::distance::IndexedFacetDistance::FacetDistance&) Unexecuted instantiation: MinimumClearance.cpp:geos::index::strtree::TemplateSTRNodePair<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits, geos::precision::MinimumClearance::compute()::MinClearanceDistance>::TemplateSTRNodePair(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::precision::MinimumClearance::compute()::MinClearanceDistance&) |
31 | | |
32 | 0 | bool isLeaves() const { |
33 | 0 | return getFirst().isLeaf() && getSecond().isLeaf(); |
34 | 0 | } Unexecuted instantiation: geos_ts_c.cpp:geos::index::strtree::TemplateSTRNodePair<void*, geos::index::strtree::EnvelopeTraits, GEOSSTRtree_nearest_generic_r::CustomItemDistance>::isLeaves() const Unexecuted instantiation: geos_ts_c.cpp:geos::index::strtree::TemplateSTRNodePair<void*, geos::index::strtree::EnvelopeTraits, GEOSSTRtree_nearest_generic_r::GeometryDistance>::isLeaves() const Unexecuted instantiation: geos::index::strtree::TemplateSTRNodePair<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits, geos::operation::distance::IndexedFacetDistance::FacetDistance>::isLeaves() const Unexecuted instantiation: MinimumClearance.cpp:geos::index::strtree::TemplateSTRNodePair<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits, geos::precision::MinimumClearance::compute()::MinClearanceDistance>::isLeaves() const |
35 | | |
36 | 0 | double getDistance() const { |
37 | 0 | return m_distance; |
38 | 0 | } Unexecuted instantiation: geos_ts_c.cpp:geos::index::strtree::TemplateSTRNodePair<void*, geos::index::strtree::EnvelopeTraits, GEOSSTRtree_nearest_generic_r::CustomItemDistance>::getDistance() const Unexecuted instantiation: geos_ts_c.cpp:geos::index::strtree::TemplateSTRNodePair<void*, geos::index::strtree::EnvelopeTraits, GEOSSTRtree_nearest_generic_r::GeometryDistance>::getDistance() const Unexecuted instantiation: geos::index::strtree::TemplateSTRNodePair<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits, geos::operation::distance::IndexedFacetDistance::FacetDistance>::getDistance() const Unexecuted instantiation: MinimumClearance.cpp:geos::index::strtree::TemplateSTRNodePair<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits, geos::precision::MinimumClearance::compute()::MinClearanceDistance>::getDistance() const |
39 | | |
40 | 0 | std::pair<ItemType, ItemType> getItems() const { |
41 | 0 | assert(isLeaves()); |
42 | 0 | return std::make_pair(getFirst().getItem(), getSecond().getItem()); |
43 | 0 | } Unexecuted instantiation: geos_ts_c.cpp:geos::index::strtree::TemplateSTRNodePair<void*, geos::index::strtree::EnvelopeTraits, GEOSSTRtree_nearest_generic_r::CustomItemDistance>::getItems() const Unexecuted instantiation: geos_ts_c.cpp:geos::index::strtree::TemplateSTRNodePair<void*, geos::index::strtree::EnvelopeTraits, GEOSSTRtree_nearest_generic_r::GeometryDistance>::getItems() const Unexecuted instantiation: geos::index::strtree::TemplateSTRNodePair<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits, geos::operation::distance::IndexedFacetDistance::FacetDistance>::getItems() const Unexecuted instantiation: MinimumClearance.cpp:geos::index::strtree::TemplateSTRNodePair<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits, geos::precision::MinimumClearance::compute()::MinClearanceDistance>::getItems() const |
44 | | |
45 | 0 | const Node &getFirst() const { |
46 | 0 | return *m_node1; |
47 | 0 | } Unexecuted instantiation: geos_ts_c.cpp:geos::index::strtree::TemplateSTRNodePair<void*, geos::index::strtree::EnvelopeTraits, GEOSSTRtree_nearest_generic_r::CustomItemDistance>::getFirst() const Unexecuted instantiation: geos_ts_c.cpp:geos::index::strtree::TemplateSTRNodePair<void*, geos::index::strtree::EnvelopeTraits, GEOSSTRtree_nearest_generic_r::GeometryDistance>::getFirst() const Unexecuted instantiation: geos::index::strtree::TemplateSTRNodePair<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits, geos::operation::distance::IndexedFacetDistance::FacetDistance>::getFirst() const Unexecuted instantiation: MinimumClearance.cpp:geos::index::strtree::TemplateSTRNodePair<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits, geos::precision::MinimumClearance::compute()::MinClearanceDistance>::getFirst() const |
48 | | |
49 | 0 | const Node &getSecond() const { |
50 | 0 | return *m_node2; |
51 | 0 | } Unexecuted instantiation: geos_ts_c.cpp:geos::index::strtree::TemplateSTRNodePair<void*, geos::index::strtree::EnvelopeTraits, GEOSSTRtree_nearest_generic_r::CustomItemDistance>::getSecond() const Unexecuted instantiation: geos_ts_c.cpp:geos::index::strtree::TemplateSTRNodePair<void*, geos::index::strtree::EnvelopeTraits, GEOSSTRtree_nearest_generic_r::GeometryDistance>::getSecond() const Unexecuted instantiation: geos::index::strtree::TemplateSTRNodePair<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits, geos::operation::distance::IndexedFacetDistance::FacetDistance>::getSecond() const Unexecuted instantiation: MinimumClearance.cpp:geos::index::strtree::TemplateSTRNodePair<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits, geos::precision::MinimumClearance::compute()::MinClearanceDistance>::getSecond() const |
52 | | |
53 | 0 | double distance(ItemDistance& id) { |
54 | 0 | if (isLeaves()) { |
55 | 0 | return id(getFirst().getItem(), getSecond().getItem()); |
56 | 0 | } else { |
57 | 0 | return BoundsTraits::distance(getFirst().getBounds(), getSecond().getBounds()); |
58 | 0 | } |
59 | 0 | } Unexecuted instantiation: geos_ts_c.cpp:geos::index::strtree::TemplateSTRNodePair<void*, geos::index::strtree::EnvelopeTraits, GEOSSTRtree_nearest_generic_r::CustomItemDistance>::distance(GEOSSTRtree_nearest_generic_r::CustomItemDistance&) Unexecuted instantiation: geos_ts_c.cpp:geos::index::strtree::TemplateSTRNodePair<void*, geos::index::strtree::EnvelopeTraits, GEOSSTRtree_nearest_generic_r::GeometryDistance>::distance(GEOSSTRtree_nearest_generic_r::GeometryDistance&) Unexecuted instantiation: geos::index::strtree::TemplateSTRNodePair<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits, geos::operation::distance::IndexedFacetDistance::FacetDistance>::distance(geos::operation::distance::IndexedFacetDistance::FacetDistance&) Unexecuted instantiation: MinimumClearance.cpp:geos::index::strtree::TemplateSTRNodePair<geos::operation::distance::FacetSequence const*, geos::index::strtree::EnvelopeTraits, geos::precision::MinimumClearance::compute()::MinClearanceDistance>::distance(geos::precision::MinimumClearance::compute()::MinClearanceDistance&) |
60 | | |
61 | 0 | double maximumDistance() { |
62 | 0 | return BoundsTraits::maxDistance(getFirst().getBounds(), getSecond().getBounds()); |
63 | 0 | } |
64 | | |
65 | | private: |
66 | | const Node* m_node1; |
67 | | const Node* m_node2; |
68 | | double m_distance; |
69 | | }; |
70 | | |
71 | | } |
72 | | } |
73 | | } |
74 | | |