CBinaryHeapT< Titem_ > Class Template Reference

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

#include <binaryheap.hpp>

Public Types

typedef Titem_ * ItemPtr

Public Member Functions

 CBinaryHeapT (int max_items=102400)
FORCEINLINE int Size () const
 Return 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 Titem_ & GetHead ()
 Find the smallest item in the priority queue.
bool Push (Titem_ &new_item)
 Insert new item into the priority queue, maintaining heap order.
FORCEINLINE Titem_ & PopHead ()
 Remove and return the smallest item from the priority queue.
void RemoveHead ()
 Remove the smallest item from the priority queue.
void RemoveByIdx (int idx)
 Remove item specified by index.
int FindLinear (const Titem_ &item) const
 return index of the item that matches (using &item1 == &item2) the given item.
void Clear ()
 Make the priority queue empty.
void CheckConsistency ()
 verifies the heap consistency (added during first YAPF debug phase)

Private Attributes

int m_size
 Number of items in the heap.
int m_max_size
 Maximum number of items the heap can hold.
ItemPtr * m_items
 The heap item pointers.

Detailed Description

template<class Titem_>
class CBinaryHeapT< Titem_ >

Binary Heap as C++ template.

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

Implementation specific notes:

1) It allocates space for item pointers (array). Items are allocated elsewhere.

2) ItemPtr [0] is never used. Total array size is max_items + 1, because we use indices 1..max_items instead of zero based C indexing.

3) Item of the binary heap should support these public members:

Definition at line 34 of file binaryheap.hpp.


Member Function Documentation

template<class Titem_ >
void CBinaryHeapT< Titem_ >::Clear (  )  [inline]

Make the priority queue empty.

All remaining items will remain untouched.

Definition at line 92 of file binaryheap.hpp.

References CBinaryHeapT< Titem_ >::m_size.

template<class Titem_ >
int CBinaryHeapT< Titem_ >::FindLinear ( const Titem_ &  item  )  const [inline]

return index of the item that matches (using &item1 == &item2) the given item.

Definition at line 203 of file binaryheap.hpp.

References CBinaryHeapT< Titem_ >::IsEmpty(), CBinaryHeapT< Titem_ >::m_items, and CBinaryHeapT< Titem_ >::m_size.

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

template<class Titem_ >
FORCEINLINE Titem_& CBinaryHeapT< Titem_ >::GetHead (  )  [inline]

Find the smallest item in the priority queue.

Return the smallest item, or throw assert if empty.

Definition at line 72 of file binaryheap.hpp.

References CBinaryHeapT< Titem_ >::IsEmpty(), and CBinaryHeapT< Titem_ >::m_items.

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

template<class Titem_ >
FORCEINLINE bool CBinaryHeapT< Titem_ >::IsEmpty (  )  const [inline]
template<class Titem_ >
FORCEINLINE bool CBinaryHeapT< Titem_ >::IsFull (  )  const [inline]
template<class Titem_ >
FORCEINLINE Titem_& CBinaryHeapT< Titem_ >::PopHead (  )  [inline]

Remove and return the smallest item from the priority queue.

Definition at line 79 of file binaryheap.hpp.

References CBinaryHeapT< Titem_ >::GetHead(), and CBinaryHeapT< Titem_ >::RemoveHead().

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

template<class Titem_ >
FORCEINLINE bool CBinaryHeapT< Titem_ >::Push ( Titem_ &  new_item  )  [inline]

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

Returns:
false if the queue is full.

Definition at line 100 of file binaryheap.hpp.

References CBinaryHeapT< Titem_ >::CheckConsistency(), CBinaryHeapT< Titem_ >::IsFull(), CBinaryHeapT< Titem_ >::m_items, and CBinaryHeapT< Titem_ >::m_size.

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

template<class Titem_ >
FORCEINLINE void CBinaryHeapT< Titem_ >::RemoveHead (  )  [inline]
template<class Titem_ >
FORCEINLINE int CBinaryHeapT< Titem_ >::Size (  )  const [inline]

Return the number of items stored in the priority queue.

Returns:
number of items in the queue

Definition at line 60 of file binaryheap.hpp.

References CBinaryHeapT< Titem_ >::m_size.


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

Generated on Fri Apr 30 21:56:05 2010 for OpenTTD by  doxygen 1.6.1