summaryrefslogtreecommitdiff
path: root/src/pathfinder/npf
diff options
context:
space:
mode:
authoralberth <alberth@openttd.org>2010-08-29 13:38:27 +0000
committeralberth <alberth@openttd.org>2010-08-29 13:38:27 +0000
commitb06cedc905fbc1c8917f45cadfd78b246e4924f0 (patch)
treef6873a69a568e7a26a3ac5506e1b55fc46d729c9 /src/pathfinder/npf
parent3f0cd8c9f0e3b1da2383f09fac1e4a18e782968e (diff)
downloadopenttd-b06cedc905fbc1c8917f45cadfd78b246e4924f0.tar.xz
(svn r20684) -Codechange: Make BinaryHeap_Free() a method.
Diffstat (limited to 'src/pathfinder/npf')
-rw-r--r--src/pathfinder/npf/aystar.cpp2
-rw-r--r--src/pathfinder/npf/queue.cpp18
-rw-r--r--src/pathfinder/npf/queue.h7
3 files changed, 13 insertions, 14 deletions
diff --git a/src/pathfinder/npf/aystar.cpp b/src/pathfinder/npf/aystar.cpp
index 4b0485bc0..cfca30a75 100644
--- a/src/pathfinder/npf/aystar.cpp
+++ b/src/pathfinder/npf/aystar.cpp
@@ -203,7 +203,7 @@ static int AyStarMain_Loop(AyStar *aystar)
*/
static void AyStarMain_Free(AyStar *aystar)
{
- aystar->OpenListQueue.free(&aystar->OpenListQueue, false);
+ aystar->OpenListQueue.Free(false);
/* 2nd argument above is false, below is true, to free the values only
* once */
delete_Hash(&aystar->OpenListHash, true);
diff --git a/src/pathfinder/npf/queue.cpp b/src/pathfinder/npf/queue.cpp
index a9fdadcb6..8fa2fa41b 100644
--- a/src/pathfinder/npf/queue.cpp
+++ b/src/pathfinder/npf/queue.cpp
@@ -62,16 +62,21 @@ static void BinaryHeap_Clear(Queue *q, bool free_values)
q->blocks = 1;
}
-static void BinaryHeap_Free(Queue *q, bool free_values)
+/**
+ * Frees the queue, by reclaiming all memory allocated by it. After
+ * this it is no longer usable. If free_items is true, any remaining
+ * items are free()'d too.
+ */
+void Queue::Free(bool free_values)
{
uint i;
- q->clear(q, free_values);
- for (i = 0; i < q->blocks; i++) {
- if (q->elements[i] == NULL) break;
- free(q->elements[i]);
+ this->clear(this, free_values);
+ for (i = 0; i < this->blocks; i++) {
+ if (this->elements[i] == NULL) break;
+ free(this->elements[i]);
}
- free(q->elements);
+ free(this->elements);
}
/**
@@ -219,7 +224,6 @@ void init_BinaryHeap(Queue *q, uint max_size)
{
assert(q != NULL);
q->clear = BinaryHeap_Clear;
- q->free = BinaryHeap_Free;
q->max_size = max_size;
q->size = 0;
/* We malloc memory in block of BINARY_HEAP_BLOCKSIZE
diff --git a/src/pathfinder/npf/queue.h b/src/pathfinder/npf/queue.h
index 766ecbf38..1d6831157 100644
--- a/src/pathfinder/npf/queue.h
+++ b/src/pathfinder/npf/queue.h
@@ -20,7 +20,6 @@
struct Queue;
typedef void Queue_ClearProc(Queue *q, bool free_values);
-typedef void Queue_FreeProc(Queue *q, bool free_values);
struct BinaryHeapNode {
void *item;
@@ -38,11 +37,7 @@ struct Queue {
* in this way are free()'d.
*/
Queue_ClearProc *clear;
- /* Frees the queue, by reclaiming all memory allocated by it. After
- * this it is no longer usable. If free_items is true, any remaining
- * items are free()'d too.
- */
- Queue_FreeProc *free;
+ void Free(bool free_values);
uint max_size;
uint size;