]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/boost/geometry/algorithms/detail/overlaps/interface.hpp
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / boost / boost / geometry / algorithms / detail / overlaps / interface.hpp
CommitLineData
b32b8144
FG
1// Boost.Geometry (aka GGL, Generic Geometry Library)
2
3// Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
4// Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
5// Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
6
7// This file was modified by Oracle on 2014, 2015, 2017.
8// Modifications copyright (c) 2014-2017 Oracle and/or its affiliates.
9
10// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
11
12// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
13// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
14
15// Use, modification and distribution is subject to the Boost Software License,
16// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
17// http://www.boost.org/LICENSE_1_0.txt)
18
19#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAPS_INTERFACE_HPP
20#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAPS_INTERFACE_HPP
21
22
23#include <cstddef>
24
25#include <boost/geometry/algorithms/not_implemented.hpp>
26
27#include <boost/geometry/geometries/concepts/check.hpp>
28
29#include <boost/geometry/algorithms/detail/relate/relate_impl.hpp>
30
31#include <boost/geometry/strategies/relate.hpp>
32
33
34namespace boost { namespace geometry
35{
36
37#ifndef DOXYGEN_NO_DISPATCH
38namespace dispatch
39{
40
41
42template
43<
44 typename Geometry1,
45 typename Geometry2,
46 typename Tag1 = typename tag<Geometry1>::type,
47 typename Tag2 = typename tag<Geometry2>::type
48>
49struct overlaps
50 : detail::relate::relate_impl
51 <
52 detail::de9im::static_mask_overlaps_type,
53 Geometry1,
54 Geometry2
55 >
56{};
57
58
59} // namespace dispatch
60#endif // DOXYGEN_NO_DISPATCH
61
62
63/*!
64\brief \brief_check2{overlap}
65\ingroup overlaps
66\tparam Geometry1 \tparam_geometry
67\tparam Geometry2 \tparam_geometry
68\tparam Strategy \tparam_strategy{Overlaps}
69\param geometry1 \param_geometry
70\param geometry2 \param_geometry
71\param strategy \param_strategy{overlaps}
72\return \return_check2{overlap}
73
74\qbk{distinguish,with strategy}
75\qbk{[include reference/algorithms/overlaps.qbk]}
76*/
77template <typename Geometry1, typename Geometry2, typename Strategy>
78inline bool overlaps(Geometry1 const& geometry1,
79 Geometry2 const& geometry2,
80 Strategy const& strategy)
81{
82 concepts::check<Geometry1 const>();
83 concepts::check<Geometry2 const>();
84
85 return dispatch::overlaps
86 <
87 Geometry1,
88 Geometry2
89 >::apply(geometry1, geometry2, strategy);
90}
91
92/*!
93\brief \brief_check2{overlap}
94\ingroup overlaps
95\tparam Geometry1 \tparam_geometry
96\tparam Geometry2 \tparam_geometry
97\param geometry1 \param_geometry
98\param geometry2 \param_geometry
99\return \return_check2{overlap}
100
101\qbk{[include reference/algorithms/overlaps.qbk]}
f67539c2
TL
102\qbk{
103[heading Examples]
104[overlaps]
105[overlaps_output]
106}
b32b8144
FG
107*/
108template <typename Geometry1, typename Geometry2>
109inline bool overlaps(Geometry1 const& geometry1, Geometry2 const& geometry2)
110{
111 concepts::check<Geometry1 const>();
112 concepts::check<Geometry2 const>();
113
114 typedef typename strategy::relate::services::default_strategy
115 <
116 Geometry1,
117 Geometry2
118 >::type strategy_type;
119
120 return dispatch::overlaps
121 <
122 Geometry1,
123 Geometry2
124 >::apply(geometry1, geometry2, strategy_type());
125}
126
127}} // namespace boost::geometry
128
129#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAPS_INTERFACE_HPP