[gnumeric] We need to give a scope to function placeholders (why?)



commit 3802ae3ea9dfc08fbb18296d0bc2485701ecae47
Author: Andreas J. Guelzow <aguelzow pyrshep ca>
Date:   Thu Jun 18 22:21:03 2009 -0600

    We need to give a scope to function placeholders (why?)
    
    2009-06-18 Andreas J. Guelzow <aguelzow pyrshep ca>
    
    	* *.c In all files in this directory where we use
    	  gnm_func_lookup_or_add_placeholder we need to pass the
    	  appropriate workbook as scope to avoid leaks and warnings.

 src/tools/ChangeLog                |    6 +
 src/tools/analysis-anova.c         |   41 ++++----
 src/tools/analysis-chi-squared.c   |   16 ++--
 src/tools/analysis-chi-squared.h   |    1 +
 src/tools/analysis-exp-smoothing.c |   63 +++++++------
 src/tools/analysis-frequency.c     |   15 ++--
 src/tools/analysis-histogram.c     |   20 ++--
 src/tools/analysis-kaplan-meier.c  |   15 ++--
 src/tools/analysis-tools.c         |  178 ++++++++++++++++++------------------
 9 files changed, 184 insertions(+), 171 deletions(-)
---
diff --git a/src/tools/ChangeLog b/src/tools/ChangeLog
index 7f4d350..1702ce1 100644
--- a/src/tools/ChangeLog
+++ b/src/tools/ChangeLog
@@ -1,5 +1,11 @@
 2009-06-18 Andreas J. Guelzow <aguelzow pyrshep ca>
 
+	* *.c In all files in this directory where we use 
+	  gnm_func_lookup_or_add_placeholder we need to pass the 
+	  appropriate workbook as scope to avoid leaks and warnings.
+
+2009-06-18 Andreas J. Guelzow <aguelzow pyrshep ca>
+
 	* *.c In all files in this directory replace gnm_func_lookup
 	  with gnm_func_lookup_or_add_placeholder to avoid crashes
 	  when plugins are not loaded.
diff --git a/src/tools/analysis-anova.c b/src/tools/analysis-anova.c
index 750223c..4c15929 100644
--- a/src/tools/analysis-anova.c
+++ b/src/tools/analysis-anova.c
@@ -33,6 +33,7 @@
 #include "ranges.h"
 #include "expr.h"
 #include "func.h"
+#include "sheet.h"
 #include "numbers.h"
 #include "mstyle.h"
 #include "style-border.h"
@@ -95,25 +96,25 @@ analysis_tool_anova_two_factor_no_rep_engine_run (data_analysis_output_t *dao,
 	GnmFunc *fd_fdist;
 	GnmFunc *fd_finv;
 
-	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
+	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_index);
-	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", NULL, FALSE);
+	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_offset);
-	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
+	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_count);
-	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
+	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_sum);
-	fd_sumsq = gnm_func_lookup_or_add_placeholder ("SUMSQ", NULL, FALSE);
+	fd_sumsq = gnm_func_lookup_or_add_placeholder ("SUMSQ", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_sumsq);
-	fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
+	fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_average);
-	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", NULL, FALSE);
+	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_var);
-	fd_if = gnm_func_lookup_or_add_placeholder ("IF", NULL, FALSE);
+	fd_if = gnm_func_lookup_or_add_placeholder ("IF", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_if);
-	fd_fdist = gnm_func_lookup_or_add_placeholder ("FDIST", NULL, FALSE);
+	fd_fdist = gnm_func_lookup_or_add_placeholder ("FDIST", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_fdist);
-	fd_finv = gnm_func_lookup_or_add_placeholder ("FINV", NULL, FALSE);
+	fd_finv = gnm_func_lookup_or_add_placeholder ("FINV", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_finv);
 
 	dao_set_merge (dao, 0, 0, 4, 0);
@@ -433,25 +434,25 @@ analysis_tool_anova_two_factor_engine_run (data_analysis_output_t *dao,
 	GnmFunc *fd_fdist;
 	GnmFunc *fd_finv;
 
-	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
+	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_index);
-	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", NULL, FALSE);
+	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_offset);
-	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
+	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_count);
-	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
+	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_sum);
-	fd_sumsq = gnm_func_lookup_or_add_placeholder ("SUMSQ", NULL, FALSE);
+	fd_sumsq = gnm_func_lookup_or_add_placeholder ("SUMSQ", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_sumsq);
-	fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
+	fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_average);
-	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", NULL, FALSE);
+	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_var);
-	fd_if = gnm_func_lookup_or_add_placeholder ("IF", NULL, FALSE);
+	fd_if = gnm_func_lookup_or_add_placeholder ("IF", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_if);
-	fd_fdist = gnm_func_lookup_or_add_placeholder ("FDIST", NULL, FALSE);
+	fd_fdist = gnm_func_lookup_or_add_placeholder ("FDIST", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_fdist);
-	fd_finv = gnm_func_lookup_or_add_placeholder ("FINV", NULL, FALSE);
+	fd_finv = gnm_func_lookup_or_add_placeholder ("FINV", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_finv);
 
 	dao_set_merge (dao, 0, 0, 4, 0);
diff --git a/src/tools/analysis-chi-squared.c b/src/tools/analysis-chi-squared.c
index e7f8964..baa8a0c 100644
--- a/src/tools/analysis-chi-squared.c
+++ b/src/tools/analysis-chi-squared.c
@@ -60,21 +60,21 @@ analysis_tool_chi_squared_engine_run (data_analysis_output_t *dao,
 		? _("[>=5]\"Test of Independence\";[<5][Red]\"Invalid Test of Independence\"") 
 		: _("[>=5]\"Test of Homogeneity\";[<5][Red]\"Invalid Test of Homogeneity\"");
 
-	fd_mmult = gnm_func_lookup_or_add_placeholder ("MMULT", NULL, FALSE);
+	fd_mmult = gnm_func_lookup_or_add_placeholder ("MMULT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_mmult);
-	fd_row = gnm_func_lookup_or_add_placeholder ("ROW", NULL, FALSE);
+	fd_row = gnm_func_lookup_or_add_placeholder ("ROW", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_row);
-	fd_transpose = gnm_func_lookup_or_add_placeholder ("TRANSPOSE", NULL, FALSE);
+	fd_transpose = gnm_func_lookup_or_add_placeholder ("TRANSPOSE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_transpose);
-	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
+	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_sum);
-	fd_min = gnm_func_lookup_or_add_placeholder ("MIN", NULL, FALSE);
+	fd_min = gnm_func_lookup_or_add_placeholder ("MIN", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_min);
-	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", NULL, FALSE);
+	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_offset);
-	fd_chiinv = gnm_func_lookup_or_add_placeholder ("CHIINV", NULL, FALSE);
+	fd_chiinv = gnm_func_lookup_or_add_placeholder ("CHIINV", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_chiinv);
-	fd_chidist = gnm_func_lookup_or_add_placeholder ("CHIDIST", NULL, FALSE);
+	fd_chidist = gnm_func_lookup_or_add_placeholder ("CHIDIST", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_chidist);
 
 	dao_set_italic (dao, 0, 1, 0, 4);
diff --git a/src/tools/analysis-chi-squared.h b/src/tools/analysis-chi-squared.h
index 86f541b..75b42b9 100644
--- a/src/tools/analysis-chi-squared.h
+++ b/src/tools/analysis-chi-squared.h
@@ -32,6 +32,7 @@
 #include "dao.h"
 #include "tools.h"
 #include "analysis-tools.h"
+#include "sheet.h"
 
 typedef struct {
 	WorkbookControl *wbc;
diff --git a/src/tools/analysis-exp-smoothing.c b/src/tools/analysis-exp-smoothing.c
index 64325d6..93eeb84 100644
--- a/src/tools/analysis-exp-smoothing.c
+++ b/src/tools/analysis-exp-smoothing.c
@@ -38,6 +38,7 @@
 #include "numbers.h"
 #include "sheet-object-graph.h"
 #include <goffice/goffice.h>
+#include "sheet.h"
 
 
 static GnmExpr const *
@@ -94,15 +95,15 @@ analysis_tool_exponential_smoothing_engine_ses_h_run (data_analysis_output_t *da
 	GnmExpr const *expr_alpha = NULL;
 
 	if (info->std_error_flag) {
-		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
+		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_sqrt);		
-		fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2", NULL, FALSE);
+		fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_sumxmy2);		
 	}
 
-	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
+	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_index);		
-	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", NULL, FALSE);
+	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_offset);
 
 	if (info->show_graph)
@@ -268,16 +269,16 @@ analysis_tool_exponential_smoothing_engine_ses_r_run (data_analysis_output_t *da
 	GnmExpr const *expr_alpha = NULL;
 
 	if (info->std_error_flag) {
-		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
+		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_sqrt);		
-		fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2", NULL, FALSE);
+		fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_sumxmy2);		
 	}
-	fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
+	fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_average);				
-	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
+	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_index);		
-	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", NULL, FALSE);
+	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_offset);
 
 	if (info->show_graph)
@@ -449,17 +450,17 @@ analysis_tool_exponential_smoothing_engine_des_run (data_analysis_output_t *dao,
 	GnmExpr const *expr_gamma = NULL;
 
 	if (info->std_error_flag) {
-		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
+		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_sqrt);		
-		fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2", NULL, FALSE);
+		fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_sumxmy2);		
 	}
 		
-	fd_linest = gnm_func_lookup_or_add_placeholder ("LINEST", NULL, FALSE);
+	fd_linest = gnm_func_lookup_or_add_placeholder ("LINEST", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_linest);				
-	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
+	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_index);		
-	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", NULL, FALSE);
+	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_offset);
 
 	if (info->show_graph)
@@ -683,23 +684,23 @@ analysis_tool_exponential_smoothing_engine_ates_run (data_analysis_output_t *dao
 	GnmExpr const *expr_delta = NULL;
 
 	if (info->std_error_flag) {
-		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
+		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_sqrt);		
-		fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2", NULL, FALSE);
+		fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_sumxmy2);		
 	}
 		
-	fd_linest = gnm_func_lookup_or_add_placeholder ("LINEST", NULL, FALSE);
+	fd_linest = gnm_func_lookup_or_add_placeholder ("LINEST", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_linest);				
-	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
+	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_index);		
-	fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
+	fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_average);
-	fd_if = gnm_func_lookup_or_add_placeholder ("IF", NULL, FALSE);
+	fd_if = gnm_func_lookup_or_add_placeholder ("IF", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_if);
-	fd_mod = gnm_func_lookup_or_add_placeholder ("mod", NULL, FALSE);
+	fd_mod = gnm_func_lookup_or_add_placeholder ("mod", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_mod);
-	fd_row = gnm_func_lookup_or_add_placeholder ("row", NULL, FALSE);
+	fd_row = gnm_func_lookup_or_add_placeholder ("row", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_row);
 
 	if (info->show_graph)
@@ -1000,25 +1001,25 @@ analysis_tool_exponential_smoothing_engine_mtes_run (data_analysis_output_t *dao
 	GnmExpr const *expr_delta = NULL;
 
 	if (info->std_error_flag) {
-		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
+		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_sqrt);		
-		fd_sumsq = gnm_func_lookup_or_add_placeholder ("SUMSQ", NULL, FALSE);
+		fd_sumsq = gnm_func_lookup_or_add_placeholder ("SUMSQ", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_sumsq);		
 	}
 		
-	fd_linest = gnm_func_lookup_or_add_placeholder ("LINEST", NULL, FALSE);
+	fd_linest = gnm_func_lookup_or_add_placeholder ("LINEST", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_linest);				
-	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
+	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_index);		
-	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", NULL, FALSE);
+	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_offset);
-	fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
+	fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_average);
-	fd_if = gnm_func_lookup_or_add_placeholder ("IF", NULL, FALSE);
+	fd_if = gnm_func_lookup_or_add_placeholder ("IF", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_if);
-	fd_mod = gnm_func_lookup_or_add_placeholder ("mod", NULL, FALSE);
+	fd_mod = gnm_func_lookup_or_add_placeholder ("mod", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_mod);
-	fd_row = gnm_func_lookup_or_add_placeholder ("row", NULL, FALSE);
+	fd_row = gnm_func_lookup_or_add_placeholder ("row", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_row);
 
 	if (info->show_graph)
diff --git a/src/tools/analysis-frequency.c b/src/tools/analysis-frequency.c
index 4a76c61..f72fa48 100644
--- a/src/tools/analysis-frequency.c
+++ b/src/tools/analysis-frequency.c
@@ -35,6 +35,7 @@
 #include "numbers.h"
 #include "sheet-object-graph.h"
 #include <goffice/goffice.h>
+#include "sheet.h"
 
 static gboolean
 analysis_tool_frequency_engine_run (data_analysis_output_t *dao,
@@ -51,23 +52,23 @@ analysis_tool_frequency_engine_run (data_analysis_output_t *dao,
 	GnmFunc *fd_columns = NULL;
 	GnmFunc *fd_exact = NULL;
 
-	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
+	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_sum);
-	fd_if = gnm_func_lookup_or_add_placeholder ("IF", NULL, FALSE);
+	fd_if = gnm_func_lookup_or_add_placeholder ("IF", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_if);
-	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
+	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_index);
-	fd_isblank = gnm_func_lookup_or_add_placeholder ("ISBLANK", NULL, FALSE);
+	fd_isblank = gnm_func_lookup_or_add_placeholder ("ISBLANK", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_isblank);
 	
 	if (info->exact) {
-		fd_exact = gnm_func_lookup_or_add_placeholder ("EXACT", NULL, FALSE);
+		fd_exact = gnm_func_lookup_or_add_placeholder ("EXACT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_exact);
 	}
 	if (info->percentage) {
-		fd_rows = gnm_func_lookup_or_add_placeholder ("ROWS", NULL, FALSE);
+		fd_rows = gnm_func_lookup_or_add_placeholder ("ROWS", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_rows);
-		fd_columns = gnm_func_lookup_or_add_placeholder ("COLUMNS", NULL, FALSE);
+		fd_columns = gnm_func_lookup_or_add_placeholder ("COLUMNS", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_columns);
 	}
 	/* General Info */
diff --git a/src/tools/analysis-histogram.c b/src/tools/analysis-histogram.c
index e1e247a..5362c57 100644
--- a/src/tools/analysis-histogram.c
+++ b/src/tools/analysis-histogram.c
@@ -37,19 +37,21 @@
 #include "numbers.h"
 #include "sheet-object-graph.h"
 #include <goffice/goffice.h>
+#include "sheet.h"
 
 static GnmExpr const *
 make_hist_expr (analysis_tools_data_histogram_t *info,
 		int col, GnmValue *val,
-		gboolean fromminf, gboolean topinf)
+		gboolean fromminf, gboolean topinf,
+		data_analysis_output_t *dao)
 {
 	GnmExpr const *expr;
 	GnmExpr const *expr_data;
 	GnmExpr const *expr_if_to, *expr_if_from;
 	GnmExprOp from, to;
-	GnmFunc *fd_if = gnm_func_lookup_or_add_placeholder ("IF", NULL, FALSE);
-	GnmFunc *fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
-	GnmFunc *fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
+	GnmFunc *fd_if = gnm_func_lookup_or_add_placeholder ("IF", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
+	GnmFunc *fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
+	GnmFunc *fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gint to_col = (info->cumulative) ? 0 : 1;
 
 	if (info->bin_type & bintype_no_inf_lower) {
@@ -121,11 +123,11 @@ analysis_tool_histogram_engine_run (data_analysis_output_t *dao,
 
 	char const *format;
 
-	fd_small = gnm_func_lookup_or_add_placeholder ("SMALL", NULL, FALSE);
+	fd_small = gnm_func_lookup_or_add_placeholder ("SMALL", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_small);
 
 	if (info->base.labels) {
-		fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
+		fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_index);		
 	}
 	
@@ -189,7 +191,7 @@ analysis_tool_histogram_engine_run (data_analysis_output_t *dao,
 		else {
 			GnmFunc *fd_min;
 		
-			fd_min = gnm_func_lookup_or_add_placeholder ("MIN", NULL, FALSE);
+			fd_min = gnm_func_lookup_or_add_placeholder ("MIN", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 			gnm_func_ref (fd_min);
 			dao_set_cell_expr (dao, to_col, i_start,
 					   gnm_expr_new_funcall1 
@@ -203,7 +205,7 @@ analysis_tool_histogram_engine_run (data_analysis_output_t *dao,
 		else {
 			GnmFunc *fd_max;
 		
-			fd_max = gnm_func_lookup_or_add_placeholder ("MAX", NULL, FALSE);
+			fd_max = gnm_func_lookup_or_add_placeholder ("MAX", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 			gnm_func_ref (fd_max);
 			dao_set_cell_expr (dao, to_col, i_start + i_limit - 1,
 					   gnm_expr_new_funcall1 
@@ -309,7 +311,7 @@ analysis_tool_histogram_engine_run (data_analysis_output_t *dao,
 			dao_set_cell_array_expr
 				(dao, col, i,
 				 make_hist_expr (info, col, val, 
-						 fromminf, topinf));
+						 fromminf, topinf, dao));
 		}
 	}
 
diff --git a/src/tools/analysis-kaplan-meier.c b/src/tools/analysis-kaplan-meier.c
index 741b1b1..2a7549b 100644
--- a/src/tools/analysis-kaplan-meier.c
+++ b/src/tools/analysis-kaplan-meier.c
@@ -37,6 +37,7 @@
 #include "sheet-object-graph.h"
 #include "graph.h"
 #include <goffice/goffice.h>
+#include "sheet.h"
 
 static gboolean
 analysis_tool_kaplan_meier_engine_run (data_analysis_output_t *dao,
@@ -76,21 +77,21 @@ analysis_tool_kaplan_meier_engine_run (data_analysis_output_t *dao,
 
 	GSList *gl = info->group_list;
 
-	fd_small = gnm_func_lookup_or_add_placeholder ("SMALL", NULL, FALSE);
+	fd_small = gnm_func_lookup_or_add_placeholder ("SMALL", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_small);
-	fd_if = gnm_func_lookup_or_add_placeholder ("IF", NULL, FALSE);
+	fd_if = gnm_func_lookup_or_add_placeholder ("IF", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_if);
-	fd_iserror = gnm_func_lookup_or_add_placeholder ("ISERROR", NULL, FALSE);
+	fd_iserror = gnm_func_lookup_or_add_placeholder ("ISERROR", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_iserror);
-	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
+	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_sum);
 	
 	if (info->std_err) {
-		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
+		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_sqrt);
 	}
 	if (info->median) {
-		fd_min = gnm_func_lookup_or_add_placeholder ("MIN", NULL, FALSE);
+		fd_min = gnm_func_lookup_or_add_placeholder ("MIN", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_min);
 	}
 
@@ -523,7 +524,7 @@ analysis_tool_kaplan_meier_engine_run (data_analysis_output_t *dao,
 		GnmExpr const *expr_n_total = gnm_expr_new_constant (value_new_int (0));
 		GnmExpr const *expr_death_total = gnm_expr_new_constant (value_new_int (0));
 
-		fd_chidist = gnm_func_lookup_or_add_placeholder ("CHIDIST", NULL, FALSE);
+		fd_chidist = gnm_func_lookup_or_add_placeholder ("CHIDIST", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_chidist);
 
 		dao_set_italic (dao, 1, logrank_test_y_offset, 1, logrank_test_y_offset+3);
diff --git a/src/tools/analysis-tools.c b/src/tools/analysis-tools.c
index bf59d54..a4347fa 100644
--- a/src/tools/analysis-tools.c
+++ b/src/tools/analysis-tools.c
@@ -552,7 +552,7 @@ analysis_tool_table (data_analysis_output_t *dao,
 	dao_set_cell_printf (dao, 0, 0, "%s", title);
 	dao_set_italic (dao, 0, 0, 0, 0);
 
-	fd = gnm_func_lookup_or_add_placeholder (functionname, NULL, FALSE);
+	fd = gnm_func_lookup_or_add_placeholder (functionname, dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd);
 
 	for (col = 1, inputdata = info->input; inputdata != NULL;
@@ -742,29 +742,29 @@ summary_statistics (data_analysis_output_t *dao,
 	GnmFunc *fd_count;
 	GnmFunc *fd_sqrt;
 
-	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
+	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_mean);
-	fd_median = gnm_func_lookup_or_add_placeholder (info->use_ssmedian ? "SSMEDIAN" : "MEDIAN", NULL, FALSE);
+	fd_median = gnm_func_lookup_or_add_placeholder (info->use_ssmedian ? "SSMEDIAN" : "MEDIAN", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_median);
-	fd_mode = gnm_func_lookup_or_add_placeholder ("MODE", NULL, FALSE);
+	fd_mode = gnm_func_lookup_or_add_placeholder ("MODE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_mode);
-	fd_stdev = gnm_func_lookup_or_add_placeholder ("STDEV", NULL, FALSE);
+	fd_stdev = gnm_func_lookup_or_add_placeholder ("STDEV", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_stdev);
-	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", NULL, FALSE);
+	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_var);
-	fd_kurt = gnm_func_lookup_or_add_placeholder ("KURT", NULL, FALSE);
+	fd_kurt = gnm_func_lookup_or_add_placeholder ("KURT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_kurt);
-	fd_skew = gnm_func_lookup_or_add_placeholder ("SKEW", NULL, FALSE);
+	fd_skew = gnm_func_lookup_or_add_placeholder ("SKEW", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_skew);
-	fd_min = gnm_func_lookup_or_add_placeholder ("MIN", NULL, FALSE);
+	fd_min = gnm_func_lookup_or_add_placeholder ("MIN", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_min);
-	fd_max = gnm_func_lookup_or_add_placeholder ("MAX", NULL, FALSE);
+	fd_max = gnm_func_lookup_or_add_placeholder ("MAX", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_max);
-	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
+	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_sum);
-	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
+	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_count);
-	fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
+	fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_sqrt);
 
         dao_set_cell (dao, 0, 0, NULL);
@@ -920,15 +920,15 @@ confidence_level (data_analysis_output_t *dao,
 
         dao_set_cell (dao, 0, 0, NULL);
 
-	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
+	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_mean);
-	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", NULL, FALSE);
+	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_var);
-	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
+	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_count);
-	fd_tinv = gnm_func_lookup_or_add_placeholder ("TINV", NULL, FALSE);
+	fd_tinv = gnm_func_lookup_or_add_placeholder ("TINV", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_tinv);
-	fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
+	fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_sqrt);
 
 
@@ -995,7 +995,7 @@ kth_smallest_largest (data_analysis_output_t *dao,
 {
         guint col;
 	GSList *data = info->base.input;
-	GnmFunc *fd = gnm_func_lookup_or_add_placeholder (func, NULL, FALSE);
+	GnmFunc *fd = gnm_func_lookup_or_add_placeholder (func, dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd);
 
         dao_set_cell_printf (dao, 0, 1, label, k);
@@ -1116,11 +1116,11 @@ analysis_tool_sampling_engine_run (data_analysis_output_t *dao,
 	gint source;
 
 	if (info->base.labels || info->periodic) {
-		fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
+		fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_index);		
 	}
 	if (!info->periodic) {
-		fd_randdiscrete = gnm_func_lookup_or_add_placeholder ("RANDDISCRETE", NULL, FALSE);
+		fd_randdiscrete = gnm_func_lookup_or_add_placeholder ("RANDDISCRETE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_randdiscrete);				
 	}
 
@@ -1343,17 +1343,17 @@ analysis_tool_ztest_engine_run (data_analysis_output_t *dao,
 					"/P (Z<=z) two-tail"
 					"/z Critical two-tail"));
 
-	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
+	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_mean);
-	fd_normsdist = gnm_func_lookup_or_add_placeholder ("NORMSDIST", NULL, FALSE);
+	fd_normsdist = gnm_func_lookup_or_add_placeholder ("NORMSDIST", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_normsdist);
-	fd_abs = gnm_func_lookup_or_add_placeholder ("ABS", NULL, FALSE);
+	fd_abs = gnm_func_lookup_or_add_placeholder ("ABS", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_abs);
-	fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
+	fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_sqrt);
-	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
+	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_count);
-	fd_normsinv = gnm_func_lookup_or_add_placeholder ("NORMSINV", NULL, FALSE);
+	fd_normsinv = gnm_func_lookup_or_add_placeholder ("NORMSINV", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_normsinv);
 
 	val_1 = value_dup (info->base.range_1);
@@ -1597,27 +1597,27 @@ analysis_tool_ttest_paired_engine_run (data_analysis_output_t *dao,
 					"/P (T<=t) two-tail"
 					"/t Critical two-tail"));
 
-	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
+	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_mean);
-	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", NULL, FALSE);
+	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_var);
-	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
+	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_count);
-	fd_correl = gnm_func_lookup_or_add_placeholder ("CORREL", NULL, FALSE);
+	fd_correl = gnm_func_lookup_or_add_placeholder ("CORREL", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_correl);
-	fd_tinv = gnm_func_lookup_or_add_placeholder ("TINV", NULL, FALSE);
+	fd_tinv = gnm_func_lookup_or_add_placeholder ("TINV", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_tinv);
-	fd_tdist = gnm_func_lookup_or_add_placeholder ("TDIST", NULL, FALSE);
+	fd_tdist = gnm_func_lookup_or_add_placeholder ("TDIST", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_tdist);
-	fd_abs = gnm_func_lookup_or_add_placeholder ("ABS", NULL, FALSE);
+	fd_abs = gnm_func_lookup_or_add_placeholder ("ABS", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_abs);
-	fd_isodd = gnm_func_lookup_or_add_placeholder ("ISODD", NULL, FALSE);
+	fd_isodd = gnm_func_lookup_or_add_placeholder ("ISODD", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_isodd);
-	fd_isnumber = gnm_func_lookup_or_add_placeholder ("ISNUMBER", NULL, FALSE);
+	fd_isnumber = gnm_func_lookup_or_add_placeholder ("ISNUMBER", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_isnumber);
-	fd_if = gnm_func_lookup_or_add_placeholder ("IF", NULL, FALSE);
+	fd_if = gnm_func_lookup_or_add_placeholder ("IF", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_if);
-	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
+	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_sum);
 
 	val_1 = value_dup (info->base.range_1);
@@ -1879,17 +1879,17 @@ analysis_tool_ttest_eqvar_engine_run (data_analysis_output_t *dao,
 	val_1 = value_dup (info->base.range_1);
 	val_2 = value_dup (info->base.range_2);
 
-	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
+	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_mean);
-	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
+	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_count);
-	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", NULL, FALSE);
+	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_var);
-	fd_tdist = gnm_func_lookup_or_add_placeholder ("TDIST", NULL, FALSE);
+	fd_tdist = gnm_func_lookup_or_add_placeholder ("TDIST", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_tdist);
-	fd_abs = gnm_func_lookup_or_add_placeholder ("ABS", NULL, FALSE);
+	fd_abs = gnm_func_lookup_or_add_placeholder ("ABS", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_abs);
-	fd_tinv = gnm_func_lookup_or_add_placeholder ("TINV", NULL, FALSE);
+	fd_tinv = gnm_func_lookup_or_add_placeholder ("TINV", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_tinv);
 
 	/* Labels */
@@ -2175,17 +2175,17 @@ analysis_tool_ttest_neqvar_engine_run (data_analysis_output_t *dao,
 	val_1 = value_dup (info->base.range_1);
 	val_2 = value_dup (info->base.range_2);
 
-	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
+	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_mean);
-	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", NULL, FALSE);
+	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_var);
-	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
+	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_count);
-	fd_tdist = gnm_func_lookup_or_add_placeholder ("TDIST", NULL, FALSE);
+	fd_tdist = gnm_func_lookup_or_add_placeholder ("TDIST", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_tdist);
-	fd_abs = gnm_func_lookup_or_add_placeholder ("ABS", NULL, FALSE);
+	fd_abs = gnm_func_lookup_or_add_placeholder ("ABS", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_abs);
-	fd_tinv = gnm_func_lookup_or_add_placeholder ("TINV", NULL, FALSE);
+	fd_tinv = gnm_func_lookup_or_add_placeholder ("TINV", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_tinv);
 
 	/* Labels */
@@ -2452,7 +2452,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
 
 	GnmFunc *fd_finv;
 
-	fd_finv = gnm_func_lookup_or_add_placeholder ("FINV", NULL, FALSE);
+	fd_finv = gnm_func_lookup_or_add_placeholder ("FINV", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_finv);
 
 	dao_set_cell (dao, 0, 0, _("F-Test"));
@@ -2477,7 +2477,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
 
 	/* Mean */
 	{
-		GnmFunc *fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
+		GnmFunc *fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_mean);
 
 		dao_set_cell_expr
@@ -2497,7 +2497,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
 
 	/* Variance */
 	{
-		GnmFunc *fd_var = gnm_func_lookup_or_add_placeholder ("VAR", NULL, FALSE);
+		GnmFunc *fd_var = gnm_func_lookup_or_add_placeholder ("VAR", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_var);
 
 		dao_set_cell_expr
@@ -2516,7 +2516,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
 
         /* Count */
 	{
-		GnmFunc *fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
+		GnmFunc *fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_count);
 
 		dao_set_cell_expr
@@ -2560,7 +2560,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
 
 	/* P right-tail */
 	{
-		GnmFunc *fd_fdist = gnm_func_lookup_or_add_placeholder ("FDIST", NULL, FALSE);
+		GnmFunc *fd_fdist = gnm_func_lookup_or_add_placeholder ("FDIST", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		const GnmExpr *arg3;
 
 		gnm_func_ref (fd_fdist);
@@ -2635,7 +2635,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
 
 	/* P two-tail */
 	{
-		GnmFunc *fd_min = gnm_func_lookup_or_add_placeholder ("MIN", NULL, FALSE);;
+		GnmFunc *fd_min = gnm_func_lookup_or_add_placeholder ("MIN", dao->sheet ? dao->sheet->workbook : NULL, FALSE);;
 
 		gnm_func_ref (fd_min);
 
@@ -2807,28 +2807,28 @@ analysis_tool_regression_engine_run (data_analysis_output_t *dao,
 	char const *label = ((info->group_by == GROUPED_BY_ROW) ? _("Row") 
 			     : _("Column"));
 
-	fd_linest = gnm_func_lookup_or_add_placeholder ("LINEST", NULL, FALSE);
+	fd_linest = gnm_func_lookup_or_add_placeholder ("LINEST", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_linest);
-	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
+	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_index);
-	fd_fdist = gnm_func_lookup_or_add_placeholder ("FDIST", NULL, FALSE);
+	fd_fdist = gnm_func_lookup_or_add_placeholder ("FDIST", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_fdist);
-	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
+	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_sum);
-	fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
+	fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_sqrt);
-	fd_tdist = gnm_func_lookup_or_add_placeholder ("TDIST", NULL, FALSE);
+	fd_tdist = gnm_func_lookup_or_add_placeholder ("TDIST", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_tdist);
-	fd_tinv = gnm_func_lookup_or_add_placeholder ("TINV", NULL, FALSE);
+	fd_tinv = gnm_func_lookup_or_add_placeholder ("TINV", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_tinv);
-	fd_transpose = gnm_func_lookup_or_add_placeholder ("TRANSPOSE", NULL, FALSE);
+	fd_transpose = gnm_func_lookup_or_add_placeholder ("TRANSPOSE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_transpose);
 	if (!info->base.labels) {
-		fd_concatenate = gnm_func_lookup_or_add_placeholder ("CONCATENATE", NULL, FALSE);
+		fd_concatenate = gnm_func_lookup_or_add_placeholder ("CONCATENATE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_concatenate);
-		fd_cell = gnm_func_lookup_or_add_placeholder ("CELL", NULL, FALSE);
+		fd_cell = gnm_func_lookup_or_add_placeholder ("CELL", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_cell);
-		fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", NULL, FALSE);
+		fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_offset);
 	}
 
@@ -3334,22 +3334,22 @@ analysis_tool_moving_average_engine_run (data_analysis_output_t *dao,
 	GogPlot	     *plot = NULL;
 
 	if (info->base.labels) {
-		fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
+		fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_index);		
 	}
 	if (info->std_error_flag) {
-		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
+		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_sqrt);		
-		fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2", NULL, FALSE);
+		fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_sumxmy2);		
 	}
 	if (moving_average_type_wma == info->ma_type || moving_average_type_spencer_ma == info->ma_type) {
-		fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
+		fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 		gnm_func_ref (fd_sum);		
 	}
-	fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
+	fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_average);	
-	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", NULL, FALSE);
+	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_offset);
 
 	if (info->show_graph) {
@@ -3679,15 +3679,15 @@ analysis_tool_ranking_engine_run (data_analysis_output_t *dao,
 	GnmFunc *fd_match;
 	GnmFunc *fd_percentrank;
 
-	fd_large = gnm_func_lookup_or_add_placeholder ("LARGE", NULL, FALSE);
+	fd_large = gnm_func_lookup_or_add_placeholder ("LARGE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_large);
-	fd_row = gnm_func_lookup_or_add_placeholder ("ROW", NULL, FALSE);
+	fd_row = gnm_func_lookup_or_add_placeholder ("ROW", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_row);
-	fd_rank = gnm_func_lookup_or_add_placeholder ("RANK", NULL, FALSE);
+	fd_rank = gnm_func_lookup_or_add_placeholder ("RANK", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_rank);
-	fd_match = gnm_func_lookup_or_add_placeholder ("MATCH", NULL, FALSE);
+	fd_match = gnm_func_lookup_or_add_placeholder ("MATCH", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_match);
-	fd_percentrank = gnm_func_lookup_or_add_placeholder ("PERCENTRANK", NULL, FALSE);
+	fd_percentrank = gnm_func_lookup_or_add_placeholder ("PERCENTRANK", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_percentrank);
 
 	dao_set_merge (dao, 0, 0, 1, 0);
@@ -3736,7 +3736,7 @@ analysis_tool_ranking_engine_run (data_analysis_output_t *dao,
 			GnmExpr const *expr_rows_p_one;
 			GnmExpr const *expr_rows;
 			GnmFunc *fd_count;
-			fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
+			fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 			gnm_func_ref (fd_count);
 			
 			expr_rows = gnm_expr_new_funcall1 
@@ -3853,15 +3853,15 @@ analysis_tool_anova_single_engine_run (data_analysis_output_t *dao, gpointer spe
 					"/Variance"));
 	dao_set_italic (dao, 0, 3, 4, 3);
 
-	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
+	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_mean);
-	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", NULL, FALSE);
+	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_var);
-	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
+	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_sum);
-	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
+	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_count);
-	fd_devsq = gnm_func_lookup_or_add_placeholder ("DEVSQ", NULL, FALSE);
+	fd_devsq = gnm_func_lookup_or_add_placeholder ("DEVSQ", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_devsq);
 
 	dao->offset_row += 4;
@@ -4069,7 +4069,7 @@ analysis_tool_anova_single_engine_run (data_analysis_output_t *dao, gpointer spe
 				arg3 = gnm_expr_copy (expr_wdof);
 			}
 
-			fd_fdist = gnm_func_lookup_or_add_placeholder ("FDIST", NULL, FALSE);
+			fd_fdist = gnm_func_lookup_or_add_placeholder ("FDIST", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 			gnm_func_ref (fd_fdist);
 
 			dao_set_cell_expr
@@ -4091,7 +4091,7 @@ analysis_tool_anova_single_engine_run (data_analysis_output_t *dao, gpointer spe
 			} else
 				arg3 = expr_wdof;
 
-			fd_finv = gnm_func_lookup_or_add_placeholder ("FINV", NULL, FALSE);
+			fd_finv = gnm_func_lookup_or_add_placeholder ("FINV", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 			gnm_func_ref (fd_finv);
 
 			dao_set_cell_expr
@@ -4174,11 +4174,11 @@ analysis_tool_fourier_engine_run (data_analysis_output_t *dao,
 	GnmFunc *fd_imaginary;
 	GnmFunc *fd_imreal;
 
-	fd_fourier = gnm_func_lookup_or_add_placeholder ("FOURIER", NULL, FALSE);
+	fd_fourier = gnm_func_lookup_or_add_placeholder ("FOURIER", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_fourier);
-	fd_imaginary = gnm_func_lookup_or_add_placeholder ("IMAGINARY", NULL, FALSE);
+	fd_imaginary = gnm_func_lookup_or_add_placeholder ("IMAGINARY", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_imaginary);
-	fd_imreal = gnm_func_lookup_or_add_placeholder ("IMREAL", NULL, FALSE);
+	fd_imreal = gnm_func_lookup_or_add_placeholder ("IMREAL", dao->sheet ? dao->sheet->workbook : NULL, FALSE);
 	gnm_func_ref (fd_imreal);
 
 



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