sl@0: // sl@0: //======================================================================= sl@0: // Copyright 1997, 1998, 1999, 2000 University of Notre Dame. sl@0: // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek sl@0: // sl@0: // Distributed under the Boost Software License, Version 1.0. (See sl@0: // accompanying file LICENSE_1_0.txt or copy at sl@0: // http://www.boost.org/LICENSE_1_0.txt) sl@0: //======================================================================= sl@0: // sl@0: #if __KCC sl@0: namespace std { sl@0: sl@0: template sl@0: bool __is_heap(RandomAccessIterator first, RandomAccessIterator last, sl@0: Distance*) sl@0: { sl@0: const Distance n = last - first; sl@0: sl@0: Distance parent = 0; sl@0: for (Distance child = 1; child < n; ++child) { sl@0: if (first[parent] < first[child]) sl@0: return false; sl@0: if ((child & 1) == 0) sl@0: ++parent; sl@0: } sl@0: return true; sl@0: } sl@0: sl@0: template sl@0: inline bool is_heap(RandomAccessIterator first, RandomAccessIterator last) sl@0: { sl@0: return __is_heap(first, last, distance_type(first)); sl@0: } sl@0: sl@0: sl@0: template sl@0: bool __is_heap(RandomAccessIterator first, RandomAccessIterator last, sl@0: StrictWeakOrdering comp, sl@0: Distance*) sl@0: { sl@0: const Distance n = last - first; sl@0: sl@0: Distance parent = 0; sl@0: for (Distance child = 1; child < n; ++child) { sl@0: if (comp(first[parent], first[child])) sl@0: return false; sl@0: if ((child & 1) == 0) sl@0: ++parent; sl@0: } sl@0: return true; sl@0: } sl@0: sl@0: template sl@0: inline bool is_heap(RandomAccessIterator first, RandomAccessIterator last, sl@0: StrictWeakOrdering comp) sl@0: { sl@0: return __is_heap(first, last, comp, distance_type(first)); sl@0: } sl@0: sl@0: } sl@0: #endif