Chris@102
|
1 // Boost.Geometry (aka GGL, Generic Geometry Library)
|
Chris@102
|
2
|
Chris@102
|
3 // Copyright (c) 2014 Oracle and/or its affiliates.
|
Chris@102
|
4
|
Chris@102
|
5 // Use, modification and distribution is subject to the Boost Software License,
|
Chris@102
|
6 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
Chris@102
|
7 // http://www.boost.org/LICENSE_1_0.txt)
|
Chris@102
|
8
|
Chris@102
|
9 // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
|
Chris@102
|
10
|
Chris@102
|
11 #ifndef BOOST_GEOMETRY_STRATEGY_AGNOSTIC_RELATE_HPP
|
Chris@102
|
12 #define BOOST_GEOMETRY_STRATEGY_AGNOSTIC_RELATE_HPP
|
Chris@102
|
13
|
Chris@102
|
14 #include <boost/geometry/algorithms/detail/relate/relate.hpp>
|
Chris@102
|
15
|
Chris@102
|
16
|
Chris@102
|
17 namespace boost { namespace geometry
|
Chris@102
|
18 {
|
Chris@102
|
19
|
Chris@102
|
20 namespace strategy { namespace relate
|
Chris@102
|
21 {
|
Chris@102
|
22
|
Chris@102
|
23 template <typename Geometry1, typename Geometry2, typename StaticMask>
|
Chris@102
|
24 struct relate
|
Chris@102
|
25 {
|
Chris@102
|
26 static inline bool apply(Geometry1 const& geometry1, Geometry2 const& geometry2)
|
Chris@102
|
27 {
|
Chris@102
|
28 return detail::relate::relate<StaticMask>(geometry1, geometry2);
|
Chris@102
|
29 }
|
Chris@102
|
30 };
|
Chris@102
|
31
|
Chris@102
|
32 } // namespace relate
|
Chris@102
|
33
|
Chris@102
|
34 namespace within
|
Chris@102
|
35 {
|
Chris@102
|
36
|
Chris@102
|
37 #ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
|
Chris@102
|
38
|
Chris@102
|
39 namespace services
|
Chris@102
|
40 {
|
Chris@102
|
41
|
Chris@102
|
42
|
Chris@102
|
43 template <typename Geometry1, typename Geometry2, typename AnyTag1, typename AnyTag2, typename AnyCS>
|
Chris@102
|
44 struct default_strategy<AnyTag1, AnyTag2, AnyTag1, AnyTag2, AnyCS, AnyCS, Geometry1, Geometry2>
|
Chris@102
|
45 {
|
Chris@102
|
46 typedef strategy::relate::relate
|
Chris@102
|
47 <
|
Chris@102
|
48 Geometry1,
|
Chris@102
|
49 Geometry2,
|
Chris@102
|
50 detail::relate::static_mask_within
|
Chris@102
|
51 > type;
|
Chris@102
|
52 };
|
Chris@102
|
53
|
Chris@102
|
54 template <typename Geometry1, typename Geometry2, typename AnyTag1, typename AnyTag2, typename AnyCS>
|
Chris@102
|
55 struct default_strategy<AnyTag1, AnyTag2, AnyTag1, areal_tag, AnyCS, AnyCS, Geometry1, Geometry2>
|
Chris@102
|
56 {
|
Chris@102
|
57 typedef strategy::relate::relate
|
Chris@102
|
58 <
|
Chris@102
|
59 Geometry1,
|
Chris@102
|
60 Geometry2,
|
Chris@102
|
61 detail::relate::static_mask_within
|
Chris@102
|
62 > type;
|
Chris@102
|
63 };
|
Chris@102
|
64
|
Chris@102
|
65
|
Chris@102
|
66 } // namespace services
|
Chris@102
|
67
|
Chris@102
|
68 #endif
|
Chris@102
|
69
|
Chris@102
|
70
|
Chris@102
|
71 }} // namespace strategy::within
|
Chris@102
|
72
|
Chris@102
|
73
|
Chris@102
|
74
|
Chris@102
|
75 #ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS
|
Chris@102
|
76 namespace strategy { namespace covered_by { namespace services
|
Chris@102
|
77 {
|
Chris@102
|
78
|
Chris@102
|
79
|
Chris@102
|
80 template <typename Geometry1, typename Geometry2, typename AnyTag1, typename AnyTag2, typename AnyCS>
|
Chris@102
|
81 struct default_strategy<AnyTag1, AnyTag2, AnyTag1, AnyTag2, AnyCS, AnyCS, Geometry1, Geometry2>
|
Chris@102
|
82 {
|
Chris@102
|
83 typedef strategy::relate::relate
|
Chris@102
|
84 <
|
Chris@102
|
85 Geometry1,
|
Chris@102
|
86 Geometry2,
|
Chris@102
|
87 detail::relate::static_mask_covered_by
|
Chris@102
|
88 > type;
|
Chris@102
|
89 };
|
Chris@102
|
90
|
Chris@102
|
91 template <typename Geometry1, typename Geometry2, typename AnyTag1, typename AnyTag2, typename AnyCS>
|
Chris@102
|
92 struct default_strategy<AnyTag1, AnyTag2, AnyTag1, areal_tag, AnyCS, AnyCS, Geometry1, Geometry2>
|
Chris@102
|
93 {
|
Chris@102
|
94 typedef strategy::relate::relate
|
Chris@102
|
95 <
|
Chris@102
|
96 Geometry1,
|
Chris@102
|
97 Geometry2,
|
Chris@102
|
98 detail::relate::static_mask_covered_by
|
Chris@102
|
99 > type;
|
Chris@102
|
100 };
|
Chris@102
|
101
|
Chris@102
|
102
|
Chris@102
|
103 }}} // namespace strategy::covered_by::services
|
Chris@102
|
104 #endif
|
Chris@102
|
105
|
Chris@102
|
106
|
Chris@102
|
107 }} // namespace boost::geometry
|
Chris@102
|
108
|
Chris@102
|
109
|
Chris@102
|
110 #endif // BOOST_GEOMETRY_STRATEGY_AGNOSTIC_RELATE_HPP
|