diff options
author | alberth <alberth@openttd.org> | 2010-08-29 13:36:50 +0000 |
---|---|---|
committer | alberth <alberth@openttd.org> | 2010-08-29 13:36:50 +0000 |
commit | 10b182482e20f56c4a73a98f4578b03d0ff2c2b9 (patch) | |
tree | 82de5b6f9017536c04d24452dd2a0fbb38ff7f32 /src/pathfinder/npf | |
parent | 92801ac718a2bb735aac91c869239967a9cee7fc (diff) | |
download | openttd-10b182482e20f56c4a73a98f4578b03d0ff2c2b9.tar.xz |
(svn r20682) -Codechange: Make BinaryHeap_Pop() a method.
Diffstat (limited to 'src/pathfinder/npf')
-rw-r--r-- | src/pathfinder/npf/aystar.cpp | 2 | ||||
-rw-r--r-- | src/pathfinder/npf/queue.cpp | 15 | ||||
-rw-r--r-- | src/pathfinder/npf/queue.h | 7 |
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 |