(svn r20886) -Codechange: Make init_Hash a method.

This commit is contained in:
alberth
2010-10-02 19:46:24 +00:00
parent 6f85b46eeb
commit 4af4d268d8
3 changed files with 17 additions and 23 deletions

View File

@@ -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;
}
/**