[gtk] rbtree: Make node getters not require tree argument
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk] rbtree: Make node getters not require tree argument
- Date: Mon, 14 Jan 2019 17:03:27 +0000 (UTC)
commit 8a7706f2b5cfc1dd7cdf0b8865fc05da0f4a6891
Author: Benjamin Otte <otte redhat com>
Date: Mon Jan 14 02:12:02 2019 +0100
rbtree: Make node getters not require tree argument
The tree is not needed to walk around the nodes.
It is however still needed for anything that requires modifying the
tree.
There is no immediate benefit in changing this API, but there might be
situations in the future where we can avoid looking up the tree when we
just want to check some details about the node.
gtk/gtkfilterlistmodel.c | 14 +++++++-------
gtk/gtkflattenlistmodel.c | 16 ++++++++--------
gtk/gtkmaplistmodel.c | 20 ++++++++++----------
gtk/gtkrbtree.c | 18 ++++++------------
gtk/gtkrbtreeprivate.h | 22 ++++++++--------------
gtk/gtktreelistmodel.c | 30 +++++++++++++++---------------
testsuite/gtk/rbtree-crash.c | 8 ++++----
7 files changed, 58 insertions(+), 70 deletions(-)
---
diff --git a/gtk/gtkfilterlistmodel.c b/gtk/gtkfilterlistmodel.c
index aa5abe8df2..8f515b5b9c 100644
--- a/gtk/gtkfilterlistmodel.c
+++ b/gtk/gtkfilterlistmodel.c
@@ -92,7 +92,7 @@ gtk_filter_list_model_get_nth_filtered (GtkRbTree *tree,
while (node)
{
- tmp = gtk_rb_tree_get_left (tree, node);
+ tmp = gtk_rb_tree_node_get_left (node);
if (tmp)
{
FilterAugment *aug = gtk_rb_tree_get_augment (tree, tmp);
@@ -114,7 +114,7 @@ gtk_filter_list_model_get_nth_filtered (GtkRbTree *tree,
unfiltered++;
- node = gtk_rb_tree_get_right (tree, node);
+ node = gtk_rb_tree_node_get_right (node);
}
if (out_unfiltered)
@@ -136,7 +136,7 @@ gtk_filter_list_model_get_nth (GtkRbTree *tree,
while (node)
{
- tmp = gtk_rb_tree_get_left (tree, node);
+ tmp = gtk_rb_tree_node_get_left (node);
if (tmp)
{
FilterAugment *aug = gtk_rb_tree_get_augment (tree, tmp);
@@ -156,7 +156,7 @@ gtk_filter_list_model_get_nth (GtkRbTree *tree,
if (node->visible)
filtered++;
- node = gtk_rb_tree_get_right (tree, node);
+ node = gtk_rb_tree_node_get_right (node);
}
if (out_filtered)
@@ -280,7 +280,7 @@ gtk_filter_list_model_items_changed_cb (GListModel *model,
filter_removed = 0;
for (i = 0; i < removed; i++)
{
- FilterNode *next = gtk_rb_tree_get_next (self->items, node);
+ FilterNode *next = gtk_rb_tree_node_get_next (node);
if (node->visible)
filter_removed++;
gtk_rb_tree_remove (self->items, node);
@@ -677,7 +677,7 @@ gtk_filter_list_model_refilter (GtkFilterListModel *self)
n_was_visible = 0;
for (i = 0, node = gtk_rb_tree_get_first (self->items);
node != NULL;
- i++, node = gtk_rb_tree_get_next (self->items, node))
+ i++, node = gtk_rb_tree_node_get_next (node))
{
visible = gtk_filter_list_model_run_filter (self, i);
if (visible == node->visible)
@@ -691,7 +691,7 @@ gtk_filter_list_model_refilter (GtkFilterListModel *self)
}
node->visible = visible;
- gtk_rb_tree_mark_dirty (self->items, node);
+ gtk_rb_tree_node_mark_dirty (node);
first_change = MIN (n_is_visible, first_change);
if (visible)
n_is_visible++;
diff --git a/gtk/gtkflattenlistmodel.c b/gtk/gtkflattenlistmodel.c
index 58852061e2..c8d5118c9b 100644
--- a/gtk/gtkflattenlistmodel.c
+++ b/gtk/gtkflattenlistmodel.c
@@ -88,7 +88,7 @@ gtk_flatten_list_model_get_nth (GtkRbTree *tree,
while (node)
{
- tmp = gtk_rb_tree_get_left (tree, node);
+ tmp = gtk_rb_tree_node_get_left (node);
if (tmp)
{
FlattenAugment *aug = gtk_rb_tree_get_augment (tree, tmp);
@@ -105,7 +105,7 @@ gtk_flatten_list_model_get_nth (GtkRbTree *tree,
break;
position -= model_n_items;
- node = gtk_rb_tree_get_right (tree, node);
+ node = gtk_rb_tree_node_get_right (node);
}
if (model_position)
@@ -127,7 +127,7 @@ gtk_flatten_list_model_get_nth_model (GtkRbTree *tree,
while (node)
{
- tmp = gtk_rb_tree_get_left (tree, node);
+ tmp = gtk_rb_tree_node_get_left (node);
if (tmp)
{
FlattenAugment *aug = gtk_rb_tree_get_augment (tree, tmp);
@@ -145,7 +145,7 @@ gtk_flatten_list_model_get_nth_model (GtkRbTree *tree,
position--;
before += g_list_model_get_n_items (node->model);
- node = gtk_rb_tree_get_right (tree, node);
+ node = gtk_rb_tree_node_get_right (node);
}
if (items_before)
@@ -220,13 +220,13 @@ gtk_flatten_list_model_items_changed_cb (GListModel *model,
GtkFlattenListModel *self = node->list;
guint real_position;
- gtk_rb_tree_mark_dirty (self->items, node);
+ gtk_rb_tree_node_mark_dirty (node);
for (real_position = position;
- (parent = gtk_rb_tree_get_parent (self->items, node)) != NULL;
+ (parent = gtk_rb_tree_node_get_parent (node)) != NULL;
node = parent)
{
- FlattenNode *left = gtk_rb_tree_get_left (self->items, parent);
+ FlattenNode *left = gtk_rb_tree_node_get_left (parent);
if (left != node)
{
if (left)
@@ -366,7 +366,7 @@ gtk_flatten_list_model_model_items_changed_cb (GListModel *model,
real_removed = 0;
for (i = 0; i < removed; i++)
{
- FlattenNode *next = gtk_rb_tree_get_next (self->items, node);
+ FlattenNode *next = gtk_rb_tree_node_get_next (node);
real_removed += g_list_model_get_n_items (node->model);
gtk_rb_tree_remove (self->items, node);
node = next;
diff --git a/gtk/gtkmaplistmodel.c b/gtk/gtkmaplistmodel.c
index 9be8aa7922..1fbf526f58 100644
--- a/gtk/gtkmaplistmodel.c
+++ b/gtk/gtkmaplistmodel.c
@@ -95,7 +95,7 @@ gtk_map_list_model_get_nth (GtkRbTree *tree,
while (node)
{
- tmp = gtk_rb_tree_get_left (tree, node);
+ tmp = gtk_rb_tree_node_get_left (node);
if (tmp)
{
MapAugment *aug = gtk_rb_tree_get_augment (tree, tmp);
@@ -114,7 +114,7 @@ gtk_map_list_model_get_nth (GtkRbTree *tree,
}
position -= node->n_items;
- node = gtk_rb_tree_get_right (tree, node);
+ node = gtk_rb_tree_node_get_right (node);
}
if (out_start_pos)
@@ -168,7 +168,7 @@ gtk_map_list_model_get_item (GListModel *list,
MapNode *before = gtk_rb_tree_insert_before (self->items, node);
before->n_items = position - offset;
node->n_items -= before->n_items;
- gtk_rb_tree_mark_dirty (self->items, node);
+ gtk_rb_tree_node_mark_dirty (node);
}
if (node->n_items > 1)
@@ -176,7 +176,7 @@ gtk_map_list_model_get_item (GListModel *list,
MapNode *after = gtk_rb_tree_insert_after (self->items, node);
after->n_items = node->n_items - 1;
node->n_items = 1;
- gtk_rb_tree_mark_dirty (self->items, node);
+ gtk_rb_tree_node_mark_dirty (node);
}
node->item = self->map_func (g_list_model_get_item (self->model, position), self->user_data);
@@ -225,7 +225,7 @@ gtk_map_list_model_items_changed_cb (GListModel *model,
end = start + node->n_items;
if (start == position && end <= position + removed)
{
- MapNode *next = gtk_rb_tree_get_next (self->items, node);
+ MapNode *next = gtk_rb_tree_node_get_next (node);
removed -= node->n_items;
gtk_rb_tree_remove (self->items, node);
node = next;
@@ -236,16 +236,16 @@ gtk_map_list_model_items_changed_cb (GListModel *model,
{
node->n_items -= removed;
removed = 0;
- gtk_rb_tree_mark_dirty (self->items, node);
+ gtk_rb_tree_node_mark_dirty (node);
}
else if (start < position)
{
guint overlap = node->n_items - (position - start);
node->n_items -= overlap;
- gtk_rb_tree_mark_dirty (self->items, node);
+ gtk_rb_tree_node_mark_dirty (node);
removed -= overlap;
start = position;
- node = gtk_rb_tree_get_next (self->items, node);
+ node = gtk_rb_tree_node_get_next (node);
}
}
}
@@ -258,7 +258,7 @@ gtk_map_list_model_items_changed_cb (GListModel *model,
node = gtk_rb_tree_insert_after (self->items, node);
node->n_items += added;
- gtk_rb_tree_mark_dirty (self->items, node);
+ gtk_rb_tree_node_mark_dirty (node);
}
g_list_model_items_changed (G_LIST_MODEL (self), position, removed, added);
@@ -489,7 +489,7 @@ gtk_map_list_model_init_items (GtkMapListModel *self)
{
MapNode *node = gtk_rb_tree_insert_before (self->items, NULL);
node->n_items = g_list_model_get_n_items (self->model);
- gtk_rb_tree_mark_dirty (self->items, node);
+ gtk_rb_tree_node_mark_dirty (node);
}
}
else
diff --git a/gtk/gtkrbtree.c b/gtk/gtkrbtree.c
index 14b017f181..4e52189233 100644
--- a/gtk/gtkrbtree.c
+++ b/gtk/gtkrbtree.c
@@ -536,15 +536,13 @@ gtk_rb_tree_get_last (GtkRbTree *tree)
}
gpointer
-gtk_rb_tree_get_previous (GtkRbTree *tree,
- gpointer node)
+gtk_rb_tree_node_get_previous (gpointer node)
{
return NODE_TO_POINTER (gtk_rb_node_get_previous (NODE_FROM_POINTER (node)));
}
gpointer
-gtk_rb_tree_get_next (GtkRbTree *tree,
- gpointer node)
+gtk_rb_tree_node_get_next (gpointer node)
{
return NODE_TO_POINTER (gtk_rb_node_get_next (NODE_FROM_POINTER (node)));
}
@@ -556,22 +554,19 @@ gtk_rb_tree_get_root (GtkRbTree *tree)
}
gpointer
-gtk_rb_tree_get_parent (GtkRbTree *tree,
- gpointer node)
+gtk_rb_tree_node_get_parent (gpointer node)
{
return NODE_TO_POINTER (parent (NODE_FROM_POINTER (node)));
}
gpointer
-gtk_rb_tree_get_left (GtkRbTree *tree,
- gpointer node)
+gtk_rb_tree_node_get_left (gpointer node)
{
return NODE_TO_POINTER (NODE_FROM_POINTER (node)->left);
}
gpointer
-gtk_rb_tree_get_right (GtkRbTree *tree,
- gpointer node)
+gtk_rb_tree_node_get_right (gpointer node)
{
return NODE_TO_POINTER (NODE_FROM_POINTER (node)->right);
}
@@ -594,8 +589,7 @@ gtk_rb_tree_node_get_tree (gpointer node)
}
void
-gtk_rb_tree_mark_dirty (GtkRbTree *tree,
- gpointer node)
+gtk_rb_tree_node_mark_dirty (gpointer node)
{
gtk_rb_node_mark_dirty (NODE_FROM_POINTER (node), TRUE);
}
diff --git a/gtk/gtkrbtreeprivate.h b/gtk/gtkrbtreeprivate.h
index 8e74c5e19e..45aba5cc2d 100644
--- a/gtk/gtkrbtreeprivate.h
+++ b/gtk/gtkrbtreeprivate.h
@@ -45,25 +45,19 @@ GtkRbTree * gtk_rb_tree_new_for_size (gsize
GtkRbTree * gtk_rb_tree_ref (GtkRbTree *tree);
void gtk_rb_tree_unref (GtkRbTree *tree);
+gpointer gtk_rb_tree_get_root (GtkRbTree *tree);
gpointer gtk_rb_tree_get_first (GtkRbTree *tree);
gpointer gtk_rb_tree_get_last (GtkRbTree *tree);
-gpointer gtk_rb_tree_get_previous (GtkRbTree *tree,
- gpointer node);
-gpointer gtk_rb_tree_get_next (GtkRbTree *tree,
- gpointer node);
-gpointer gtk_rb_tree_get_root (GtkRbTree *tree);
-gpointer gtk_rb_tree_get_parent (GtkRbTree *tree,
- gpointer node);
-gpointer gtk_rb_tree_get_left (GtkRbTree *tree,
- gpointer node);
-gpointer gtk_rb_tree_get_right (GtkRbTree *tree,
- gpointer node);
-gpointer gtk_rb_tree_get_augment (GtkRbTree *tree,
- gpointer node);
+gpointer gtk_rb_tree_node_get_previous (gpointer node);
+gpointer gtk_rb_tree_node_get_next (gpointer node);
+gpointer gtk_rb_tree_node_get_parent (gpointer node);
+gpointer gtk_rb_tree_node_get_left (gpointer node);
+gpointer gtk_rb_tree_node_get_right (gpointer node);
GtkRbTree * gtk_rb_tree_node_get_tree (gpointer node);
+void gtk_rb_tree_node_mark_dirty (gpointer node);
-void gtk_rb_tree_mark_dirty (GtkRbTree *tree,
+gpointer gtk_rb_tree_get_augment (GtkRbTree *tree,
gpointer node);
gpointer gtk_rb_tree_insert_before (GtkRbTree *tree,
diff --git a/gtk/gtktreelistmodel.c b/gtk/gtktreelistmodel.c
index af609e61ce..f74d61f6d9 100644
--- a/gtk/gtktreelistmodel.c
+++ b/gtk/gtktreelistmodel.c
@@ -121,7 +121,7 @@ tree_node_get_nth_child (TreeNode *node,
while (child)
{
- tmp = gtk_rb_tree_get_left (tree, child);
+ tmp = gtk_rb_tree_node_get_left (child);
if (tmp)
{
aug = gtk_rb_tree_get_augment (tree, tmp);
@@ -138,7 +138,7 @@ tree_node_get_nth_child (TreeNode *node,
position--;
- child = gtk_rb_tree_get_right (tree, child);
+ child = gtk_rb_tree_node_get_right (child);
}
return NULL;
@@ -170,7 +170,7 @@ tree_node_get_local_position (GtkRbTree *tree,
TreeAugment *left_aug;
guint n;
- left = gtk_rb_tree_get_left (tree, node);
+ left = gtk_rb_tree_node_get_left (node);
if (left)
{
left_aug = gtk_rb_tree_get_augment (tree, left);
@@ -181,11 +181,11 @@ tree_node_get_local_position (GtkRbTree *tree,
n = 0;
}
- for (parent = gtk_rb_tree_get_parent (tree, node);
+ for (parent = gtk_rb_tree_node_get_parent (node);
parent;
- parent = gtk_rb_tree_get_parent (tree, node))
+ parent = gtk_rb_tree_node_get_parent (node))
{
- left = gtk_rb_tree_get_left (tree, parent);
+ left = gtk_rb_tree_node_get_left (parent);
if (left == node)
{
/* we are the left node, nothing changes */
@@ -220,18 +220,18 @@ tree_node_get_position (TreeNode *node)
{
tree = node->parent->children;
- left = gtk_rb_tree_get_left (tree, node);
+ left = gtk_rb_tree_node_get_left (node);
if (left)
{
left_aug = gtk_rb_tree_get_augment (tree, left);
n += left_aug->n_items;
}
- for (parent = gtk_rb_tree_get_parent (tree, node);
+ for (parent = gtk_rb_tree_node_get_parent (node);
parent;
- parent = gtk_rb_tree_get_parent (tree, node))
+ parent = gtk_rb_tree_node_get_parent (node))
{
- left = gtk_rb_tree_get_left (tree, parent);
+ left = gtk_rb_tree_node_get_left (parent);
if (left == node)
{
/* we are the left node, nothing changes */
@@ -262,7 +262,7 @@ tree_node_mark_dirty (TreeNode *node)
!node->is_root;
node = node->parent)
{
- gtk_rb_tree_mark_dirty (node->parent->children, node);
+ gtk_rb_tree_node_mark_dirty (node);
}
}
@@ -283,7 +283,7 @@ gtk_tree_list_model_get_nth (GtkTreeListModel *self,
while (TRUE)
{
- tmp = gtk_rb_tree_get_left (tree, node);
+ tmp = gtk_rb_tree_node_get_left (node);
if (tmp)
{
TreeAugment *aug = gtk_rb_tree_get_augment (tree, tmp);
@@ -309,7 +309,7 @@ gtk_tree_list_model_get_nth (GtkTreeListModel *self,
}
position -= n_children;
- node = gtk_rb_tree_get_right (tree, node);
+ node = gtk_rb_tree_node_get_right (node);
}
g_return_val_if_reached (NULL);
@@ -406,7 +406,7 @@ gtk_tree_list_model_items_changed_cb (GListModel *model,
for (i = 0; i < removed; i++)
{
tmp = child;
- child = gtk_rb_tree_get_next (node->children, child);
+ child = gtk_rb_tree_node_get_next (child);
gtk_rb_tree_remove (node->children, tmp);
}
}
@@ -426,7 +426,7 @@ gtk_tree_list_model_items_changed_cb (GListModel *model,
for (i = 0; i < added; i++)
{
tree_added += gtk_tree_list_model_expand_node (self, child);
- child = gtk_rb_tree_get_next (node->children, child);
+ child = gtk_rb_tree_node_get_next (child);
}
}
diff --git a/testsuite/gtk/rbtree-crash.c b/testsuite/gtk/rbtree-crash.c
index ec46c45445..a4b641fea6 100644
--- a/testsuite/gtk/rbtree-crash.c
+++ b/testsuite/gtk/rbtree-crash.c
@@ -70,7 +70,7 @@ get (GtkRbTree *tree,
while (node)
{
- tmp = gtk_rb_tree_get_left (tree, node);
+ tmp = gtk_rb_tree_node_get_left (node);
if (tmp)
{
Aug *aug = gtk_rb_tree_get_augment (tree, tmp);
@@ -86,7 +86,7 @@ get (GtkRbTree *tree,
break;
pos--;
- node = gtk_rb_tree_get_right (tree, node);
+ node = gtk_rb_tree_node_get_right (node);
}
return node;
@@ -119,12 +119,12 @@ print_node (GtkRbTree *tree,
{
Node *child;
- child = gtk_rb_tree_get_left (tree, node);
+ child = gtk_rb_tree_node_get_left (node);
if (child)
n = print_node (tree, child, depth + 1, "/", n);
g_print ("%*s %u\n", 2 * depth, prefix, n);
n++;
- child = gtk_rb_tree_get_right (tree, node);
+ child = gtk_rb_tree_node_get_right (node);
if (child)
n = print_node (tree, child, depth + 1, "\\", n);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]