summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralberth <alberth@openttd.org>2010-08-29 13:42:38 +0000
committeralberth <alberth@openttd.org>2010-08-29 13:42:38 +0000
commitbc6a5a5e645ac44415e5c94bb12fa24cfa0724cd (patch)
tree7465e7ffd19b99e576643417400a0c1876b7a81c
parent2c962548e52e6334db0c2457eedb40710b23bbad (diff)
downloadopenttd-bc6a5a5e645ac44415e5c94bb12fa24cfa0724cd.tar.xz
(svn r20686) -Codechange: Make init_BinaryHeap() a method.
-rw-r--r--src/pathfinder/npf/aystar.cpp2
-rw-r--r--src/pathfinder/npf/queue.cpp17
-rw-r--r--src/pathfinder/npf/queue.h20
3 files changed, 18 insertions, 21 deletions
diff --git a/src/pathfinder/npf/aystar.cpp b/src/pathfinder/npf/aystar.cpp
index 8e02476a4..f2e05ec5b 100644
--- a/src/pathfinder/npf/aystar.cpp
+++ b/src/pathfinder/npf/aystar.cpp
@@ -296,7 +296,7 @@ void init_AyStar(AyStar *aystar, Hash_HashProc hash, uint num_buckets)
* BinaryHeap allocates a block of 1024 nodes
* When that one gets full it reserves another one, till this number
* That is why it can stay this high */
- init_BinaryHeap(&aystar->OpenListQueue, 102400);
+ aystar->OpenListQueue.Init(102400);
aystar->addstart = AyStarMain_AddStartNode;
aystar->main = AyStarMain_Main;
diff --git a/src/pathfinder/npf/queue.cpp b/src/pathfinder/npf/queue.cpp
index ea90bb5a5..188036c51 100644
--- a/src/pathfinder/npf/queue.cpp
+++ b/src/pathfinder/npf/queue.cpp
@@ -225,16 +225,19 @@ void *Queue::Pop()
return result;
}
-void init_BinaryHeap(Queue *q, uint max_size)
+/**
+ * Initializes a binary heap and allocates internal memory for maximum of
+ * max_size elements
+ */
+void Queue::Init(uint max_size)
{
- assert(q != NULL);
- q->max_size = max_size;
- q->size = 0;
+ this->max_size = max_size;
+ this->size = 0;
/* We malloc memory in block of BINARY_HEAP_BLOCKSIZE
* It autosizes when it runs out of memory */
- q->elements = CallocT<BinaryHeapNode*>((max_size - 1) / BINARY_HEAP_BLOCKSIZE + 1);
- q->elements[0] = MallocT<BinaryHeapNode>(BINARY_HEAP_BLOCKSIZE);
- q->blocks = 1;
+ this->elements = CallocT<BinaryHeapNode*>((max_size - 1) / BINARY_HEAP_BLOCKSIZE + 1);
+ this->elements[0] = MallocT<BinaryHeapNode>(BINARY_HEAP_BLOCKSIZE);
+ this->blocks = 1;
#ifdef QUEUE_DEBUG
printf("[BinaryHeap] Initial size of elements is %d nodes\n", BINARY_HEAP_BLOCKSIZE);
#endif
diff --git a/src/pathfinder/npf/queue.h b/src/pathfinder/npf/queue.h
index 317ec1b71..4a939b61d 100644
--- a/src/pathfinder/npf/queue.h
+++ b/src/pathfinder/npf/queue.h
@@ -24,7 +24,14 @@ struct BinaryHeapNode {
};
+/*
+ * Binary Heap
+ * For information, see:
+ * http://www.policyalmanac.org/games/binaryHeaps.htm
+ */
struct Queue {
+ void Init(uint max_size);
+
bool Push(void *item, int priority);
void *Pop();
bool Delete(void *item, int priority);
@@ -37,22 +44,9 @@ struct Queue {
BinaryHeapNode **elements;
};
-
-/*
- * Binary Heap
- * For information, see:
- * http://www.policyalmanac.org/games/binaryHeaps.htm
- */
-
/* The amount of elements that will be malloc'd at a time */
#define BINARY_HEAP_BLOCKSIZE_BITS 10
-/**
- * Initializes a binary heap and allocates internal memory for maximum of
- * max_size elements
- */
-void init_BinaryHeap(Queue *q, uint max_size);
-
/*
* Hash