changeset 15994:ea971832d679 draft

(svn r20682) -Codechange: Make BinaryHeap_Pop() a method.
author alberth <alberth@openttd.org>
date Sun, 29 Aug 2010 13:36:50 +0000
parents d847b51ceee3
children cf16caa884cb
files src/pathfinder/npf/aystar.cpp src/pathfinder/npf/queue.cpp src/pathfinder/npf/queue.h
diffstat 3 files changed, 11 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/src/pathfinder/npf/aystar.cpp
+++ b/src/pathfinder/npf/aystar.cpp
@@ -62,7 +62,7 @@
 static OpenListNode *AyStarMain_OpenList_Pop(AyStar *aystar)
 {
 	/* Return the item the Queue returns.. the best next OpenList item. */
-	OpenListNode *res = (OpenListNode*)aystar->OpenListQueue.pop(&aystar->OpenListQueue);
+	OpenListNode *res = (OpenListNode*)aystar->OpenListQueue.Pop();
 	if (res != NULL) {
 		Hash_Delete(&aystar->OpenListHash, res->path.node.tile, res->path.node.direction);
 	}
--- a/src/pathfinder/npf/queue.cpp
+++ b/src/pathfinder/npf/queue.cpp
@@ -188,20 +188,24 @@
 	return true;
 }
 
-static void *BinaryHeap_Pop(Queue *q)
+/**
+ * Pops the first element from the queue. What exactly is the first element,
+ * is defined by the exact type of queue.
+ */
+void *Queue::Pop()
 {
 	void *result;
 
 #ifdef QUEUE_DEBUG
-	printf("[BinaryHeap] Popping an element. There are %d elements left\n", q->size);
+	printf("[BinaryHeap] Popping an element. There are %d elements left\n", this->size);
 #endif
 
-	if (q->size == 0) return NULL;
+	if (this->size == 0) return NULL;
 
 	/* The best item is always on top, so give that as result */
-	result = BIN_HEAP_ARR(1).item;
+	result = THISBIN_HEAP_ARR(1).item;
 	/* And now we should get rid of this item... */
-	BinaryHeap_Delete(q, BIN_HEAP_ARR(1).item, BIN_HEAP_ARR(1).priority);
+	BinaryHeap_Delete(this, THISBIN_HEAP_ARR(1).item, THISBIN_HEAP_ARR(1).priority);
 
 	return result;
 }
@@ -209,7 +213,6 @@
 void init_BinaryHeap(Queue *q, uint max_size)
 {
 	assert(q != NULL);
-	q->pop = BinaryHeap_Pop;
 	q->del = BinaryHeap_Delete;
 	q->clear = BinaryHeap_Clear;
 	q->free = BinaryHeap_Free;
--- a/src/pathfinder/npf/queue.h
+++ b/src/pathfinder/npf/queue.h
@@ -19,7 +19,6 @@
 
 
 struct Queue;
-typedef void *Queue_PopProc(Queue *q);
 typedef bool Queue_DeleteProc(Queue *q, void *item, int priority);
 typedef void Queue_ClearProc(Queue *q, bool free_values);
 typedef void Queue_FreeProc(Queue *q, bool free_values);
@@ -32,11 +31,7 @@
 
 struct Queue {
 	bool Push(void *item, int priority);
-	/*
-	 * Pops the first element from the queue. What exactly is the first element,
-	 * is defined by the exact type of queue.
-	 */
-	Queue_PopProc *pop;
+	void *Pop();
 	/*
 	 * Deletes the item from the queue. priority should be specified if
 	 * known, which speeds up the deleting for some queue's. Should be -1