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