epoc32/include/tools/stlport/stl/_heap.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@4
     1
/*
williamr@4
     2
 *
williamr@4
     3
 * Copyright (c) 1994
williamr@4
     4
 * Hewlett-Packard Company
williamr@4
     5
 *
williamr@4
     6
 * Permission to use, copy, modify, distribute and sell this software
williamr@4
     7
 * and its documentation for any purpose is hereby granted without fee,
williamr@4
     8
 * provided that the above copyright notice appear in all copies and
williamr@4
     9
 * that both that copyright notice and this permission notice appear
williamr@4
    10
 * in supporting documentation.  Hewlett-Packard Company makes no
williamr@4
    11
 * representations about the suitability of this software for any
williamr@4
    12
 * purpose.  It is provided "as is" without express or implied warranty.
williamr@4
    13
 *
williamr@4
    14
 * Copyright (c) 1997
williamr@4
    15
 * Silicon Graphics Computer Systems, Inc.
williamr@4
    16
 *
williamr@4
    17
 * Permission to use, copy, modify, distribute and sell this software
williamr@4
    18
 * and its documentation for any purpose is hereby granted without fee,
williamr@4
    19
 * provided that the above copyright notice appear in all copies and
williamr@4
    20
 * that both that copyright notice and this permission notice appear
williamr@4
    21
 * in supporting documentation.  Silicon Graphics makes no
williamr@4
    22
 * representations about the suitability of this software for any
williamr@4
    23
 * purpose.  It is provided "as is" without express or implied warranty.
williamr@4
    24
 */
williamr@4
    25
williamr@4
    26
/* NOTE: This is an internal header file, included by other STL headers.
williamr@4
    27
 *   You should not attempt to use it directly.
williamr@4
    28
 */
williamr@4
    29
williamr@4
    30
#ifndef _STLP_INTERNAL_HEAP_H
williamr@4
    31
#define _STLP_INTERNAL_HEAP_H
williamr@4
    32
williamr@4
    33
_STLP_BEGIN_NAMESPACE
williamr@4
    34
williamr@4
    35
// Heap-manipulation functions: push_heap, pop_heap, make_heap, sort_heap.
williamr@4
    36
williamr@4
    37
template <class _RandomAccessIterator>
williamr@4
    38
void
williamr@4
    39
push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last);
williamr@4
    40
williamr@4
    41
williamr@4
    42
template <class _RandomAccessIterator, class _Compare>
williamr@4
    43
void
williamr@4
    44
push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
williamr@4
    45
          _Compare __comp);
williamr@4
    46
williamr@4
    47
template <class _RandomAccessIterator, class _Distance, class _Tp>
williamr@4
    48
void
williamr@4
    49
__adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
williamr@4
    50
              _Distance __len, _Tp __val);
williamr@4
    51
williamr@4
    52
template <class _RandomAccessIterator, class _Tp, class _Distance>
williamr@4
    53
inline void
williamr@4
    54
__pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
williamr@4
    55
           _RandomAccessIterator __result, _Tp __val, _Distance*)
williamr@4
    56
{
williamr@4
    57
  *__result = *__first;
williamr@4
    58
  __adjust_heap(__first, _Distance(0), _Distance(__last - __first), __val);
williamr@4
    59
}
williamr@4
    60
williamr@4
    61
template <class _RandomAccessIterator>
williamr@4
    62
void pop_heap(_RandomAccessIterator __first,
williamr@4
    63
        _RandomAccessIterator __last);
williamr@4
    64
williamr@4
    65
template <class _RandomAccessIterator, class _Distance,
williamr@4
    66
          class _Tp, class _Compare>
williamr@4
    67
void
williamr@4
    68
__adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
williamr@4
    69
              _Distance __len, _Tp __val, _Compare __comp);
williamr@4
    70
williamr@4
    71
template <class _RandomAccessIterator, class _Tp, class _Compare,
williamr@4
    72
          class _Distance>
williamr@4
    73
inline void
williamr@4
    74
__pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
williamr@4
    75
           _RandomAccessIterator __result, _Tp __val, _Compare __comp,
williamr@4
    76
           _Distance*)
williamr@4
    77
{
williamr@4
    78
  *__result = *__first;
williamr@4
    79
  __adjust_heap(__first, _Distance(0), _Distance(__last - __first),
williamr@4
    80
                __val, __comp);
williamr@4
    81
}
williamr@4
    82
williamr@4
    83
template <class _RandomAccessIterator, class _Compare>
williamr@4
    84
void
williamr@4
    85
pop_heap(_RandomAccessIterator __first,
williamr@4
    86
         _RandomAccessIterator __last, _Compare __comp);
williamr@4
    87
williamr@4
    88
template <class _RandomAccessIterator>
williamr@4
    89
void
williamr@4
    90
make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last);
williamr@4
    91
williamr@4
    92
template <class _RandomAccessIterator, class _Compare>
williamr@4
    93
void
williamr@4
    94
make_heap(_RandomAccessIterator __first,
williamr@4
    95
          _RandomAccessIterator __last, _Compare __comp);
williamr@4
    96
williamr@4
    97
template <class _RandomAccessIterator>
williamr@4
    98
_STLP_INLINE_LOOP
williamr@4
    99
void sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
williamr@4
   100
{
williamr@4
   101
  while (__last - __first > 1)
williamr@4
   102
    pop_heap(__first, __last--);
williamr@4
   103
}
williamr@4
   104
williamr@4
   105
template <class _RandomAccessIterator, class _Compare>
williamr@4
   106
_STLP_INLINE_LOOP
williamr@4
   107
void
williamr@4
   108
sort_heap(_RandomAccessIterator __first,
williamr@4
   109
          _RandomAccessIterator __last, _Compare __comp)
williamr@4
   110
{
williamr@4
   111
  while (__last - __first > 1)
williamr@4
   112
    pop_heap(__first, __last--, __comp);
williamr@4
   113
}
williamr@4
   114
williamr@4
   115
_STLP_END_NAMESPACE
williamr@4
   116
williamr@4
   117
# if !defined (_STLP_LINK_TIME_INSTANTIATION)
williamr@4
   118
#  include <stl/_heap.c>
williamr@4
   119
# endif
williamr@4
   120
williamr@4
   121
#endif /* _STLP_INTERNAL_HEAP_H */
williamr@4
   122
williamr@4
   123
// Local Variables:
williamr@4
   124
// mode:C++
williamr@4
   125
// End: