// Boost.Geometry // Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_INTERIOR_ITERATOR_HPP #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_INTERIOR_ITERATOR_HPP #include #include #include namespace boost { namespace geometry { #ifndef DOXYGEN_NO_DETAIL namespace detail { /*! \brief Structure defining the type of interior rings iterator \note If the Geometry is const, const iterator is defined. \tparam Geometry \tparam_geometry */ template struct interior_iterator { typedef typename boost::range_iterator < typename geometry::interior_type::type >::type type; }; template struct copy_const { typedef T type; }; template struct copy_const { typedef T const type; }; template struct interior_ring_iterator { typedef typename boost::range_iterator < typename copy_const < typename geometry::interior_type::type, typename boost::range_value < typename geometry::interior_type::type >::type >::type >::type type; }; } // namespace detail #endif // DOXYGEN_NO_DETAIL }} // namespace boost::geometry #endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_INTERIOR_ITERATOR_HPP