Mercurial > hg > vamp-build-and-test
view DEPENDENCIES/generic/include/boost/geometry/index/detail/algorithms/bounds.hpp @ 102:f46d142149f5
Whoops, finish that update
author | Chris Cannam |
---|---|
date | Mon, 07 Sep 2015 11:13:41 +0100 |
parents | c530137014c0 |
children |
line wrap: on
line source
// Boost.Geometry Index // // n-dimensional bounds // // Copyright (c) 2011-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_INDEX_DETAIL_ALGORITHMS_BOUNDS_HPP #define BOOST_GEOMETRY_INDEX_DETAIL_ALGORITHMS_BOUNDS_HPP #include <boost/geometry/index/detail/bounded_view.hpp> namespace boost { namespace geometry { namespace index { namespace detail { namespace dispatch { template <typename Geometry, typename Bounds, typename TagGeometry = typename geometry::tag<Geometry>::type, typename TagBounds = typename geometry::tag<Bounds>::type> struct bounds { static inline void apply(Geometry const& g, Bounds & b) { geometry::convert(g, b); } }; template <typename Geometry, typename Bounds> struct bounds<Geometry, Bounds, segment_tag, box_tag> { static inline void apply(Geometry const& g, Bounds & b) { index::detail::bounded_view<Geometry, Bounds> v(g); geometry::convert(v, b); } }; } // namespace dispatch template <typename Geometry, typename Bounds> inline void bounds(Geometry const& g, Bounds & b) { concept::check_concepts_and_equal_dimensions<Geometry const, Bounds>(); dispatch::bounds<Geometry, Bounds>::apply(g, b); } namespace dispatch { template <typename Geometry, typename TagGeometry = typename geometry::tag<Geometry>::type> struct return_ref_or_bounds { typedef Geometry const& result_type; static inline result_type apply(Geometry const& g) { return g; } }; template <typename Geometry> struct return_ref_or_bounds<Geometry, segment_tag> { typedef typename point_type<Geometry>::type point_type; typedef geometry::model::box<point_type> bounds_type; typedef index::detail::bounded_view<Geometry, bounds_type> result_type; static inline result_type apply(Geometry const& g) { return result_type(g); } }; } // namespace dispatch template <typename Geometry> inline typename dispatch::return_ref_or_bounds<Geometry>::result_type return_ref_or_bounds(Geometry const& g) { return dispatch::return_ref_or_bounds<Geometry>::apply(g); } }}}} // namespace boost::geometry::index::detail #endif // BOOST_GEOMETRY_INDEX_DETAIL_ALGORITHMS_BOUNDS_HPP