diff options
author | alberth <alberth@openttd.org> | 2010-08-29 13:42:38 +0000 |
---|---|---|
committer | alberth <alberth@openttd.org> | 2010-08-29 13:42:38 +0000 |
commit | bc6a5a5e645ac44415e5c94bb12fa24cfa0724cd (patch) | |
tree | 7465e7ffd19b99e576643417400a0c1876b7a81c /src/pathfinder | |
parent | 2c962548e52e6334db0c2457eedb40710b23bbad (diff) | |
download | openttd-bc6a5a5e645ac44415e5c94bb12fa24cfa0724cd.tar.xz |
(svn r20686) -Codechange: Make init_BinaryHeap() a method.
Diffstat (limited to 'src/pathfinder')
-rw-r--r-- | src/pathfinder/npf/aystar.cpp | 2 | ||||
-rw-r--r-- | src/pathfinder/npf/queue.cpp | 17 | ||||
-rw-r--r-- | src/pathfinder/npf/queue.h | 20 |
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 |