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 // Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland. 7 8 // This file was modified by Oracle on 2014, 2018. 9 // Modifications copyright (c) 2014-2018, Oracle and/or its affiliates. 10 11 // Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle 12 // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle 13 14 // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library 15 // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. 16 17 // Use, modification and distribution is subject to the Boost Software License, 18 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 19 // http://www.boost.org/LICENSE_1_0.txt) 20 21 #ifndef BOOST_GEOMETRY_ALGORITHMS_DISPATCH_DISTANCE_HPP 22 #define BOOST_GEOMETRY_ALGORITHMS_DISPATCH_DISTANCE_HPP 23 24 25 #include <boost/geometry/core/reverse_dispatch.hpp> 26 #include <boost/geometry/core/tag.hpp> 27 #include <boost/geometry/core/tag_cast.hpp> 28 #include <boost/geometry/core/tags.hpp> 29 #include <boost/geometry/algorithms/detail/distance/default_strategies.hpp> 30 #include <boost/geometry/algorithms/not_implemented.hpp> 31 #include <boost/geometry/strategies/distance.hpp> 32 33 34 namespace boost { namespace geometry 35 { 36 37 38 #ifndef DOXYGEN_NO_DISPATCH 39 namespace dispatch 40 { 41 42 43 template 44 < 45 typename Geometry1, typename Geometry2, 46 typename Strategy = typename detail::distance::default_strategy 47 < 48 Geometry1, Geometry2 49 >::type, 50 typename Tag1 = typename tag_cast 51 < 52 typename tag<Geometry1>::type, 53 segment_tag, 54 box_tag, 55 linear_tag, 56 areal_tag 57 >::type, 58 typename Tag2 = typename tag_cast 59 < 60 typename tag<Geometry2>::type, 61 segment_tag, 62 box_tag, 63 linear_tag, 64 areal_tag 65 >::type, 66 typename StrategyTag = typename strategy::distance::services::tag 67 < 68 Strategy 69 >::type, 70 bool Reverse = reverse_dispatch<Geometry1, Geometry2>::type::value 71 > 72 struct distance: not_implemented<Tag1, Tag2> 73 {}; 74 75 76 77 } // namespace dispatch 78 #endif // DOXYGEN_NO_DISPATCH 79 80 81 }} // namespace boost::geometry 82 83 84 #endif // BOOST_GEOMETRY_ALGORITHMS_DISPATCH_DISTANCE_HPP 85