1
0
mirror of https://github.com/OpenTTD/OpenTTD.git synced 2025-08-21 21:49:10 +00:00

(svn r19242) -Codechange: Perfer pointer instead of reference (skidd13)

-Cleanup: merge PopHead() and RemoveHead() into Shift()
This commit is contained in:
yexo
2010-02-25 11:48:50 +00:00
parent 7537fb18bc
commit dd03cd54ee
2 changed files with 15 additions and 20 deletions

View File

@@ -116,10 +116,10 @@ public:
/** Find the smallest item in the priority queue.
* Return the smallest item, or throw assert if empty. */
FORCEINLINE T& GetHead()
FORCEINLINE T *Begin()
{
assert(!IsEmpty());
return *m_items[1];
return m_items[1];
}
FORCEINLINE T *End()
@@ -129,7 +129,7 @@ public:
/** Insert new item into the priority queue, maintaining heap order.
* @return false if the queue is full. */
FORCEINLINE void Push(T& new_item)
FORCEINLINE void Push(T *new_item)
{
if (IsFull()) {
m_max_size *= 2;
@@ -137,31 +137,27 @@ public:
}
/* make place for new item */
uint gap = HeapifyUp(++m_size, &new_item);
m_items[gap] = &new_item;
uint gap = HeapifyUp(++m_size, new_item);
m_items[gap] = new_item;
CheckConsistency();
}
/** Remove and return the smallest item from the priority queue. */
FORCEINLINE T& PopHead()
{
T& ret = GetHead();
RemoveHead();
return ret;
}
/** Remove the smallest item from the priority queue. */
FORCEINLINE void RemoveHead()
FORCEINLINE T *Shift()
{
assert(!IsEmpty());
T *first = Begin();
m_size--;
/* at index 1 we have a gap now */
T *last = End();
uint gap = HeapifyDown(1, last);
/* move last item to the proper place */
if (!IsEmpty()) m_items[gap] = last;
CheckConsistency();
return first;
}
/** Remove item specified by index */