1 // Boost.Geometry (aka GGL, Generic Geometry Library)
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.
7 // This file was modified by Oracle on 2014.
8 // Modifications copyright (c) 2014, Oracle and/or its affiliates.
10 // Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
12 // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
13 // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
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)
19 #ifndef BOOST_GEOMETRY_STRATEGIES_DISTANCE_HPP
20 #define BOOST_GEOMETRY_STRATEGIES_DISTANCE_HPP
23 #include <boost/mpl/assert.hpp>
25 #include <boost/geometry/core/cs.hpp>
26 #include <boost/geometry/strategies/tags.hpp>
29 namespace boost { namespace geometry
33 namespace strategy { namespace distance { namespace services
37 template <typename Strategy> struct tag {};
39 template <typename Strategy, typename P1, typename P2>
44 false, NOT_IMPLEMENTED_FOR_THIS_STRATEGY, (types<Strategy, P1, P2>)
49 template <typename Strategy> struct comparable_type
53 false, NOT_IMPLEMENTED_FOR_THIS_STRATEGY, (types<Strategy>)
57 template <typename Strategy> struct get_comparable
61 false, NOT_IMPLEMENTED_FOR_THIS_STRATEGY, (types<Strategy>)
65 template <typename Strategy, typename P1, typename P2>
66 struct result_from_distance {};
75 \brief Traits class binding a default strategy for distance
76 to one (or possibly two) coordinate system(s)
78 \tparam GeometryTag1 tag (point/segment/box) for which this strategy is the default
79 \tparam GeometryTag2 tag (point/segment/box) for which this strategy is the default
80 \tparam Point1 first point-type
81 \tparam Point2 second point-type
82 \tparam CsTag1 tag of coordinate system of first point type
83 \tparam CsTag2 tag of coordinate system of second point type
87 typename GeometryTag1,
88 typename GeometryTag2,
90 typename Point2 = Point1,
91 typename CsTag1 = typename cs_tag<Point1>::type,
92 typename CsTag2 = typename cs_tag<Point2>::type,
93 typename UnderlyingStrategy = void
95 struct default_strategy
99 false, NOT_IMPLEMENTED_FOR_THIS_POINT_TYPE_COMBINATION
100 , (types<Point1, Point2, CsTag1, CsTag2>)
105 }}} // namespace strategy::distance::services
108 }} // namespace boost::geometry
110 #endif // BOOST_GEOMETRY_STRATEGIES_DISTANCE_HPP