From bc6a5a5e645ac44415e5c94bb12fa24cfa0724cd Mon Sep 17 00:00:00 2001 From: alberth Date: Sun, 29 Aug 2010 13:42:38 +0000 Subject: (svn r20686) -Codechange: Make init_BinaryHeap() a method. --- src/pathfinder/npf/aystar.cpp | 2 +- src/pathfinder/npf/queue.cpp | 17 ++++++++++------- src/pathfinder/npf/queue.h | 20 +++++++------------- 3 files changed, 18 insertions(+), 21 deletions(-) (limited to 'src/pathfinder') 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((max_size - 1) / BINARY_HEAP_BLOCKSIZE + 1); - q->elements[0] = MallocT(BINARY_HEAP_BLOCKSIZE); - q->blocks = 1; + this->elements = CallocT((max_size - 1) / BINARY_HEAP_BLOCKSIZE + 1); + this->elements[0] = MallocT(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 -- cgit v1.2.3-54-g00ecf