mirror of https://github.com/OpenTTD/OpenTTD
(svn r20884) -Codechange: Make clear_Hash a method.
parent
f185a35269
commit
d86f781ca5
|
@ -216,8 +216,8 @@ void AyStar::Clear()
|
||||||
* the hash. */
|
* the hash. */
|
||||||
this->OpenListQueue.Clear(false);
|
this->OpenListQueue.Clear(false);
|
||||||
/* Clean the hashes */
|
/* Clean the hashes */
|
||||||
clear_Hash(&this->OpenListHash, true);
|
this->OpenListHash.Clear(true);
|
||||||
clear_Hash(&this->ClosedListHash, true);
|
this->ClosedListHash.Clear(true);
|
||||||
|
|
||||||
#ifdef AYSTAR_DEBUG
|
#ifdef AYSTAR_DEBUG
|
||||||
printf("[AyStar] Cleared AyStar\n");
|
printf("[AyStar] Cleared AyStar\n");
|
||||||
|
|
|
@ -346,23 +346,26 @@ static void stat_Hash(const Hash *h)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void clear_Hash(Hash *h, bool free_values)
|
/**
|
||||||
|
* Cleans the hash, but keeps the memory allocated
|
||||||
|
*/
|
||||||
|
void Hash::Clear(bool free_values)
|
||||||
{
|
{
|
||||||
uint i;
|
uint i;
|
||||||
|
|
||||||
#ifdef HASH_STATS
|
#ifdef HASH_STATS
|
||||||
if (h->size > 2000) stat_Hash(h);
|
if (this->size > 2000) stat_Hash(this);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Iterate all buckets */
|
/* Iterate all buckets */
|
||||||
for (i = 0; i < h->num_buckets; i++) {
|
for (i = 0; i < this->num_buckets; i++) {
|
||||||
if (h->buckets_in_use[i]) {
|
if (this->buckets_in_use[i]) {
|
||||||
HashNode *node;
|
HashNode *node;
|
||||||
|
|
||||||
h->buckets_in_use[i] = false;
|
this->buckets_in_use[i] = false;
|
||||||
/* Free the first value */
|
/* Free the first value */
|
||||||
if (free_values) free(h->buckets[i].value);
|
if (free_values) free(this->buckets[i].value);
|
||||||
node = h->buckets[i].next;
|
node = this->buckets[i].next;
|
||||||
while (node != NULL) {
|
while (node != NULL) {
|
||||||
HashNode *prev = node;
|
HashNode *prev = node;
|
||||||
|
|
||||||
|
@ -372,7 +375,7 @@ void clear_Hash(Hash *h, bool free_values)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
h->size = 0;
|
this->size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -91,6 +91,8 @@ struct Hash {
|
||||||
|
|
||||||
void *DeleteValue(uint key1, uint key2);
|
void *DeleteValue(uint key1, uint key2);
|
||||||
|
|
||||||
|
void Clear(bool free_values);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the current size of the hash.
|
* Gets the current size of the hash.
|
||||||
*/
|
*/
|
||||||
|
@ -116,9 +118,5 @@ void init_Hash(Hash *h, Hash_HashProc *hash, uint num_buckets);
|
||||||
* are left in the hash.
|
* are left in the hash.
|
||||||
*/
|
*/
|
||||||
void delete_Hash(Hash *h, bool free_values);
|
void delete_Hash(Hash *h, bool free_values);
|
||||||
/**
|
|
||||||
* Cleans the hash, but keeps the memory allocated
|
|
||||||
*/
|
|
||||||
void clear_Hash(Hash *h, bool free_values);
|
|
||||||
|
|
||||||
#endif /* QUEUE_H */
|
#endif /* QUEUE_H */
|
||||||
|
|
Loading…
Reference in New Issue