mirror of https://github.com/OpenTTD/OpenTTD
(svn r20882) -Codechange: Make Hash_Set a method.
parent
4ed94825b2
commit
15b784471e
|
@ -43,7 +43,7 @@ void AyStar::ClosedListAdd(const PathNode *node)
|
||||||
/* Add a node to the ClosedList */
|
/* Add a node to the ClosedList */
|
||||||
PathNode *new_node = MallocT<PathNode>(1);
|
PathNode *new_node = MallocT<PathNode>(1);
|
||||||
*new_node = *node;
|
*new_node = *node;
|
||||||
Hash_Set(&this->ClosedListHash, node->node.tile, node->node.direction, new_node);
|
this->ClosedListHash.Set(node->node.tile, node->node.direction, new_node);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Checks if a node is in the OpenList
|
/* Checks if a node is in the OpenList
|
||||||
|
@ -76,7 +76,7 @@ void AyStar::OpenListAdd(PathNode *parent, const AyStarNode *node, int f, int g)
|
||||||
new_node->g = g;
|
new_node->g = g;
|
||||||
new_node->path.parent = parent;
|
new_node->path.parent = parent;
|
||||||
new_node->path.node = *node;
|
new_node->path.node = *node;
|
||||||
Hash_Set(&this->OpenListHash, node->tile, node->direction, new_node);
|
this->OpenListHash.Set(node->tile, node->direction, new_node);
|
||||||
|
|
||||||
/* Add it to the queue */
|
/* Add it to the queue */
|
||||||
this->OpenListQueue.Push(new_node, f);
|
this->OpenListQueue.Push(new_node, f);
|
||||||
|
|
|
@ -470,11 +470,14 @@ void *Hash_Delete(Hash *h, uint key1, uint key2)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
void *Hash_Set(Hash *h, uint key1, uint key2, void *value)
|
* Sets the value associated with the given key pair to the given value.
|
||||||
|
* Returns the old value if the value was replaced, NULL when it was not yet present.
|
||||||
|
*/
|
||||||
|
void *Hash::Set(uint key1, uint key2, void *value)
|
||||||
{
|
{
|
||||||
HashNode *prev;
|
HashNode *prev;
|
||||||
HashNode *node = Hash_FindNode(h, key1, key2, &prev);
|
HashNode *node = Hash_FindNode(this, key1, key2, &prev);
|
||||||
|
|
||||||
if (node != NULL) {
|
if (node != NULL) {
|
||||||
/* Found it */
|
/* Found it */
|
||||||
|
@ -486,9 +489,9 @@ void *Hash_Set(Hash *h, uint key1, uint key2, void *value)
|
||||||
/* It is not yet present, let's add it */
|
/* It is not yet present, let's add it */
|
||||||
if (prev == NULL) {
|
if (prev == NULL) {
|
||||||
/* The bucket is still empty */
|
/* The bucket is still empty */
|
||||||
uint hash = h->hash(key1, key2);
|
uint hash = this->hash(key1, key2);
|
||||||
h->buckets_in_use[hash] = true;
|
this->buckets_in_use[hash] = true;
|
||||||
node = h->buckets + hash;
|
node = this->buckets + hash;
|
||||||
} else {
|
} else {
|
||||||
/* Add it after prev */
|
/* Add it after prev */
|
||||||
node = MallocT<HashNode>(1);
|
node = MallocT<HashNode>(1);
|
||||||
|
@ -498,7 +501,7 @@ void *Hash_Set(Hash *h, uint key1, uint key2, void *value)
|
||||||
node->key1 = key1;
|
node->key1 = key1;
|
||||||
node->key2 = key2;
|
node->key2 = key2;
|
||||||
node->value = value;
|
node->value = value;
|
||||||
h->size++;
|
this->size++;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -87,6 +87,7 @@ struct Hash {
|
||||||
bool *buckets_in_use;
|
bool *buckets_in_use;
|
||||||
|
|
||||||
void *Get(uint key1, uint key2) const;
|
void *Get(uint key1, uint key2) const;
|
||||||
|
void *Set(uint key1, uint key2, void *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the current size of the hash.
|
* Gets the current size of the hash.
|
||||||
|
@ -105,11 +106,6 @@ struct Hash {
|
||||||
* is _not_ free()'d!
|
* is _not_ free()'d!
|
||||||
*/
|
*/
|
||||||
void *Hash_Delete(Hash *h, uint key1, uint key2);
|
void *Hash_Delete(Hash *h, uint key1, uint key2);
|
||||||
/**
|
|
||||||
* Sets the value associated with the given key pair to the given value.
|
|
||||||
* Returns the old value if the value was replaced, NULL when it was not yet present.
|
|
||||||
*/
|
|
||||||
void *Hash_Set(Hash *h, uint key1, uint key2, void *value);
|
|
||||||
|
|
||||||
/* Call these function to create/destroy a hash */
|
/* Call these function to create/destroy a hash */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue