distance.hpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // Boost.Geometry (aka GGL, Generic Geometry Library)
  2. // Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
  3. // Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
  4. // Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
  5. // Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland.
  6. // This file was modified by Oracle on 2014, 2018.
  7. // Modifications copyright (c) 2014-2018, Oracle and/or its affiliates.
  8. // Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
  9. // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
  10. // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
  11. // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
  12. // Use, modification and distribution is subject to the Boost Software License,
  13. // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  14. // http://www.boost.org/LICENSE_1_0.txt)
  15. #ifndef BOOST_GEOMETRY_ALGORITHMS_DISPATCH_DISTANCE_HPP
  16. #define BOOST_GEOMETRY_ALGORITHMS_DISPATCH_DISTANCE_HPP
  17. #include <boost/geometry/core/reverse_dispatch.hpp>
  18. #include <boost/geometry/core/tag.hpp>
  19. #include <boost/geometry/core/tag_cast.hpp>
  20. #include <boost/geometry/core/tags.hpp>
  21. #include <boost/geometry/algorithms/detail/distance/default_strategies.hpp>
  22. #include <boost/geometry/algorithms/not_implemented.hpp>
  23. #include <boost/geometry/strategies/distance.hpp>
  24. namespace boost { namespace geometry
  25. {
  26. #ifndef DOXYGEN_NO_DISPATCH
  27. namespace dispatch
  28. {
  29. template
  30. <
  31. typename Geometry1, typename Geometry2,
  32. typename Strategy = typename detail::distance::default_strategy
  33. <
  34. Geometry1, Geometry2
  35. >::type,
  36. typename Tag1 = typename tag_cast
  37. <
  38. typename tag<Geometry1>::type,
  39. segment_tag,
  40. box_tag,
  41. linear_tag,
  42. areal_tag
  43. >::type,
  44. typename Tag2 = typename tag_cast
  45. <
  46. typename tag<Geometry2>::type,
  47. segment_tag,
  48. box_tag,
  49. linear_tag,
  50. areal_tag
  51. >::type,
  52. typename StrategyTag = typename strategy::distance::services::tag
  53. <
  54. Strategy
  55. >::type,
  56. bool Reverse = reverse_dispatch<Geometry1, Geometry2>::type::value
  57. >
  58. struct distance: not_implemented<Tag1, Tag2>
  59. {};
  60. } // namespace dispatch
  61. #endif // DOXYGEN_NO_DISPATCH
  62. }} // namespace boost::geometry
  63. #endif // BOOST_GEOMETRY_ALGORITHMS_DISPATCH_DISTANCE_HPP