// Boost.Geometry (aka GGL, Generic Geometry Library) // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. // Copyright (c) 2008-2012 Bruno Lalande, Paris, France. // Copyright (c) 2009-2012 Mateusz Loskot, London, UK. // This file was modified by Oracle on 2020. // Modifications copyright (c) 2020 Oracle and/or its affiliates. // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. // 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_AS_RANGE_HPP #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_AS_RANGE_HPP #include #include #include namespace boost { namespace geometry { #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template struct as_range { static inline Range& get(Geometry& input) { return input; } }; template struct as_range { static inline Range& get(Geometry& input) { return exterior_ring(input); } }; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH // Will probably be replaced by the more generic "view_as", therefore in detail namespace detail { /*! \brief Function getting either the range (ring, linestring) itself or the outer ring (polygon) \details Utility to handle polygon's outer ring as a range \ingroup utility */ template inline Range& as_range(Geometry& input) { return dispatch::as_range < typename tag::type, Geometry, Range >::get(input); } /*! \brief Function getting either the range (ring, linestring) itself or the outer ring (polygon), const version \details Utility to handle polygon's outer ring as a range \ingroup utility */ template inline Range const& as_range(Geometry const& input) { return dispatch::as_range < typename tag::type, Geometry const, Range const >::get(input); } } }} // namespace boost::geometry #endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_AS_RANGE_HPP