[glib] gsequence: Kill check_iter_access()
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] gsequence: Kill check_iter_access()
- Date: Thu, 11 Jan 2018 12:56:07 +0000 (UTC)
commit ee8f7be3df007c985c45362db66657d1b4bfe05e
Author: Garrett Regier <garrettregier gmail com>
Date: Mon May 9 12:07:19 2016 +0300
gsequence: Kill check_iter_access()
Generally the GSequence has already been
determined by the caller. This saves quite
a few calls to get_sequence().
https://bugzilla.gnome.org/show_bug.cgi?id=749583
glib/gsequence.c | 67 +++++++++++++++++++++++++++++------------------------
1 files changed, 37 insertions(+), 30 deletions(-)
---
diff --git a/glib/gsequence.c b/glib/gsequence.c
index 2dac88a..b42771c 100644
--- a/glib/gsequence.c
+++ b/glib/gsequence.c
@@ -175,12 +175,6 @@ get_sequence (GSequenceNode *node)
return (GSequence *)node_get_last (node)->data;
}
-static void
-check_iter_access (GSequenceIter *iter)
-{
- check_seq_access (get_sequence (iter));
-}
-
static gboolean
is_end (GSequenceIter *iter)
{
@@ -412,13 +406,17 @@ g_sequence_iter_compare (GSequenceIter *a,
GSequenceIter *b)
{
gint a_pos, b_pos;
+ GSequence *seq_a, *seq_b;
g_return_val_if_fail (a != NULL, 0);
g_return_val_if_fail (b != NULL, 0);
- g_return_val_if_fail (get_sequence (a) == get_sequence (b), 0);
- check_iter_access (a);
- check_iter_access (b);
+ seq_a = get_sequence (a);
+ seq_b = get_sequence (b);
+ g_return_val_if_fail (seq_a == seq_b, 0);
+
+ check_seq_access (seq_a);
+ check_seq_access (seq_b);
a_pos = node_get_pos (a);
b_pos = node_get_pos (b);
@@ -502,11 +500,13 @@ GSequenceIter *
g_sequence_insert_before (GSequenceIter *iter,
gpointer data)
{
+ GSequence *seq;
GSequenceNode *node;
g_return_val_if_fail (iter != NULL, NULL);
- check_iter_access (iter);
+ seq = get_sequence (iter);
+ check_seq_access (seq);
node = node_new (data);
@@ -535,9 +535,8 @@ g_sequence_remove (GSequenceIter *iter)
g_return_if_fail (iter != NULL);
g_return_if_fail (!is_end (iter));
- check_iter_access (iter);
-
seq = get_sequence (iter);
+ check_seq_access (seq);
node_unlink (iter);
node_free (iter, seq);
@@ -559,10 +558,12 @@ void
g_sequence_remove_range (GSequenceIter *begin,
GSequenceIter *end)
{
- g_return_if_fail (get_sequence (begin) == get_sequence (end));
+ GSequence *seq_begin, *seq_end;
- check_iter_access (begin);
- check_iter_access (end);
+ seq_begin = get_sequence (begin);
+ seq_end = get_sequence (end);
+ g_return_if_fail (seq_begin == seq_end);
+ /* check_seq_access() calls are done by g_sequence_move_range() */
g_sequence_move_range (NULL, begin, end);
}
@@ -589,20 +590,25 @@ g_sequence_move_range (GSequenceIter *dest,
GSequenceIter *begin,
GSequenceIter *end)
{
- GSequence *src_seq;
+ GSequence *src_seq, *end_seq, *dest_seq;
GSequenceNode *first;
g_return_if_fail (begin != NULL);
g_return_if_fail (end != NULL);
- check_iter_access (begin);
- check_iter_access (end);
- if (dest)
- check_iter_access (dest);
-
src_seq = get_sequence (begin);
+ check_seq_access (src_seq);
+
+ end_seq = get_sequence (end);
+ check_seq_access (end_seq);
+
+ if (dest)
+ {
+ dest_seq = get_sequence (dest);
+ check_seq_access (dest_seq);
+ }
- g_return_if_fail (src_seq == get_sequence (end));
+ g_return_if_fail (src_seq == end_seq);
/* Dest points to begin or end? */
if (dest == begin || dest == end)
@@ -613,15 +619,13 @@ g_sequence_move_range (GSequenceIter *dest,
return;
/* dest points somewhere in the (begin, end) range? */
- if (dest && get_sequence (dest) == src_seq &&
+ if (dest && dest_seq == src_seq &&
g_sequence_iter_compare (dest, begin) > 0 &&
g_sequence_iter_compare (dest, end) < 0)
{
return;
}
- src_seq = get_sequence (begin);
-
first = node_get_first (begin);
node_cut (begin);
@@ -741,14 +745,17 @@ g_sequence_sort_changed (GSequenceIter *iter,
GCompareDataFunc cmp_func,
gpointer cmp_data)
{
+ GSequence *seq;
SortInfo info;
g_return_if_fail (!is_end (iter));
+ seq = get_sequence (iter);
+ /* check_seq_access() call is done by g_sequence_sort_changed_iter() */
+
info.cmp_func = cmp_func;
info.cmp_data = cmp_data;
- info.end_node = get_sequence (iter)->end_node;
- check_iter_access (iter);
+ info.end_node = seq->end_node;
g_sequence_sort_changed_iter (iter, iter_compare, &info);
}
@@ -930,7 +937,9 @@ g_sequence_sort_changed_iter (GSequenceIter *iter,
g_return_if_fail (iter != NULL);
g_return_if_fail (!is_end (iter));
g_return_if_fail (iter_cmp != NULL);
- check_iter_access (iter);
+
+ seq = get_sequence (iter);
+ check_seq_access (seq);
/* If one of the neighbours is equal to iter, then
* don't move it. This ensures that sort_changed() is
@@ -946,8 +955,6 @@ g_sequence_sort_changed_iter (GSequenceIter *iter,
if (!is_end (next) && iter_cmp (next, iter, cmp_data) == 0)
return;
- seq = get_sequence (iter);
-
seq->access_prohibited = TRUE;
tmp_seq = g_sequence_new (NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]