g_tree_lookup (GTree *tree,
gconstpointer key)
{
- return g_tree_lookup_related (tree, key, G_TREE_SEARCH_EXACT);
+ return g_tree_lookup_related (tree, key, G_TREE_SEARCH_EXACT, tree->version);
}
/**
* @search_type: the search behavior if the @key is not present in the #GTree,
* one of %G_TREE_SEARCH_EXACT, %G_TREE_SEARCH_SUCCESSOR, and
* %G_TREE_SEARCH_PREDECESSOR.
+ * @version: the version of the tree within which to search. If
+ * g_tree_next_version has not been used, then this is 0.
*
* Gets a value corresponding to the given key.
*
gpointer
g_tree_lookup_related (GTree *tree,
gconstpointer key,
- GTreeSearchType search_type)
+ GTreeSearchType search_type,
+ guint version)
{
GTreeNode *node;
g_return_val_if_fail (tree != NULL, NULL);
+ g_return_val_if_fail (version <= tree->version, NULL);
- node = g_tree_find_node (tree, key, search_type, tree->version);
+ node = g_tree_find_node (tree, key, search_type, version);
return node ? node->data->value : NULL;
}
gchar *r;
r = g_tree_lookup_related (tree, &chars[i],
- G_TREE_SEARCH_SUCCESSOR);
+ G_TREE_SEARCH_SUCCESSOR, 0);
g_assert((i == n-1 && r == NULL) || (r && *r == chars[i+1]));
g_tree_insert (tree, &chars[i], &chars[i]);
r = g_tree_lookup_related (tree, &chars[i],
- G_TREE_SEARCH_PREDECESSOR);
+ G_TREE_SEARCH_PREDECESSOR, 0);
g_assert(r && *r == chars[i]);
r = g_tree_lookup_related (tree, &chars[i],
- G_TREE_SEARCH_SUCCESSOR);
+ G_TREE_SEARCH_SUCCESSOR, 0);
g_assert(r && *r == chars[i]);
}
g_assert(n == g_tree_nnodes(tree));
gchar *r;
r = g_tree_lookup_related (tree, &chars[i],
- G_TREE_SEARCH_PREDECESSOR);
+ G_TREE_SEARCH_PREDECESSOR, 0);
g_assert((i == 0 && r == NULL) || (r && *r == chars[i-1]));
g_tree_insert (tree, &chars[i], &chars[i]);
r = g_tree_lookup_related (tree, &chars[i],
- G_TREE_SEARCH_PREDECESSOR);
+ G_TREE_SEARCH_PREDECESSOR, 0);
g_assert(r && *r == chars[i]);
r = g_tree_lookup_related (tree, &chars[i],
- G_TREE_SEARCH_SUCCESSOR);
+ G_TREE_SEARCH_SUCCESSOR, 0);
g_assert(r && *r == chars[i]);
}
g_assert(i == g_tree_nnodes(tree));