diff options
author | alberth <alberth@openttd.org> | 2010-10-02 19:46:24 +0000 |
---|---|---|
committer | alberth <alberth@openttd.org> | 2010-10-02 19:46:24 +0000 |
commit | 4af4d268d875c0dc09b5e1cea77d52b07dc3ec6e (patch) | |
tree | 11d2f6e3e391f769185dd7d60297b6b4d62438f6 | |
parent | 6f85b46eebf674b223df137a67c60b0b74953b97 (diff) | |
download | openttd-4af4d268d875c0dc09b5e1cea77d52b07dc3ec6e.tar.xz |
(svn r20886) -Codechange: Make init_Hash a method.
-rw-r--r-- | src/pathfinder/npf/aystar.cpp | 4 | ||||
-rw-r--r-- | src/pathfinder/npf/queue.cpp | 23 | ||||
-rw-r--r-- | src/pathfinder/npf/queue.h | 13 |
3 files changed, 17 insertions, 23 deletions
diff --git a/src/pathfinder/npf/aystar.cpp b/src/pathfinder/npf/aystar.cpp index 3a1a5c057..fe2af5156 100644 --- a/src/pathfinder/npf/aystar.cpp +++ b/src/pathfinder/npf/aystar.cpp @@ -285,8 +285,8 @@ void AyStar::AddStartNode(AyStarNode *start_node, uint g) void AyStar::Init(Hash_HashProc hash, uint num_buckets) { /* Allocated the Hash for the OpenList and ClosedList */ - init_Hash(&this->OpenListHash, hash, num_buckets); - init_Hash(&this->ClosedListHash, hash, num_buckets); + this->OpenListHash.Init(hash, num_buckets); + this->ClosedListHash.Init(hash, num_buckets); /* Set up our sorting queue * BinaryHeap allocates a block of 1024 nodes diff --git a/src/pathfinder/npf/queue.cpp b/src/pathfinder/npf/queue.cpp index 5b0e9a0ec..3075ebf73 100644 --- a/src/pathfinder/npf/queue.cpp +++ b/src/pathfinder/npf/queue.cpp @@ -243,24 +243,27 @@ void BinaryHeap::Init(uint max_size) * Hash */ -void init_Hash(Hash *h, Hash_HashProc *hash, uint num_buckets) +/** + * Builds a new hash in an existing struct. Make sure that hash() always + * returns a hash less than num_buckets! Call delete_hash after use + */ +void Hash::Init(Hash_HashProc *hash, uint num_buckets) { /* Allocate space for the Hash, the buckets and the bucket flags */ uint i; - assert(h != NULL); #ifdef HASH_DEBUG - debug("Allocated hash: %p", h); + debug("Allocated hash: %p", this); #endif - h->hash = hash; - h->size = 0; - h->num_buckets = num_buckets; - h->buckets = (HashNode*)MallocT<byte>(num_buckets * (sizeof(*h->buckets) + sizeof(*h->buckets_in_use))); + this->hash = hash; + this->size = 0; + this->num_buckets = num_buckets; + this->buckets = (HashNode*)MallocT<byte>(num_buckets * (sizeof(*this->buckets) + sizeof(*this->buckets_in_use))); #ifdef HASH_DEBUG - debug("Buckets = %p", h->buckets); + debug("Buckets = %p", this->buckets); #endif - h->buckets_in_use = (bool*)(h->buckets + num_buckets); - for (i = 0; i < num_buckets; i++) h->buckets_in_use[i] = false; + this->buckets_in_use = (bool*)(this->buckets + num_buckets); + for (i = 0; i < num_buckets; i++) this->buckets_in_use[i] = false; } /** diff --git a/src/pathfinder/npf/queue.h b/src/pathfinder/npf/queue.h index 6059c54b1..69c1602df 100644 --- a/src/pathfinder/npf/queue.h +++ b/src/pathfinder/npf/queue.h @@ -86,6 +86,8 @@ struct Hash { * there are any Nodes in the bucket */ bool *buckets_in_use; + void Init(Hash_HashProc *hash, uint num_buckets); + void *Get(uint key1, uint key2) const; void *Set(uint key1, uint key2, void *value); @@ -103,15 +105,4 @@ struct Hash { } }; -/* Call these function to manipulate a hash */ - - -/* Call these function to create/destroy a hash */ - -/** - * Builds a new hash in an existing struct. Make sure that hash() always - * returns a hash less than num_buckets! Call delete_hash after use - */ -void init_Hash(Hash *h, Hash_HashProc *hash, uint num_buckets); - #endif /* QUEUE_H */ |