mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-24 19:22:11 +01:00
improve clarity in some functions
2007-12-03 Ryan Lortie <desrt@desrt.ca> * glib/ghash.c (g_hash_table_lookup_node, g_hash_table_lookup_extended, g_hash_table_insert_internal, g_hash_node_new): improve clarity in some functions svn path=/trunk/; revision=6035
This commit is contained in:
parent
8a38e16052
commit
d72c02686b
@ -1,3 +1,9 @@
|
|||||||
|
2007-12-03 Ryan Lortie <desrt@desrt.ca>
|
||||||
|
|
||||||
|
* glib/ghash.c (g_hash_table_lookup_node,
|
||||||
|
g_hash_table_lookup_extended, g_hash_table_insert_internal,
|
||||||
|
g_hash_node_new): improve clarity in some functions
|
||||||
|
|
||||||
2007-12-03 Ryan Lortie <desrt@desrt.ca>
|
2007-12-03 Ryan Lortie <desrt@desrt.ca>
|
||||||
|
|
||||||
* glib/ghash.c: rename 'node' to 'node_ptr' where appropriate
|
* glib/ghash.c: rename 'node' to 'node_ptr' where appropriate
|
||||||
|
68
glib/ghash.c
68
glib/ghash.c
@ -222,7 +222,7 @@ g_hash_table_lookup_node (GHashTable *hash_table,
|
|||||||
gconstpointer key,
|
gconstpointer key,
|
||||||
guint *hash_return)
|
guint *hash_return)
|
||||||
{
|
{
|
||||||
GHashNode **node_ptr;
|
GHashNode **node_ptr, *node;
|
||||||
guint hash_value;
|
guint hash_value;
|
||||||
|
|
||||||
hash_value = (* hash_table->hash_func) (key);
|
hash_value = (* hash_table->hash_func) (key);
|
||||||
@ -241,12 +241,26 @@ g_hash_table_lookup_node (GHashTable *hash_table,
|
|||||||
* key equality function in most cases.
|
* key equality function in most cases.
|
||||||
*/
|
*/
|
||||||
if (hash_table->key_equal_func)
|
if (hash_table->key_equal_func)
|
||||||
while (*node_ptr && (((*node_ptr)->key_hash != hash_value) ||
|
{
|
||||||
!(*hash_table->key_equal_func) ((*node_ptr)->key, key)))
|
while ((node = *node_ptr))
|
||||||
|
{
|
||||||
|
if (node->key_hash == hash_value &&
|
||||||
|
hash_table->key_equal_func (node->key, key))
|
||||||
|
break;
|
||||||
|
|
||||||
node_ptr = &(*node_ptr)->next;
|
node_ptr = &(*node_ptr)->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
while (*node_ptr && (*node_ptr)->key != key)
|
{
|
||||||
|
while ((node = *node_ptr))
|
||||||
|
{
|
||||||
|
if (node->key == key)
|
||||||
|
break;
|
||||||
|
|
||||||
node_ptr = &(*node_ptr)->next;
|
node_ptr = &(*node_ptr)->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return node_ptr;
|
return node_ptr;
|
||||||
}
|
}
|
||||||
@ -302,17 +316,17 @@ g_hash_table_lookup_extended (GHashTable *hash_table,
|
|||||||
|
|
||||||
node = *g_hash_table_lookup_node (hash_table, lookup_key, NULL);
|
node = *g_hash_table_lookup_node (hash_table, lookup_key, NULL);
|
||||||
|
|
||||||
if (node)
|
if (node == NULL)
|
||||||
{
|
return FALSE;
|
||||||
|
|
||||||
if (orig_key)
|
if (orig_key)
|
||||||
*orig_key = node->key;
|
*orig_key = node->key;
|
||||||
|
|
||||||
if (value)
|
if (value)
|
||||||
*value = node->value;
|
*value = node->value;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
g_hash_table_insert_internal (GHashTable *hash_table,
|
g_hash_table_insert_internal (GHashTable *hash_table,
|
||||||
@ -320,7 +334,7 @@ g_hash_table_insert_internal (GHashTable *hash_table,
|
|||||||
gpointer value,
|
gpointer value,
|
||||||
gboolean keep_new_key)
|
gboolean keep_new_key)
|
||||||
{
|
{
|
||||||
GHashNode **node_ptr;
|
GHashNode **node_ptr, *node;
|
||||||
guint key_hash;
|
guint key_hash;
|
||||||
|
|
||||||
g_return_if_fail (hash_table != NULL);
|
g_return_if_fail (hash_table != NULL);
|
||||||
@ -328,13 +342,13 @@ g_hash_table_insert_internal (GHashTable *hash_table,
|
|||||||
|
|
||||||
node_ptr = g_hash_table_lookup_node (hash_table, key, &key_hash);
|
node_ptr = g_hash_table_lookup_node (hash_table, key, &key_hash);
|
||||||
|
|
||||||
if (*node_ptr)
|
if ((node = *node_ptr))
|
||||||
{
|
{
|
||||||
if (keep_new_key)
|
if (keep_new_key)
|
||||||
{
|
{
|
||||||
if (hash_table->key_destroy_func)
|
if (hash_table->key_destroy_func)
|
||||||
hash_table->key_destroy_func ((*node_ptr)->key);
|
hash_table->key_destroy_func (node->key);
|
||||||
(*node_ptr)->key = key;
|
node->key = key;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -343,13 +357,20 @@ g_hash_table_insert_internal (GHashTable *hash_table,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (hash_table->value_destroy_func)
|
if (hash_table->value_destroy_func)
|
||||||
hash_table->value_destroy_func ((*node_ptr)->value);
|
hash_table->value_destroy_func (node->value);
|
||||||
|
|
||||||
(*node_ptr)->value = value;
|
node->value = value;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*node_ptr = g_hash_node_new (key, value, key_hash);
|
node = g_slice_new (GHashNode);
|
||||||
|
|
||||||
|
node->key = key;
|
||||||
|
node->value = value;
|
||||||
|
node->key_hash = key_hash;
|
||||||
|
node->next = NULL;
|
||||||
|
|
||||||
|
*node_ptr = node;
|
||||||
hash_table->nnodes++;
|
hash_table->nnodes++;
|
||||||
g_hash_table_maybe_resize (hash_table);
|
g_hash_table_maybe_resize (hash_table);
|
||||||
}
|
}
|
||||||
@ -790,20 +811,5 @@ g_hash_table_resize (GHashTable *hash_table)
|
|||||||
hash_table->size = new_size;
|
hash_table->size = new_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GHashNode*
|
|
||||||
g_hash_node_new (gpointer key,
|
|
||||||
gpointer value,
|
|
||||||
guint key_hash)
|
|
||||||
{
|
|
||||||
GHashNode *hash_node = g_slice_new (GHashNode);
|
|
||||||
|
|
||||||
hash_node->key = key;
|
|
||||||
hash_node->value = value;
|
|
||||||
hash_node->key_hash = key_hash;
|
|
||||||
hash_node->next = NULL;
|
|
||||||
|
|
||||||
return hash_node;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define __G_HASH_C__
|
#define __G_HASH_C__
|
||||||
#include "galiasdef.c"
|
#include "galiasdef.c"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user