[gnumeric] Deps: more code cleanups.



commit 1418c04b0f50658e4f06542562386fc88a4d4be8
Author: Morten Welinder <terra gnome org>
Date:   Tue Feb 5 11:31:55 2013 -0500

    Deps: more code cleanups.

 ChangeLog         |    7 ++++
 src/dependent.c   |   96 +++++++++++++++++++++++++++-------------------------
 src/dependent.h   |    3 ++
 src/sheet-style.c |    8 ++--
 4 files changed, 64 insertions(+), 50 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index f066b1e..a312542 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2013-02-05  Morten Welinder  <terra gnome org>
+
+	* src/dependent.h (GnmDependentClass): Add pos handler.
+
+	* src/dependent.c (dependent_pos): Use pos handler.
+	(dummy_dep_eval): New null handler for GnmDependentClass::eval.
+
 2013-02-04  Morten Welinder  <terra gnome org>
 
 	* src/dependent.c (dependent_pos): Make global.
diff --git a/src/dependent.c b/src/dependent.c
index c420aae..a64dae9 100644
--- a/src/dependent.c
+++ b/src/dependent.c
@@ -231,62 +231,72 @@ gnm_dep_unlink_undo_new (GSList *deps)
 
 #undef DEBUG_EVALUATION
 
-static void cell_dep_eval	   (GnmDependent *dep);
-static void cell_dep_set_expr	   (GnmDependent *dep, GnmExprTop const *new_texpr);
-static GSList *cell_dep_changed	   (GnmDependent *dep);
-static void cell_dep_debug_name    (GnmDependent const *dep, GString *target);
-static void dynamic_dep_eval	   (GnmDependent *dep);
-static GSList *dynamic_dep_changed (GnmDependent *dep);
-static void dynamic_dep_debug_name (GnmDependent const *dep, GString *target);
-static void name_dep_eval	   (GnmDependent *dep);
-static void name_dep_debug_name	   (GnmDependent const *dep, GString *target);
-static void managed_dep_eval	   (GnmDependent *dep);
-static void managed_dep_debug_name (GnmDependent const *dep, GString *target);
+static void
+dummy_dep_eval (G_GNUC_UNUSED GnmDependent *dep)
+{
+}
 
-static GPtrArray *dep_classes = NULL;
-static GnmDependentClass cell_dep_class = {
+static void cell_dep_eval (GnmDependent *dep);
+static void cell_dep_set_expr (GnmDependent *dep, GnmExprTop const *new_texpr);
+static GSList *cell_dep_changed (GnmDependent *dep);
+static GnmCellPos const *cell_dep_pos (GnmDependent const *dep);
+static void cell_dep_debug_name (GnmDependent const *dep, GString *target);
+static const GnmDependentClass cell_dep_class = {
 	cell_dep_eval,
 	cell_dep_set_expr,
 	cell_dep_changed,
+	cell_dep_pos,
 	cell_dep_debug_name,
 };
-static GnmDependentClass dynamic_dep_class = {
-	dynamic_dep_eval,
+
+static GSList *dynamic_dep_changed (GnmDependent *dep);
+static void dynamic_dep_debug_name (GnmDependent const *dep, GString *target);
+static const GnmDependentClass dynamic_dep_class = {
+	dummy_dep_eval,
 	NULL,
 	dynamic_dep_changed,
+	NULL,
 	dynamic_dep_debug_name,
 };
-static GnmDependentClass name_dep_class = {
-	name_dep_eval,
+typedef struct {
+	GnmDependent base;
+	GnmDependent *container;
+	GSList *ranges;
+	GSList *singles;
+} DynamicDep;
+
+static void name_dep_debug_name (GnmDependent const *dep, GString *target);
+static const GnmDependentClass name_dep_class = {
+	dummy_dep_eval,
+	NULL,
 	NULL,
 	NULL,
 	name_dep_debug_name,
 };
-static GnmDependentClass managed_dep_class = {
-	managed_dep_eval,
+
+static void managed_dep_debug_name (GnmDependent const *dep, GString *target);
+static const GnmDependentClass managed_dep_class = {
+	dummy_dep_eval,
+	NULL,
 	NULL,
 	NULL,
 	managed_dep_debug_name,
 };
-typedef struct {
-	GnmDependent  base;
-	GnmDependent *container;
-	GSList    *ranges;
-	GSList    *singles;
-} DynamicDep;
+
+static GPtrArray *dep_classes = NULL;
 
 void
 dependent_types_init (void)
 {
 	g_return_if_fail (dep_classes == NULL);
 
-	/* Init with a trio of NULL classes so we can access directly */
+	/* Init with a NULL class so we can access directly */
 	dep_classes = g_ptr_array_new ();
 	g_ptr_array_add	(dep_classes, NULL); /* bogus filler */
-	g_ptr_array_add	(dep_classes, &cell_dep_class);
-	g_ptr_array_add	(dep_classes, &dynamic_dep_class);
-	g_ptr_array_add	(dep_classes, &name_dep_class);
-	g_ptr_array_add	(dep_classes, &managed_dep_class);
+	g_ptr_array_add	(dep_classes, (gpointer)&cell_dep_class);
+	g_ptr_array_add	(dep_classes, (gpointer)&dynamic_dep_class);
+	g_ptr_array_add	(dep_classes, (gpointer)&name_dep_class);
+	g_ptr_array_add	(dep_classes, (gpointer)&managed_dep_class);
 
 #if USE_POOLS
 	micro_few_pool =
@@ -402,7 +412,10 @@ GnmCellPos const *
 dependent_pos (GnmDependent const *dep)
 {
 	static GnmCellPos const dummy = { 0, 0 };
-	return dependent_is_cell (dep) ? &GNM_DEP_TO_CELL (dep)->pos : &dummy;
+	int const t = dependent_type (dep);
+	GnmDependentClass *klass = g_ptr_array_index (dep_classes, t);
+
+	return klass->pos ? klass->pos (dep) : &dummy;
 }
 
 
@@ -1183,6 +1196,12 @@ cell_dep_changed (GnmDependent *dep)
 	return work;
 }
 
+static GnmCellPos const *
+cell_dep_pos (GnmDependent const *dep)
+{
+	return &GNM_DEP_TO_CELL (dep)->pos;
+}
+
 static void
 cell_dep_debug_name (GnmDependent const *dep, GString *target)
 {
@@ -1246,11 +1265,6 @@ dependent_managed_set_sheet (GnmDependent *dep, Sheet *sheet)
 }
 
 static void
-managed_dep_eval (G_GNUC_UNUSED GnmDependent *dep)
-{
-}
-
-static void
 managed_dep_debug_name (GnmDependent const *dep, GString *target)
 {
 	g_string_append_printf (target, "Managed%p", (void *)dep);
@@ -1259,11 +1273,6 @@ managed_dep_debug_name (GnmDependent const *dep, GString *target)
 /*****************************************************************************/
 
 static void
-name_dep_eval (G_GNUC_UNUSED GnmDependent *dep)
-{
-}
-
-static void
 name_dep_debug_name (GnmDependent const *dep, GString *target)
 {
 	g_string_append_printf (target, "Name%p", (void *)dep);
@@ -1271,11 +1280,6 @@ name_dep_debug_name (GnmDependent const *dep, GString *target)
 
 /*****************************************************************************/
 
-static void
-dynamic_dep_eval (G_GNUC_UNUSED GnmDependent *dep)
-{
-}
-
 static GSList *
 dynamic_dep_changed (GnmDependent *dep)
 {
diff --git a/src/dependent.h b/src/dependent.h
index 69e01db..aa150ff 100644
--- a/src/dependent.h
+++ b/src/dependent.h
@@ -20,6 +20,7 @@ typedef struct {
 	void (*eval)	   (GnmDependent *dep);
 	void (*set_expr)   (GnmDependent *dep, GnmExprTop const *new_texpr);
 	GSList* (*changed) (GnmDependent *dep);
+	GnmCellPos const* (*pos) (GnmDependent const *dep);
 	void (*debug_name) (GnmDependent const *dep, GString *target);
 } GnmDependentClass;
 
@@ -139,6 +140,8 @@ t ## _get_dep_type (void)					\
 		static GnmDependentClass klass;			\
 		klass.eval	 = &t ## _eval;			\
 		klass.set_expr	 = set_expr_handler;		\
+		klass.changed	 = NULL;			\
+		klass.pos	 = NULL;			\
 		klass.debug_name = &t ## _debug_name;		\
 		type = dependent_type_register (&klass);	\
 	}							\
diff --git a/src/sheet-style.c b/src/sheet-style.c
index 990d6ee..1a53baf 100644
--- a/src/sheet-style.c
+++ b/src/sheet-style.c
@@ -536,8 +536,8 @@ cell_tile_matrix_set (CellTile *t, GnmRange const *indic, ReplacementStyle *rs)
 
 	switch (t->type) {
 	case TILE_SIMPLE :
-		gnm_style_link_multiple (tmp = t->style_simple.style[0],
-				     i = TILE_SIZE_COL * TILE_SIZE_ROW);
+		i = TILE_SIZE_COL * TILE_SIZE_ROW;
+		gnm_style_link_multiple (tmp = t->style_simple.style[0], i);
 		while (--i >= 0)
 			res->style[i] = tmp;
 		break;
@@ -546,12 +546,12 @@ cell_tile_matrix_set (CellTile *t, GnmRange const *indic, ReplacementStyle *rs)
 		for (i = r = 0 ; r < TILE_SIZE_ROW ; ++r)
 			for (c = 0 ; c < TILE_SIZE_COL ; ++c)
 				gnm_style_link (res->style[i++] =
-					     t->style_col.style[c]);
+						t->style_col.style[c]);
 		break;
 	case TILE_ROW :
 		for (i = r = 0 ; r < TILE_SIZE_ROW ; ++r) {
 			gnm_style_link_multiple (tmp = t->style_row.style[r],
-					      TILE_SIZE_COL);
+						 TILE_SIZE_COL);
 			for (c = 0 ; c < TILE_SIZE_COL ; ++c)
 				res->style[i++] = tmp;
 		}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]