Lines Matching defs:node
47 /* If key_hash == 0, node is not in use
48 * If key_hash == 1, node is a tombstone
49 * If key_hash >= 2, node contains data */
67 * incremented when a node is added or removed (is not incremented
68 * when the key or data of a node is modified).
181 * index of an empty node (never a tombstone).
187 GHashNode *node;
200 node = &hash_table->nodes [node_index];
202 while (node->key_hash)
209 if (node->key_hash == hash_value)
213 if (hash_table->key_equal_func (node->key, key))
216 else if (node->key == key)
225 node = &hash_table->nodes [node_index];
246 * index of an unused node (empty or tombstone) where the key can be
258 GHashNode *node;
275 node = &hash_table->nodes [node_index];
277 while (node->key_hash)
284 if (node->key_hash == hash_value)
288 if (hash_table->key_equal_func (node->key, key))
291 else if (node->key == key)
296 else if (node->key_hash == 1 && !have_tombstone)
305 node = &hash_table->nodes [node_index];
317 * @node: pointer to node to remove
320 * Removes a node from the hash table and updates the node count.
321 * The node is replaced by a tombstone. No table resize is performed.
324 * for the key and value of the hash node.
328 GHashNode *node,
332 hash_table->key_destroy_func (node->key);
335 hash_table->value_destroy_func (node->value);
338 node->key_hash = 1;
341 node->key = NULL;
342 node->value = NULL;
356 * for the key and value of the hash node.
366 GHashNode *node = &hash_table->nodes [i];
368 if (node->key_hash > 1)
371 hash_table->key_destroy_func (node->key);
374 hash_table->value_destroy_func (node->value);
378 /* We need to set node->key_hash = 0 for all nodes - might as well be GC
413 GHashNode *node = &hash_table->nodes [i];
418 if (node->key_hash <= 1)
421 hash_val = node->key_hash % hash_table->mod;
432 *new_node = *node;
585 GHashNode *node;
605 node = &ri->hash_table->nodes [position];
607 while (node->key_hash <= 1);
610 *key = node->key;
612 *value = node->value;
778 GHashNode *node;
784 node = &hash_table->nodes [node_index];
786 return node->key_hash ? node->value : NULL;
812 GHashNode *node;
818 node = &hash_table->nodes [node_index];
820 if (!node->key_hash)
824 *orig_key = node->key;
827 *value = node->value;
846 * new node.
854 GHashNode *node;
863 node = &hash_table->nodes [node_index];
865 old_hash = node->key_hash;
872 hash_table->key_destroy_func (node->key);
873 node->key = key;
882 hash_table->value_destroy_func (node->value);
884 node->value = value;
888 node->key = key;
889 node->value = value;
890 node->key_hash = key_hash;
896 /* We replaced an empty node, and not a tombstone */
955 * Return value: %TRUE if a node was found and removed, else %FALSE
968 GHashNode *node;
974 node = &hash_table->nodes [node_index];
977 if (!node->key_hash)
980 g_hash_table_remove_node (hash_table, node, notify);
1088 * Iterates over every node in the table, calling @func with the key
1089 * and value of the node (and @user_data). If @func returns %TRUE the
1090 * node is removed from the table.
1093 * for each removed node.
1106 GHashNode *node = &hash_table->nodes [i];
1108 if (node->key_hash > 1 && (* func) (node->key, node->value, user_data))
1110 g_hash_table_remove_node (hash_table, node, notify);
1207 GHashNode *node = &hash_table->nodes [i];
1209 if (node->key_hash > 1)
1210 (* func) (node->key, node->value, user_data);
1252 GHashNode *node = &hash_table->nodes [i];
1254 if (node->key_hash > 1 && predicate (node->key, node->value, user_data))
1255 return node->value;
1302 GHashNode *node = &hash_table->nodes [i];
1304 if (node->key_hash > 1)
1305 retval = g_list_prepend (retval, node->key);
1336 GHashNode *node = &hash_table->nodes [i];
1338 if (node->key_hash > 1)
1339 retval = g_list_prepend (retval, node->value);