Skip to content

Commit 5c878cf

Browse files
authored
Merge pull request #700 from vissarion/fix_default_strategies_distance
Add missing cases for default strategies in distance algorithm
2 parents d3b96b1 + 9c1cc9a commit 5c878cf

File tree

1 file changed

+35
-15
lines changed

1 file changed

+35
-15
lines changed

include/boost/geometry/algorithms/detail/distance/default_strategies.hpp

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55
// Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
66
// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland.
77

8-
// This file was modified by Oracle on 2014.
9-
// Modifications copyright (c) 2014, Oracle and/or its affiliates.
8+
// This file was modified by Oracle on 2014, 2020.
9+
// Modifications copyright (c) 2014-2020 Oracle and/or its affiliates.
1010

11+
// Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle
1112
// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
1213

1314
// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
@@ -110,26 +111,45 @@ struct default_strategy<Box1, Box2, box_tag, box_tag, false>
110111
>
111112
{};
112113

114+
template <typename PolygonalOrLinear, typename Box>
115+
struct default_strategy_polygonal_or_linear
116+
: strategy::distance::services::default_strategy
117+
<
118+
segment_tag, box_tag,
119+
typename point_type<PolygonalOrLinear>::type,
120+
typename point_type<Box>::type
121+
>
122+
{};
123+
113124
template <typename Linear, typename Box>
114125
struct default_strategy<Linear, Box, segment_tag, box_tag, false>
115-
: strategy::distance::services::default_strategy
116-
<
117-
segment_tag, box_tag,
118-
typename point_type<Linear>::type,
119-
typename point_type<Box>::type
120-
>
126+
: default_strategy_polygonal_or_linear<Linear, Box>
121127
{};
122128

123129
template <typename Linear, typename Box>
124-
struct default_strategy<Linear, Box, linear_tag, box_tag, false>
125-
: strategy::distance::services::default_strategy
126-
<
127-
segment_tag, box_tag,
128-
typename point_type<Linear>::type,
129-
typename point_type<Box>::type
130-
>
130+
struct default_strategy<Linear, Box, linestring_tag, box_tag, false>
131+
: default_strategy_polygonal_or_linear<Linear, Box>
132+
{};
133+
134+
template <typename Linear, typename Box>
135+
struct default_strategy<Linear, Box, multi_linestring_tag, box_tag, false>
136+
: default_strategy_polygonal_or_linear<Linear, Box>
131137
{};
132138

139+
template <typename Polygonal, typename Box>
140+
struct default_strategy<Polygonal, Box, polygon_tag, box_tag, false>
141+
: default_strategy_polygonal_or_linear<Polygonal, Box>
142+
{};
143+
144+
template <typename Polygonal, typename Box>
145+
struct default_strategy<Polygonal, Box, ring_tag, box_tag, false>
146+
: default_strategy_polygonal_or_linear<Polygonal, Box>
147+
{};
148+
149+
template <typename Polygonal, typename Box>
150+
struct default_strategy<Polygonal, Box, multi_polygon_tag, box_tag, false>
151+
: default_strategy_polygonal_or_linear<Polygonal, Box>
152+
{};
133153

134154

135155
// Helper metafunction for default point-segment strategy retrieval

0 commit comments

Comments
 (0)