]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/boost/geometry/strategies/distance.hpp
import quincy beta 17.1.0
[ceph.git] / ceph / src / boost / boost / geometry / strategies / distance.hpp
CommitLineData
7c673cae
FG
1// Boost.Geometry (aka GGL, Generic Geometry Library)
2
3// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
4// Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
5// Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
6
20effc67
TL
7// This file was modified by Oracle on 2014-2020.
8// Modifications copyright (c) 2014-2020, Oracle and/or its affiliates.
7c673cae 9// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
20effc67 10// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
7c673cae
FG
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_STRATEGIES_DISTANCE_HPP
20#define BOOST_GEOMETRY_STRATEGIES_DISTANCE_HPP
21
22
7c673cae 23#include <boost/geometry/core/cs.hpp>
20effc67 24#include <boost/geometry/core/static_assert.hpp>
7c673cae
FG
25#include <boost/geometry/strategies/tags.hpp>
26
27
28namespace boost { namespace geometry
29{
30
31
32namespace strategy { namespace distance { namespace services
33{
34
35
36template <typename Strategy> struct tag {};
37
38template <typename Strategy, typename P1, typename P2>
39struct return_type
40{
20effc67
TL
41 BOOST_GEOMETRY_STATIC_ASSERT_FALSE(
42 "Not implemented for this Strategy.",
43 Strategy, P1, P2);
7c673cae
FG
44};
45
46
47template <typename Strategy> struct comparable_type
48{
20effc67
TL
49 BOOST_GEOMETRY_STATIC_ASSERT_FALSE(
50 "Not implemented for this Strategy.",
51 Strategy);
7c673cae
FG
52};
53
54template <typename Strategy> struct get_comparable
55{
20effc67
TL
56 BOOST_GEOMETRY_STATIC_ASSERT_FALSE(
57 "Not implemented for this Strategy.",
58 Strategy);
7c673cae
FG
59};
60
61template <typename Strategy, typename P1, typename P2>
20effc67
TL
62struct result_from_distance
63{
64 BOOST_GEOMETRY_STATIC_ASSERT_FALSE(
65 "Not implemented for this Strategy.",
66 Strategy, P1, P2);
67};
7c673cae
FG
68
69
70
71
72// Default strategy
73
74
75/*!
76 \brief Traits class binding a default strategy for distance
77 to one (or possibly two) coordinate system(s)
78 \ingroup distance
79 \tparam GeometryTag1 tag (point/segment/box) for which this strategy is the default
80 \tparam GeometryTag2 tag (point/segment/box) for which this strategy is the default
81 \tparam Point1 first point-type
82 \tparam Point2 second point-type
83 \tparam CsTag1 tag of coordinate system of first point type
84 \tparam CsTag2 tag of coordinate system of second point type
85*/
86template
87<
88 typename GeometryTag1,
89 typename GeometryTag2,
90 typename Point1,
91 typename Point2 = Point1,
92 typename CsTag1 = typename cs_tag<Point1>::type,
93 typename CsTag2 = typename cs_tag<Point2>::type,
94 typename UnderlyingStrategy = void
95>
96struct default_strategy
97{
20effc67
TL
98 BOOST_GEOMETRY_STATIC_ASSERT_FALSE(
99 "Not implemented for this Point type combination.",
100 Point1, Point2, CsTag1, CsTag2);
7c673cae
FG
101};
102
103
104}}} // namespace strategy::distance::services
105
106
107}} // namespace boost::geometry
108
109#endif // BOOST_GEOMETRY_STRATEGIES_DISTANCE_HPP