Chris@16: /*============================================================================== Chris@16: Copyright (c) 2010-2011 Bryce Lelbach Chris@16: Chris@16: Distributed under the Boost Software License, Version 1.0. (See accompanying Chris@16: file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: ==============================================================================*/ Chris@16: Chris@16: #ifndef BOOST_DETAIL_SORTED_HPP Chris@16: #define BOOST_DETAIL_SORTED_HPP Chris@16: Chris@16: #include Chris@16: Chris@16: #include Chris@16: Chris@16: namespace boost { Chris@16: namespace detail { Chris@16: Chris@16: template Chris@16: inline Iterator is_sorted_until (Iterator first, Iterator last, Comp c) { Chris@16: if (first == last) Chris@16: return last; Chris@16: Chris@16: Iterator it = first; ++it; Chris@16: Chris@16: for (; it != last; first = it, ++it) Chris@16: if (c(*it, *first)) Chris@16: return it; Chris@16: Chris@16: return it; Chris@16: } Chris@16: Chris@16: template Chris@16: inline Iterator is_sorted_until (Iterator first, Iterator last) { Chris@16: typedef typename boost::detail::iterator_traits::value_type Chris@16: value_type; Chris@16: Chris@16: typedef std::less c; Chris@16: Chris@16: return ::boost::detail::is_sorted_until(first, last, c()); Chris@16: } Chris@16: Chris@16: template Chris@16: inline bool is_sorted (Iterator first, Iterator last, Comp c) { Chris@16: return ::boost::detail::is_sorted_until(first, last, c) == last; Chris@16: } Chris@16: Chris@16: template Chris@16: inline bool is_sorted (Iterator first, Iterator last) { Chris@16: return ::boost::detail::is_sorted_until(first, last) == last; Chris@16: } Chris@16: Chris@16: } // detail Chris@16: } // boost Chris@16: Chris@16: #endif // BOOST_DETAIL_SORTED_HPP Chris@16: