[gnumeric] deps: cleanup.



commit 91a1f518073930404635008b301b038442b41893
Author: Morten Welinder <terra gnome org>
Date:   Sat Oct 31 19:56:49 2009 -0400

    deps: cleanup.

 ChangeLog                 |    3 +++
 src/dependent.c           |   24 ++++++++++++++++--------
 src/dependent.h           |    9 ++-------
 src/solver.h              |    4 ++--
 src/tools/solver/solver.c |   10 +++++-----
 5 files changed, 28 insertions(+), 22 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index eec8850..492c22f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2009-10-31  Morten Welinder  <terra gnome org>
 
+	* src/dependent.c (dependent_managed_init,
+	dependent_managed_set_expr): New functions.
+
 	* src/value.c (value_new_cellrange_parsepos_str): Use the right
 	convensions.  Add flags argument for finer control.  All callers
 	changed.
diff --git a/src/dependent.c b/src/dependent.c
index d6bb8a2..93730e0 100644
--- a/src/dependent.c
+++ b/src/dependent.c
@@ -1240,22 +1240,30 @@ workbook_unlink_3d_dep (GnmDependent *dep)
 }
 
 /*****************************************************************************/
+/*
+ * "Managed" dependent handling.
+ *
+ * A managed dependent is simply an expression set up to be maintained by
+ * the dependency system so it follows row/column insert/delete nicely.
+ *
+ * The expression being managed is typically a cell range, but can be any
+ * expression.  Everything is interpreted relative to A1 in the sheet.
+ */
 
 void
-dependent_managed_init (GnmManagedDependent *dep, Sheet *sheet)
+dependent_managed_init (GnmDependent *dep, Sheet *sheet)
 {
 	memset (dep, 0, sizeof (dep));
-	dep->base.flags = DEPENDENT_MANAGED;
-	dep->base.sheet = sheet;
+	dep->flags = DEPENDENT_MANAGED;
+	dep->sheet = sheet;
 }
 
 void
-dependent_managed_set_expr (GnmManagedDependent *dep,
-			    GnmExprTop const *texpr)
+dependent_managed_set_expr (GnmDependent *dep, GnmExprTop const *texpr)
 {
-	dependent_set_expr (&dep->base, texpr);
-	if (texpr && dep->base.sheet)
-		dependent_link (&dep->base);
+	dependent_set_expr (dep, texpr);
+	if (texpr && dep->sheet)
+		dependent_link (dep);
 }
 
 static void
diff --git a/src/dependent.h b/src/dependent.h
index 1bfee5f..ced8307 100644
--- a/src/dependent.h
+++ b/src/dependent.h
@@ -113,13 +113,8 @@ void		 gnm_dep_container_dump	(GnmDepContainer const *deps,
 void             gnm_dep_container_sanity_check (GnmDepContainer const *deps);
 void             gnm_dep_container_resize (GnmDepContainer *deps, int rows);
 
-typedef struct {
-	GnmDependent base;
-} GnmManagedDependent;
-
-void     dependent_managed_init (GnmManagedDependent *dep, Sheet *sheet);
-void     dependent_managed_set_expr (GnmManagedDependent *dep,
-				     GnmExprTop const *texpr);
+void dependent_managed_init (GnmDependent *dep, Sheet *sheet);
+void dependent_managed_set_expr (GnmDependent *dep, GnmExprTop const *texpr);
 
 #define DEPENDENT_CONTAINER_FOREACH_DEPENDENT(dc, dep, code)	\
   do {								\
diff --git a/src/solver.h b/src/solver.h
index 49a98ed..acb3257 100644
--- a/src/solver.h
+++ b/src/solver.h
@@ -70,10 +70,10 @@ typedef struct {
 	SolverConstraintType type;
 
 	/* Must be a range.  */
-	GnmManagedDependent lhs;
+	GnmDependent lhs;
 
 	/* Must be a constant or a range.  */
-	GnmManagedDependent rhs;
+	GnmDependent rhs;
 } SolverConstraint;
 
 #ifdef GNM_ENABLE_SOLVER
diff --git a/src/tools/solver/solver.c b/src/tools/solver/solver.c
index d2c3a1e..dce5e0e 100644
--- a/src/tools/solver/solver.c
+++ b/src/tools/solver/solver.c
@@ -311,8 +311,8 @@ gnm_solver_constraint_dup (SolverConstraint *c, Sheet *sheet)
 {
 	SolverConstraint *res = gnm_solver_constraint_new (sheet);
 	res->type = c->type;
-	dependent_managed_set_expr (&res->lhs, res->lhs.base.texpr);
-	dependent_managed_set_expr (&res->rhs, res->lhs.base.texpr);
+	dependent_managed_set_expr (&res->lhs, res->lhs.texpr);
+	dependent_managed_set_expr (&res->rhs, res->lhs.texpr);
 	return res;
 }
 
@@ -389,7 +389,7 @@ gnm_solver_constraint_get_size (SolverConstraint const *c)
 GnmValue const *
 gnm_solver_constraint_get_lhs (SolverConstraint const *c)
 {
-	GnmExprTop const *texpr = c->lhs.base.texpr;
+	GnmExprTop const *texpr = c->lhs.texpr;
 	return texpr ? gnm_expr_top_get_constant (texpr) : NULL;
 }
 
@@ -405,7 +405,7 @@ gnm_solver_constraint_set_lhs (SolverConstraint *c, GnmValue *v)
 GnmValue const *
 gnm_solver_constraint_get_rhs (SolverConstraint const *c)
 {
-	GnmExprTop const *texpr = c->rhs.base.texpr;
+	GnmExprTop const *texpr = c->rhs.texpr;
 	return texpr ? gnm_expr_top_get_constant (texpr) : NULL;
 }
 
@@ -548,7 +548,7 @@ gnm_solver_constraint_side_as_str (SolverConstraint const *c,
 {
 	GnmExprTop const *texpr;
 
-	texpr = lhs ? c->lhs.base.texpr : c->rhs.base.texpr;
+	texpr = lhs ? c->lhs.texpr : c->rhs.texpr;
 	if (texpr) {
 		GnmConventionsOut out;
 		GnmParsePos pp;



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