// Boost.Geometry Index // // n-dimensional Indexable validity check // // 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_IS_VALID_HPP #define BOOST_GEOMETRY_INDEX_DETAIL_ALGORITHMS_IS_VALID_HPP #include #include namespace boost { namespace geometry { namespace index { namespace detail { namespace dispatch { template ::value> struct is_valid_box { static inline bool apply(Box const& b) { return is_valid_box::apply(b) && ( get(b) <= get(b) ); } }; template struct is_valid_box { static inline bool apply(Box const& b) { return get(b) <= get(b); } }; template ::type> struct is_valid { BOOST_MPL_ASSERT_MSG( (false), NOT_IMPLEMENTED_FOR_THIS_INDEXABLE, (is_valid)); }; template struct is_valid { static inline bool apply(Indexable const&) { return true; } }; template struct is_valid { static inline bool apply(Indexable const& b) { return dispatch::is_valid_box::apply(b); } }; template struct is_valid { static inline bool apply(Indexable const&) { return true; } }; } // namespace dispatch template inline bool is_valid(Indexable const& b) { // CONSIDER: detection of NaNs // e.g. by comparison of b with copy of b return dispatch::is_valid::apply(b); } }}}} // namespace boost::geometry::index::detail #endif // BOOST_GEOMETRY_DETAIL_INDEX_ALGORITHMS_IS_VALID_HPP