[clutter] model: Clean up ModelIter vfunc wrappers
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [clutter] model: Clean up ModelIter vfunc wrappers
- Date: Fri, 29 Jul 2011 10:34:23 +0000 (UTC)
commit 473f3817d4a0c55b173bb74c6f6f34c09a90d951
Author: Emmanuele Bassi <ebassi linux intel com>
Date: Fri Jul 29 11:29:51 2011 +0100
model: Clean up ModelIter vfunc wrappers
All ClutterModelIter virtual functions have a default implementation,
and G_TYPE_INSTANCE_GET_CLASS cannot return NULL unless in case of a
catastrophic event in the type system - which will most likely blow up
any application code way before you could call a ModelIter method.
Thus, the idiom:
klass = CLUTTER_MODEL_ITER_GET_CLASS (instance);
if (klass && klass->vfunc)
klass->vfunc (instance);
is utterly useless complication, and it can be perfectly replaced by:
CLUTTER_MODEL_ITER_GET_CLASS (instance)->vfunc (instance);
without any loss of safety.
clutter/clutter-model.c | 94 ++++++++++++-----------------------------------
1 files changed, 24 insertions(+), 70 deletions(-)
---
diff --git a/clutter/clutter-model.c b/clutter/clutter-model.c
index 9b5b4e4..63633a1 100644
--- a/clutter/clutter-model.c
+++ b/clutter/clutter-model.c
@@ -1761,8 +1761,6 @@ struct _ClutterModelIterPrivate
ClutterModel *model;
gint row;
-
- guint ignore_sort : 1;
};
enum
@@ -1972,8 +1970,6 @@ clutter_model_iter_init (ClutterModelIter *self)
priv->model = NULL;
priv->row = 0;
-
- priv->ignore_sort = FALSE;
}
/*
@@ -1985,11 +1981,7 @@ clutter_model_iter_set_value_internal (ClutterModelIter *iter,
guint column,
const GValue *value)
{
- ClutterModelIterClass *klass;
-
- klass = CLUTTER_MODEL_ITER_GET_CLASS (iter);
- if (klass && klass->set_value)
- klass->set_value (iter, column, value);
+ CLUTTER_MODEL_ITER_GET_CLASS (iter)->set_value (iter, column, value);
}
static void
@@ -2005,9 +1997,6 @@ clutter_model_iter_set_internal_valist (ClutterModelIter *iter,
column = va_arg (args, gint);
- /* Don't want to sort while setting lots of fields, leave that till the end
- */
- priv->ignore_sort = TRUE;
while (column != -1)
{
GValue value = { 0, };
@@ -2044,7 +2033,6 @@ clutter_model_iter_set_internal_valist (ClutterModelIter *iter,
column = va_arg (args, gint);
}
- priv->ignore_sort = FALSE;
if (sort)
clutter_model_resort (model);
}
@@ -2113,6 +2101,14 @@ clutter_model_iter_get (ClutterModelIter *iter,
va_end (args);
}
+static inline void
+clutter_model_iter_get_value_internal (ClutterModelIter *iter,
+ guint column,
+ GValue *value)
+{
+ CLUTTER_MODEL_ITER_GET_CLASS (iter)->get_value (iter, column, value);
+}
+
/**
* clutter_model_iter_get_value:
* @iter: a #ClutterModelIter
@@ -2136,11 +2132,10 @@ clutter_model_iter_get_value (ClutterModelIter *iter,
model = iter->priv->model;
- g_value_init (value, clutter_model_get_column_type (model, column));
+ if (G_VALUE_TYPE (value) == G_TYPE_INVALID)
+ g_value_init (value, clutter_model_get_column_type (model, column));
- klass = CLUTTER_MODEL_ITER_GET_CLASS (iter);
- if (klass && klass->get_value)
- klass->get_value (iter, column, value);
+ CLUTTER_MODEL_ITER_GET_CLASS (iter)->get_value (iter, column, value);
}
/**
@@ -2173,6 +2168,7 @@ clutter_model_iter_get_valist (ClutterModelIter *iter,
{
GValue value = { 0, };
gchar *error = NULL;
+ GType col_type;
if (column < 0 || column >= clutter_model_get_n_columns (model))
{
@@ -2182,10 +2178,10 @@ clutter_model_iter_get_valist (ClutterModelIter *iter,
break;
}
- /* this one will take care of initialising value to the
- * correct type
- */
- clutter_model_iter_get_value (iter, column, &value);
+ col_type = clutter_model_get_column_type (model, column);
+ g_value_init (&value, col_type);
+
+ clutter_model_iter_get_value_internal (iter, column, &value);
G_VALUE_LCOPY (&value, args, 0, &error);
if (error)
@@ -2270,15 +2266,9 @@ clutter_model_iter_set_value (ClutterModelIter *iter,
gboolean
clutter_model_iter_is_first (ClutterModelIter *iter)
{
- ClutterModelIterClass *klass;
-
g_return_val_if_fail (CLUTTER_IS_MODEL_ITER (iter), FALSE);
- klass = CLUTTER_MODEL_ITER_GET_CLASS (iter);
- if (klass && klass->is_first)
- return klass->is_first (iter);
-
- return FALSE;
+ return CLUTTER_MODEL_ITER_GET_CLASS (iter)->is_first (iter);
}
/**
@@ -2295,15 +2285,9 @@ clutter_model_iter_is_first (ClutterModelIter *iter)
gboolean
clutter_model_iter_is_last (ClutterModelIter *iter)
{
- ClutterModelIterClass *klass;
-
g_return_val_if_fail (CLUTTER_IS_MODEL_ITER (iter), FALSE);
- klass = CLUTTER_MODEL_ITER_GET_CLASS (iter);
- if (klass && klass->is_last)
- return klass->is_last (iter);
-
- return FALSE;
+ return CLUTTER_MODEL_ITER_GET_CLASS (iter)->is_last (iter);
}
/**
@@ -2322,15 +2306,9 @@ clutter_model_iter_is_last (ClutterModelIter *iter)
ClutterModelIter *
clutter_model_iter_next (ClutterModelIter *iter)
{
- ClutterModelIterClass *klass;
-
g_return_val_if_fail (CLUTTER_IS_MODEL_ITER (iter), NULL);
- klass = CLUTTER_MODEL_ITER_GET_CLASS (iter);
- if (klass && klass->next)
- return klass->next (iter);
-
- return NULL;
+ return CLUTTER_MODEL_ITER_GET_CLASS (iter)->next (iter);
}
/**
@@ -2349,15 +2327,9 @@ clutter_model_iter_next (ClutterModelIter *iter)
ClutterModelIter *
clutter_model_iter_prev (ClutterModelIter *iter)
{
- ClutterModelIterClass *klass;
-
g_return_val_if_fail (CLUTTER_IS_MODEL_ITER (iter), NULL);
- klass = CLUTTER_MODEL_ITER_GET_CLASS (iter);
- if (klass && klass->prev)
- return klass->prev (iter);
-
- return NULL;
+ return CLUTTER_MODEL_ITER_GET_CLASS (iter)->prev (iter);
}
/**
@@ -2373,15 +2345,9 @@ clutter_model_iter_prev (ClutterModelIter *iter)
ClutterModel *
clutter_model_iter_get_model (ClutterModelIter *iter)
{
- ClutterModelIterClass *klass;
-
g_return_val_if_fail (CLUTTER_IS_MODEL_ITER (iter), NULL);
- klass = CLUTTER_MODEL_ITER_GET_CLASS (iter);
- if (klass && klass->get_model)
- return klass->get_model (iter);
-
- return NULL;
+ return CLUTTER_MODEL_ITER_GET_CLASS (iter)->get_model (iter);
}
/**
@@ -2397,15 +2363,9 @@ clutter_model_iter_get_model (ClutterModelIter *iter)
guint
clutter_model_iter_get_row (ClutterModelIter *iter)
{
- ClutterModelIterClass *klass;
-
g_return_val_if_fail (CLUTTER_IS_MODEL_ITER (iter), 0);
- klass = CLUTTER_MODEL_ITER_GET_CLASS (iter);
- if (klass && klass->get_row)
- return klass->get_row (iter);
-
- return 0;
+ return CLUTTER_MODEL_ITER_GET_CLASS (iter)->get_row (iter);
}
/**
@@ -2421,13 +2381,7 @@ clutter_model_iter_get_row (ClutterModelIter *iter)
ClutterModelIter *
clutter_model_iter_copy (ClutterModelIter *iter)
{
- ClutterModelIterClass *klass;
-
g_return_val_if_fail (CLUTTER_IS_MODEL_ITER (iter), NULL);
- klass = CLUTTER_MODEL_ITER_GET_CLASS (iter);
- if (klass->copy)
- return klass->copy (iter);
-
- return NULL;
+ return CLUTTER_MODEL_ITER_GET_CLASS (iter)->copy (iter);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]