From 5cd812aafc2aed43bd29db3278be6d6f1060c07b Mon Sep 17 00:00:00 2001 From: alberth Date: Sat, 2 Oct 2010 19:42:42 +0000 Subject: [PATCH] (svn r20883) -Codechange: Make Hash_Delete a method. --- src/pathfinder/npf/aystar.cpp | 2 +- src/pathfinder/npf/queue.cpp | 15 ++++++++++----- src/pathfinder/npf/queue.h | 8 ++------ 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/pathfinder/npf/aystar.cpp b/src/pathfinder/npf/aystar.cpp index f8f9398940..4ef8cbfbed 100644 --- a/src/pathfinder/npf/aystar.cpp +++ b/src/pathfinder/npf/aystar.cpp @@ -61,7 +61,7 @@ OpenListNode *AyStar::OpenListPop() /* Return the item the Queue returns.. the best next OpenList item. */ OpenListNode *res = (OpenListNode*)this->OpenListQueue.Pop(); if (res != NULL) { - Hash_Delete(&this->OpenListHash, res->path.node.tile, res->path.node.direction); + this->OpenListHash.DeleteValue(res->path.node.tile, res->path.node.direction); } return res; diff --git a/src/pathfinder/npf/queue.cpp b/src/pathfinder/npf/queue.cpp index b9110d6d93..eac77145b7 100644 --- a/src/pathfinder/npf/queue.cpp +++ b/src/pathfinder/npf/queue.cpp @@ -427,11 +427,16 @@ static HashNode *Hash_FindNode(const Hash *h, uint key1, uint key2, HashNode** p return result; } -void *Hash_Delete(Hash *h, uint key1, uint key2) +/** + * Deletes the value with the specified key pair from the hash and returns + * that value. Returns NULL when the value was not present. The value returned + * is _not_ free()'d! + */ +void *Hash::DeleteValue(uint key1, uint key2) { void *result; HashNode *prev; // Used as output var for below function call - HashNode *node = Hash_FindNode(h, key1, key2, &prev); + HashNode *node = Hash_FindNode(this, key1, key2, &prev); if (node == NULL) { /* not found */ @@ -452,8 +457,8 @@ void *Hash_Delete(Hash *h, uint key1, uint key2) } else { /* This was the last in this bucket * Mark it as empty */ - uint hash = h->hash(key1, key2); - h->buckets_in_use[hash] = false; + uint hash = this->hash(key1, key2); + this->buckets_in_use[hash] = false; } } else { /* It is in another node @@ -466,7 +471,7 @@ void *Hash_Delete(Hash *h, uint key1, uint key2) free(node); #endif } - if (result != NULL) h->size--; + if (result != NULL) this->size--; return result; } diff --git a/src/pathfinder/npf/queue.h b/src/pathfinder/npf/queue.h index 6ee5675c46..efe5301a9c 100644 --- a/src/pathfinder/npf/queue.h +++ b/src/pathfinder/npf/queue.h @@ -89,6 +89,8 @@ struct Hash { void *Get(uint key1, uint key2) const; void *Set(uint key1, uint key2, void *value); + void *DeleteValue(uint key1, uint key2); + /** * Gets the current size of the hash. */ @@ -100,12 +102,6 @@ struct Hash { /* Call these function to manipulate a hash */ -/** - * Deletes the value with the specified key pair from the hash and returns - * that value. Returns NULL when the value was not present. The value returned - * is _not_ free()'d! - */ -void *Hash_Delete(Hash *h, uint key1, uint key2); /* Call these function to create/destroy a hash */