summaryrefslogtreecommitdiff
path: root/src/pathfinder
diff options
context:
space:
mode:
authoralberth <alberth@openttd.org>2010-08-29 13:36:50 +0000
committeralberth <alberth@openttd.org>2010-08-29 13:36:50 +0000
commit10b182482e20f56c4a73a98f4578b03d0ff2c2b9 (patch)
tree82de5b6f9017536c04d24452dd2a0fbb38ff7f32 /src/pathfinder
parent92801ac718a2bb735aac91c869239967a9cee7fc (diff)
downloadopenttd-10b182482e20f56c4a73a98f4578b03d0ff2c2b9.tar.xz
(svn r20682) -Codechange: Make BinaryHeap_Pop() a method.
Diffstat (limited to 'src/pathfinder')
-rw-r--r--src/pathfinder/npf/aystar.cpp2
-rw-r--r--src/pathfinder/npf/queue.cpp15
-rw-r--r--src/pathfinder/npf/queue.h7
3 files changed, 11 insertions, 13 deletions
diff --git a/src/pathfinder/npf/aystar.cpp b/src/pathfinder/npf/aystar.cpp
index 49ca4e1b6..1a651a740 100644
--- a/src/pathfinder/npf/aystar.cpp
+++ b/src/pathfinder/npf/aystar.cpp
@@ -62,7 +62,7 @@ static OpenListNode *AyStarMain_OpenList_IsInList(AyStar *aystar, const AyStarNo
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);
}
diff --git a/src/pathfinder/npf/queue.cpp b/src/pathfinder/npf/queue.cpp
index 3ddef3a9c..09885411b 100644
--- a/src/pathfinder/npf/queue.cpp
+++ b/src/pathfinder/npf/queue.cpp
@@ -188,20 +188,24 @@ static bool BinaryHeap_Delete(Queue *q, void *item, int priority)
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 @@ static void *BinaryHeap_Pop(Queue *q)
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;
diff --git a/src/pathfinder/npf/queue.h b/src/pathfinder/npf/queue.h
index 53d4ccad5..c65897dcf 100644
--- 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 BinaryHeapNode {
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