# CBinaryHeapT< T > Class Template Reference

Binary Heap as C++ template. More...

`#include <binaryheap.hpp>`

## Public Member Functions
| CBinaryHeapT (uint max_items)
FORCEINLINE uint | Length () const
| Get the number of items stored in the priority queue.
FORCEINLINE bool | IsEmpty () const
| Test if the priority queue is empty.
FORCEINLINE bool | IsFull () const
| Test if the priority queue is full.
FORCEINLINE T * | Begin ()
| Get the smallest item in the binary tree.
FORCEINLINE T * | End ()
| Get the LAST item in the binary tree.
FORCEINLINE void | Include (T *new_item)
| Insert new item into the priority queue, maintaining heap order.
FORCEINLINE T * | Shift ()
| Remove and return the smallest (and also first) item from the priority queue.
FORCEINLINE void | Remove (uint index)
| Remove item at given index from the priority queue.
FORCEINLINE uint | FindIndex (const T &item) const
| Search for an item in the priority queue.
FORCEINLINE void | Clear ()
| Make the priority queue empty.
## Protected Member Functions
FORCEINLINE uint | HeapifyDown (uint gap, T *item)
| Get position for fixing a gap (downwards).
FORCEINLINE uint | HeapifyUp (uint gap, T *item)
| Get position for fixing a gap (upwards).
## Private Attributes
uint | items
| Number of items in the heap.
uint | capacity
| Maximum number of items the heap can hold.
T ** | data
| The pointer to the heap item pointers.

## Detailed Description

### template<class T>
class CBinaryHeapT< T >

Binary Heap as C++ template.

A carrier which keeps its items automatically holds the smallest item at the first position. The order of items is maintained by using a binary tree. The implementation is used for priority queue's.

Usage information:
  Item of the binary heap should support the 'lower-than' operator '<'. It is used for comparing items before moving them to their position.

  This binary heap allocates just the space for item pointers. The items are allocated elsewhere.

Implementation notes:
  Internally the first item is never used, because that simplifies the implementation.

  For further information about the Binary Heap algotithm, see http://www.policyalmanac.org/games/binaryHeaps.htm

Template Parameters:

  | T | Type of the items stored in the binary heap

Definition at line 51 of file binaryheap.hpp.

## Member Function Documentation

template<class T>

FORCEINLINE T* CBinaryHeapT< T >::Begin | ( |  | ) | `[inline]`

Get the smallest item in the binary tree.

Returns:
  The smallest item, or throw assert if empty.

Definition at line 175 of file binaryheap.hpp.

Referenced by CNodeList_HashTableT< Titem_, Thash_bits_open_, Thash_bits_closed_ >::GetBestOpenNode(), and CBinaryHeapT< Titem_ >::Shift().

template<class T>

FORCEINLINE void CBinaryHeapT< T >::Clear | ( |  | ) | `[inline]`

Make the priority queue empty.

All remaining items will remain untouched.

Definition at line 282 of file binaryheap.hpp.

template<class T>

FORCEINLINE T* CBinaryHeapT< T >::End | ( |  | ) | `[inline]`

Get the LAST item in the binary tree.

Note:
  The last item is not neccesary the biggest!

Returns:
  The last item

Definition at line 188 of file binaryheap.hpp.

Referenced by CBinaryHeapT< Titem_ >::Remove(), and CBinaryHeapT< Titem_ >::Shift().

template<class T>

FORCEINLINE uint CBinaryHeapT< T >::FindIndex | ( | const T & | item | ) | const`[inline]`

Search for an item in the priority queue.

Matching is done by comparing adress of the item.

Parameters:

  | item | The reference to the item

Returns:
  The index of the item or zero if not found

Definition at line 267 of file binaryheap.hpp.

Referenced by CNodeList_HashTableT< Titem_, Thash_bits_open_, Thash_bits_closed_ >::PopOpenNode().

template<class T>

FORCEINLINE uint CBinaryHeapT< T >::HeapifyDown | ( | uint | gap,
|  | T * | item |
| ) |  |  | `[inline, protected]`

Get position for fixing a gap (downwards).

The gap is moved downwards in the binary tree until it is in order again.

Parameters:

  | gap | The position of the gap
  | item | The proposed item for filling the gap

Returns:
  The (gap)position where the item fits

Definition at line 82 of file binaryheap.hpp.

Referenced by CBinaryHeapT< Titem_ >::Remove(), and CBinaryHeapT< Titem_ >::Shift().

template<class T>

FORCEINLINE uint CBinaryHeapT< T >::HeapifyUp | ( | uint | gap,
|  | T * | item |
| ) |  |  | `[inline, protected]`

Get position for fixing a gap (upwards).

The gap is moved upwards in the binary tree until the is in order again.

Parameters:

  | gap | The position of the gap
  | item | The proposed item for filling the gap

Returns:
  The (gap)position where the item fits

Definition at line 118 of file binaryheap.hpp.

Referenced by CBinaryHeapT< Titem_ >::Include(), and CBinaryHeapT< Titem_ >::Remove().

template<class T>

FORCEINLINE void CBinaryHeapT< T >::Include | ( | T * | new_item | ) | `[inline]`

Insert new item into the priority queue, maintaining heap order.

Parameters:

  | new_item | The pointer to the new item

Definition at line 198 of file binaryheap.hpp.

Referenced by CNodeList_HashTableT< Titem_, Thash_bits_open_, Thash_bits_closed_ >::InsertOpenNode().

template<class T>

FORCEINLINE bool CBinaryHeapT< T >::IsEmpty | ( |  | ) | const`[inline]`

Test if the priority queue is empty.

Returns:
  True if empty

Definition at line 161 of file binaryheap.hpp.

Referenced by CBinaryHeapT< Titem_ >::Begin(), CBinaryHeapT< Titem_ >::FindIndex(), CNodeList_HashTableT< Titem_, Thash_bits_open_, Thash_bits_closed_ >::GetBestOpenNode(), CNodeList_HashTableT< Titem_, Thash_bits_open_, Thash_bits_closed_ >::PopBestOpenNode(), CBinaryHeapT< Titem_ >::Remove(), and CBinaryHeapT< Titem_ >::Shift().

template<class T>

FORCEINLINE bool CBinaryHeapT< T >::IsFull | ( |  | ) | const`[inline]`

Test if the priority queue is full.

Returns:
  True if full.

Definition at line 168 of file binaryheap.hpp.

Referenced by CBinaryHeapT< Titem_ >::Include().

template<class T>

FORCEINLINE uint CBinaryHeapT< T >::Length | ( |  | ) | const`[inline]`

Get the number of items stored in the priority queue.

Returns:
  The number of items in the queue

Definition at line 154 of file binaryheap.hpp.

template<class T>

FORCEINLINE void CBinaryHeapT< T >::Remove | ( | uint | index | ) | `[inline]`

Remove item at given index from the priority queue.

Parameters:

  | index | The position of the item in the heap

Definition at line 239 of file binaryheap.hpp.

Referenced by CNodeList_HashTableT< Titem_, Thash_bits_open_, Thash_bits_closed_ >::PopOpenNode().

template<class T>

FORCEINLINE T* CBinaryHeapT< T >::Shift | ( |  | ) | `[inline]`

Remove and return the smallest (and also first) item from the priority queue.

Returns:
  The pointer to the removed item

Definition at line 217 of file binaryheap.hpp.

Referenced by CNodeList_HashTableT< Titem_, Thash_bits_open_, Thash_bits_closed_ >::PopBestOpenNode().

The documentation for this class was generated from the following file:

- src/misc/binaryheap.hpp