From: Dana Jansens Date: Fri, 30 Oct 2009 22:54:08 +0000 (-0400) Subject: Make the new git_tree_lookup_related() function take an argument "version", which... X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=175f1f8298d27bb7494199dbb5be4f98d64112ed;p=dana%2Fcg-glib.git Make the new git_tree_lookup_related() function take an argument "version", which allows you to search in any version of a GTree. --- diff --git a/glib/gtree.c b/glib/gtree.c index d466eb6e..258a1cc6 100644 --- a/glib/gtree.c +++ b/glib/gtree.c @@ -1055,7 +1055,7 @@ gpointer 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); } /** @@ -1065,6 +1065,8 @@ g_tree_lookup (GTree *tree, * @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. * @@ -1088,13 +1090,15 @@ g_tree_lookup (GTree *tree, 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; } diff --git a/glib/gtree.h b/glib/gtree.h index 921bc577..9665d70b 100644 --- a/glib/gtree.h +++ b/glib/gtree.h @@ -81,7 +81,8 @@ gboolean g_tree_lookup_extended (GTree *tree, gpointer *value); gpointer g_tree_lookup_related (GTree *tree, gconstpointer key, - GTreeSearchType search_type); + GTreeSearchType search_type, + guint version); void g_tree_foreach (GTree *tree, GTraverseFunc func, gpointer user_data); diff --git a/tests/tree-test.c b/tests/tree-test.c index 709b5044..3c4457a5 100644 --- a/tests/tree-test.c +++ b/tests/tree-test.c @@ -162,16 +162,16 @@ main (int argc, 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)); @@ -183,16 +183,16 @@ main (int argc, 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));