diff options
author | alberth <alberth@openttd.org> | 2010-10-02 19:42:42 +0000 |
---|---|---|
committer | alberth <alberth@openttd.org> | 2010-10-02 19:42:42 +0000 |
commit | f185a352693d3d78ced707ef990ccb44a84203e9 (patch) | |
tree | a4ceb4a8970fe907836865f6ba8775c879ba8856 | |
parent | 15b784471e3fc0aa210399668294481fa7ceb99d (diff) | |
download | openttd-f185a352693d3d78ced707ef990ccb44a84203e9.tar.xz |
(svn r20883) -Codechange: Make Hash_Delete a method.
-rw-r--r-- | src/pathfinder/npf/aystar.cpp | 2 | ||||
-rw-r--r-- | src/pathfinder/npf/queue.cpp | 15 | ||||
-rw-r--r-- | 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 f8f939894..4ef8cbfbe 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 b9110d6d9..eac77145b 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 6ee5675c4..efe5301a9 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 */ |