mirror of https://github.com/OpenTTD/OpenTTD.git
Codechange: replace uint with size_t in binary heap
This commit is contained in:
parent
8349203038
commit
6cea49c117
|
@ -50,8 +50,8 @@
|
|||
template <class T>
|
||||
class CBinaryHeapT {
|
||||
private:
|
||||
uint items; ///< Number of items in the heap
|
||||
uint capacity; ///< Maximum number of items the heap can hold
|
||||
size_t items; ///< Number of items in the heap
|
||||
size_t capacity; ///< Maximum number of items the heap can hold
|
||||
T **data; ///< The pointer to the heap item pointers
|
||||
|
||||
public:
|
||||
|
@ -59,7 +59,7 @@ public:
|
|||
* Create a binary heap.
|
||||
* @param max_items The limit of the heap
|
||||
*/
|
||||
explicit CBinaryHeapT(uint max_items)
|
||||
explicit CBinaryHeapT(size_t max_items)
|
||||
: items(0)
|
||||
, capacity(max_items)
|
||||
{
|
||||
|
@ -83,12 +83,12 @@ protected:
|
|||
* @param item The proposed item for filling the gap
|
||||
* @return The (gap)position where the item fits
|
||||
*/
|
||||
inline uint HeapifyDown(uint gap, T *item)
|
||||
inline size_t HeapifyDown(size_t gap, T *item)
|
||||
{
|
||||
assert(gap != 0);
|
||||
|
||||
/* The first child of the gap is at [parent * 2] */
|
||||
uint child = gap * 2;
|
||||
size_t child = gap * 2;
|
||||
|
||||
/* while children are valid */
|
||||
while (child <= this->items) {
|
||||
|
@ -119,11 +119,11 @@ protected:
|
|||
* @param item The proposed item for filling the gap
|
||||
* @return The (gap)position where the item fits
|
||||
*/
|
||||
inline uint HeapifyUp(uint gap, T *item)
|
||||
inline size_t HeapifyUp(size_t gap, T *item)
|
||||
{
|
||||
assert(gap != 0);
|
||||
|
||||
uint parent;
|
||||
size_t parent;
|
||||
|
||||
while (gap > 1) {
|
||||
/* compare [gap] with its parent */
|
||||
|
@ -142,8 +142,8 @@ protected:
|
|||
/** Verify the heap consistency */
|
||||
inline void CheckConsistency()
|
||||
{
|
||||
for (uint child = 2; child <= this->items; child++) {
|
||||
uint parent = child / 2;
|
||||
for (size_t child = 2; child <= this->items; child++) {
|
||||
size_t parent = child / 2;
|
||||
assert(!(*this->data[child] < *this->data[parent]));
|
||||
}
|
||||
}
|
||||
|
@ -155,7 +155,7 @@ public:
|
|||
*
|
||||
* @return The number of items in the queue
|
||||
*/
|
||||
inline uint Length() const
|
||||
inline size_t Length() const
|
||||
{
|
||||
return this->items;
|
||||
}
|
||||
|
@ -218,7 +218,7 @@ public:
|
|||
}
|
||||
|
||||
/* Make place for new item. A gap is now at the end of the tree. */
|
||||
uint gap = this->HeapifyUp(++items, new_item);
|
||||
size_t gap = this->HeapifyUp(++items, new_item);
|
||||
this->data[gap] = new_item;
|
||||
CHECK_CONSISTY();
|
||||
}
|
||||
|
@ -238,7 +238,7 @@ public:
|
|||
this->items--;
|
||||
/* at index 1 we have a gap now */
|
||||
T *last = this->End();
|
||||
uint gap = this->HeapifyDown(1, last);
|
||||
size_t gap = this->HeapifyDown(1, last);
|
||||
/* move last item to the proper place */
|
||||
if (!this->IsEmpty()) this->data[gap] = last;
|
||||
|
||||
|
@ -251,7 +251,7 @@ public:
|
|||
*
|
||||
* @param index The position of the item in the heap
|
||||
*/
|
||||
inline void Remove(uint index)
|
||||
inline void Remove(size_t index)
|
||||
{
|
||||
if (index < this->items) {
|
||||
assert(index != 0);
|
||||
|
@ -260,7 +260,7 @@ public:
|
|||
|
||||
T *last = this->End();
|
||||
/* Fix binary tree up and downwards */
|
||||
uint gap = this->HeapifyUp(index, last);
|
||||
size_t gap = this->HeapifyUp(index, last);
|
||||
gap = this->HeapifyDown(gap, last);
|
||||
/* move last item to the proper place */
|
||||
if (!this->IsEmpty()) this->data[gap] = last;
|
||||
|
@ -279,7 +279,7 @@ public:
|
|||
* @param item The reference to the item
|
||||
* @return The index of the item or zero if not found
|
||||
*/
|
||||
inline uint FindIndex(const T &item) const
|
||||
inline size_t FindIndex(const T &item) const
|
||||
{
|
||||
if (this->IsEmpty()) return 0;
|
||||
for (T **ppI = this->data + 1, **ppLast = ppI + this->items; ppI <= ppLast; ppI++) {
|
||||
|
|
|
@ -118,7 +118,7 @@ public:
|
|||
inline Titem_ &PopOpenNode(const Key &key)
|
||||
{
|
||||
Titem_ &item = m_open.Pop(key);
|
||||
uint idxPop = m_open_queue.FindIndex(item);
|
||||
size_t idxPop = m_open_queue.FindIndex(item);
|
||||
m_open_queue.Remove(idxPop);
|
||||
return item;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue