interface.hpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. // Boost.Geometry (aka GGL, Generic Geometry Library)
  2. // Copyright (c) 2015, Oracle and/or its affiliates.
  3. // Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
  4. // Licensed under the Boost Software License version 1.0.
  5. // http://www.boost.org/users/license.html
  6. #ifndef BOOST_GEOMETRY_VIEWS_DETAIL_BOUNDARY_VIEW_INTERFACE_HPP
  7. #define BOOST_GEOMETRY_VIEWS_DETAIL_BOUNDARY_VIEW_INTERFACE_HPP
  8. #include <boost/geometry/core/tag.hpp>
  9. #include <boost/geometry/algorithms/not_implemented.hpp>
  10. namespace boost { namespace geometry
  11. {
  12. #ifndef DOXYGEN_NO_DISPATCH
  13. namespace detail_dispatch
  14. {
  15. template <typename Geometry, typename Tag = typename tag<Geometry>::type>
  16. struct boundary_view
  17. : not_implemented<Tag>
  18. {};
  19. } // namespace detail_dispatch
  20. #endif // DOXYGEN_NO_DISPATCH
  21. #ifndef DOXYGEN_NO_DETAIL
  22. namespace detail
  23. {
  24. template <typename Geometry>
  25. struct boundary_view
  26. : detail_dispatch::boundary_view<Geometry>
  27. {
  28. explicit boundary_view(Geometry& geometry)
  29. : detail_dispatch::boundary_view<Geometry>(geometry)
  30. {}
  31. };
  32. } // namespace detail
  33. #endif // DOXYGEN_NO_DETAIL
  34. #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS
  35. namespace traits
  36. {
  37. template <typename Geometry>
  38. struct tag< geometry::detail::boundary_view<Geometry> >
  39. {
  40. typedef typename detail_dispatch::boundary_view
  41. <
  42. Geometry
  43. >::tag_type type;
  44. };
  45. } // namespace traits
  46. #endif // DOXYGEN_NO_TRAITS_SPECIALIZATIONS
  47. }} // namespace boost::geometry
  48. #endif // BOOST_GEOMETRY_VIEWS_DETAIL_BOUNDARY_VIEW_INTERFACE_HPP