123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- // Boost.Geometry (aka GGL, Generic Geometry Library)
- // Copyright (c) 2014, Oracle and/or its affiliates.
- // Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
- // Licensed under the Boost Software License version 1.0.
- // http://www.boost.org/users/license.html
- #ifndef BOOST_GEOMETRY_ITERATORS_DETAIL_POINT_ITERATOR_INNER_RANGE_TYPE_HPP
- #define BOOST_GEOMETRY_ITERATORS_DETAIL_POINT_ITERATOR_INNER_RANGE_TYPE_HPP
- #include <boost/range.hpp>
- #include <boost/type_traits/is_const.hpp>
- #include <boost/mpl/if.hpp>
- #include <boost/geometry/core/ring_type.hpp>
- #include <boost/geometry/core/tag.hpp>
- #include <boost/geometry/core/tags.hpp>
- namespace boost { namespace geometry
- {
- #ifndef DOXYGEN_NO_DETAIL
- namespace detail { namespace point_iterator
- {
- template
- <
- typename Geometry,
- typename Tag = typename tag<Geometry>::type
- >
- struct inner_range_type
- {
- typedef typename boost::mpl::if_c
- <
- !boost::is_const<Geometry>::type::value,
- typename boost::range_value<Geometry>::type,
- typename boost::range_value<Geometry>::type const
- >::type type;
- };
- template <typename Polygon>
- struct inner_range_type<Polygon, polygon_tag>
- {
- typedef typename boost::mpl::if_c
- <
- !boost::is_const<Polygon>::type::value,
- typename geometry::ring_type<Polygon>::type,
- typename geometry::ring_type<Polygon>::type const
- >::type type;
- };
- }} // namespace detail::point_iterator
- #endif // DOXYGEN_NO_DETAIL
- }} // namespace boost::geometry
- #endif // BOOST_GEOMETRY_ITERATORS_DETAIL_POINT_ITERATOR_INNER_RANGE_TYPE_HPP
|