[gnumeric] Deps: more code cleanups.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] Deps: more code cleanups.
- Date: Tue, 5 Feb 2013 16:32:31 +0000 (UTC)
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]