// Boost.Geometry (aka GGL, Generic Geometry Library) // Copyright (c) 2015, Oracle and/or its affiliates. // Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle // Distributed under 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_ENVELOPE_INITIALIZE_HPP #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_ENVELOPE_INITIALIZE_HPP #include #include #include #include #include namespace boost { namespace geometry { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace envelope { template struct initialize_loop { template static inline void apply(Box& box, CoordinateType min_value, CoordinateType max_value) { geometry::set(box, min_value); geometry::set(box, max_value); initialize_loop < Dimension + 1, DimensionCount >::apply(box, min_value, max_value); } }; template struct initialize_loop { template static inline void apply(Box&, CoordinateType, CoordinateType) { } }; template < typename Box, std::size_t Dimension = 0, std::size_t DimensionCount = dimension::value > struct initialize { typedef typename coordinate_type::type coordinate_type; static inline void apply(Box& box, coordinate_type min_value = boost::numeric::bounds::highest(), coordinate_type max_value = boost::numeric::bounds::lowest()) { initialize_loop < Dimension, DimensionCount >::apply(box, min_value, max_value); } }; }} // namespace detail::envelope #endif // DOXYGEN_NO_DETAIL }} // namespace boost::geometry #endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_ENVELOPE_INITIALIZE_HPP