[gnumeric] GnmFunc: make this a GObject.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] GnmFunc: make this a GObject.
- Date: Fri, 25 May 2018 02:01:25 +0000 (UTC)
commit 8dd9f9c48a8317e3ae6982596a7b7d93faa691e9
Author: Morten Welinder <terra gnome org>
Date: Thu May 24 21:56:20 2018 -0400
GnmFunc: make this a GObject.
Change GnmFunc from a boxed type with weird ref-counting to a proper
GObject with normal ref-counting, but also usage counting.
Function descriptor tables in plugins lose two pointers that almost
nobody was using: usage notifer (use signal notify::in-use instead) and
the link notifying (use signal link-dep instead).
There is still room for plenty of cleanup here.
NEWS | 1 +
plugins/excelplugins/excelplugins.c | 2 +-
plugins/fn-christian-date/functions.c | 10 +-
plugins/fn-complex/functions.c | 90 ++---
plugins/fn-database/functions.c | 26 +-
plugins/fn-date/functions.c | 54 +--
plugins/fn-derivatives/options.c | 58 +--
plugins/fn-eng/functions.c | 50 +--
plugins/fn-erlang/functions.c | 8 +-
plugins/fn-financial/functions.c | 114 +++---
plugins/fn-hebrew-date/functions.c | 18 +-
plugins/fn-info/functions.c | 48 +--
plugins/fn-logical/functions.c | 20 +-
plugins/fn-lookup/functions.c | 44 +-
plugins/fn-math/functions.c | 196 ++++-----
plugins/fn-numtheory/numtheory.c | 28 +-
plugins/fn-r/functions.c | 118 +++---
plugins/fn-r/generate | 2 +-
plugins/fn-random/functions.c | 68 ++--
plugins/fn-stat/functions.c | 222 +++++-----
plugins/fn-string/functions.c | 74 ++--
plugins/fn-tsa/functions.c | 10 +-
plugins/python-loader/py-gnumeric.c | 4 +-
plugins/python-loader/python-loader.c | 60 +--
plugins/sample_datasource/sample_datasource.c | 145 +++----
src/consolidate.c | 6 +-
src/dependent.c | 14 +-
src/dialogs/dialog-function-select.c | 4 +-
src/expr.c | 17 +-
src/func-builtin.c | 125 +++---
src/func.c | 561 +++++++++++++++++---------
src/func.h | 70 ++--
src/gnm-marshalers.list | 1 +
src/gnm-plugin.c | 162 ++++----
src/gnm-plugin.h | 3 +-
src/gnumeric-fwd.h | 2 +-
src/gutils.c | 2 +-
src/sheet.c | 2 +-
src/tools/analysis-anova.c | 80 ++--
src/tools/analysis-auto-expression.c | 2 +-
src/tools/analysis-chi-squared.c | 18 +-
src/tools/analysis-exp-smoothing.c | 124 +++---
src/tools/analysis-frequency.c | 28 +-
src/tools/analysis-histogram.c | 16 +-
src/tools/analysis-kaplan-meier.c | 28 +-
src/tools/analysis-normality.c | 8 +-
src/tools/analysis-one-mean-test.c | 28 +-
src/tools/analysis-principal-components.c | 40 +-
src/tools/analysis-sign-test.c | 56 +--
src/tools/analysis-signed-rank-test.c | 44 +-
src/tools/analysis-tools.c | 360 +++++++++--------
src/tools/analysis-wilcoxon-mann-whitney.c | 44 +-
src/tools/random-generator-cor.c | 16 +-
src/wbc-gtk.c | 2 +-
src/widgets/gnm-expr-entry.c | 6 +-
src/workbook-view.c | 17 +-
56 files changed, 1793 insertions(+), 1563 deletions(-)
---
diff --git a/NEWS b/NEWS
index 41f0bf4d8..913bec017 100644
--- a/NEWS
+++ b/NEWS
@@ -11,6 +11,7 @@ Morten:
* Makefile improvements.
* Don't save any configuration when running ssconvert/ssdiff/...
* Fix crash-on-exit.
+ * Turn GnmFunc into a GObject.
--------------------------------------------------------------------------
Gnumeric 1.12.41
diff --git a/plugins/excelplugins/excelplugins.c b/plugins/excelplugins/excelplugins.c
index f3314c12d..c21e16114 100644
--- a/plugins/excelplugins/excelplugins.c
+++ b/plugins/excelplugins/excelplugins.c
@@ -574,7 +574,7 @@ free_xll_function_info (gpointer data)
XLLFunctionInfo *info= (XLLFunctionInfo *)data;
const guint n = info->number_of_arguments;
if (NULL != info->gnm_func) {
- gnm_func_free (info->gnm_func);
+ g_object_unref (info->gnm_func);
info->gnm_func = NULL;
}
delete_string (&info->category);
diff --git a/plugins/fn-christian-date/functions.c b/plugins/fn-christian-date/functions.c
index 29d6784d6..506727ffd 100644
--- a/plugins/fn-christian-date/functions.c
+++ b/plugins/fn-christian-date/functions.c
@@ -229,27 +229,27 @@ gnumeric_ascensionthursday (GnmFuncEvalInfo * ei, GnmValue const * const *argv)
GnmFuncDescriptor const christian_datetime_functions[] = {
{"ascensionthursday", "|f", help_ascensionthursday,
- gnumeric_ascensionthursday, NULL, NULL, NULL,
+ gnumeric_ascensionthursday, NULL,
GNM_FUNC_VOLATILE + GNM_FUNC_AUTO_DATE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{"ashwednesday", "|f", help_ashwednesday,
- gnumeric_ashwednesday, NULL, NULL, NULL,
+ gnumeric_ashwednesday, NULL,
GNM_FUNC_VOLATILE + GNM_FUNC_AUTO_DATE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{"eastersunday", "|f", help_eastersunday,
- gnumeric_eastersunday, NULL, NULL, NULL,
+ gnumeric_eastersunday, NULL,
GNM_FUNC_VOLATILE + GNM_FUNC_AUTO_DATE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{"goodfriday", "|f", help_goodfriday,
- gnumeric_goodfriday, NULL, NULL, NULL,
+ gnumeric_goodfriday, NULL,
GNM_FUNC_VOLATILE + GNM_FUNC_AUTO_DATE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{"pentecostsunday", "|f", help_pentecostsunday,
- gnumeric_pentecostsunday, NULL, NULL, NULL,
+ gnumeric_pentecostsunday, NULL,
GNM_FUNC_VOLATILE + GNM_FUNC_AUTO_DATE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
diff --git a/plugins/fn-complex/functions.c b/plugins/fn-complex/functions.c
index 936e4fdb4..2a7fcef38 100644
--- a/plugins/fn-complex/functions.c
+++ b/plugins/fn-complex/functions.c
@@ -1268,141 +1268,141 @@ gnumeric_imsum (GnmFuncEvalInfo *ei, int argc, GnmExprConstPtr const *argv)
GnmFuncDescriptor const complex_functions[] = {
{ "complex", "ff|s", help_complex,
- gnumeric_complex, NULL, NULL, NULL,
+ gnumeric_complex, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "imabs", "S", help_imabs,
- gnumeric_imabs, NULL, NULL, NULL,
+ gnumeric_imabs, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imaginary", "S", help_imaginary,
- gnumeric_imaginary, NULL, NULL, NULL,
+ gnumeric_imaginary, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "imargument", "S", help_imargument,
- gnumeric_imargument, NULL, NULL, NULL,
+ gnumeric_imargument, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imconjugate", "S", help_imconjugate,
- gnumeric_imconjugate, NULL, NULL, NULL,
+ gnumeric_imconjugate, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "imcos", "S", help_imcos,
- gnumeric_imcos, NULL, NULL, NULL,
+ gnumeric_imcos, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imdiv", "SS", help_imdiv,
- gnumeric_imdiv, NULL, NULL, NULL,
+ gnumeric_imdiv, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "imexp", "S", help_imexp,
- gnumeric_imexp, NULL, NULL, NULL,
+ gnumeric_imexp, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imln", "S", help_imln,
- gnumeric_imln, NULL, NULL, NULL,
+ gnumeric_imln, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imlog10", "S", help_imlog10,
- gnumeric_imlog10, NULL, NULL, NULL,
+ gnumeric_imlog10, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imlog2", "S", help_imlog2,
- gnumeric_imlog2, NULL, NULL, NULL,
+ gnumeric_imlog2, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "impower", "SS", help_impower,
- gnumeric_impower, NULL, NULL, NULL,
+ gnumeric_impower, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imreal", "S", help_imreal,
- gnumeric_imreal, NULL, NULL, NULL,
+ gnumeric_imreal, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "imsin", "S", help_imsin,
- gnumeric_imsin, NULL, NULL, NULL,
+ gnumeric_imsin, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imsqrt", "S", help_imsqrt,
- gnumeric_imsqrt, NULL, NULL, NULL,
+ gnumeric_imsqrt, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imsub", "SS", help_imsub,
- gnumeric_imsub, NULL, NULL, NULL,
+ gnumeric_imsub, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "imsum", NULL, help_imsum,
- NULL, gnumeric_imsum, NULL, NULL,
+ NULL, gnumeric_imsum,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "iminv", "S", help_iminv,
- gnumeric_iminv, NULL, NULL, NULL,
+ gnumeric_iminv, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "imneg", "S", help_imneg,
- gnumeric_imneg, NULL, NULL, NULL,
+ gnumeric_imneg, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "imtan", "S", help_imtan,
- gnumeric_imtan, NULL, NULL, NULL,
+ gnumeric_imtan, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "improduct", NULL, help_improduct,
- NULL, gnumeric_improduct, NULL, NULL,
+ NULL, gnumeric_improduct,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "imsec", "S", help_imsec,
- gnumeric_imsec, NULL, NULL, NULL,
+ gnumeric_imsec, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imcsc", "S", help_imcsc,
- gnumeric_imcsc, NULL, NULL, NULL,
+ gnumeric_imcsc, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imcot", "S", help_imcot,
- gnumeric_imcot, NULL, NULL, NULL,
+ gnumeric_imcot, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imsinh", "S", help_imsinh,
- gnumeric_imsinh, NULL, NULL, NULL,
+ gnumeric_imsinh, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imcosh", "S", help_imcosh,
- gnumeric_imcosh, NULL, NULL, NULL,
+ gnumeric_imcosh, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imtanh", "S", help_imtanh,
- gnumeric_imtanh, NULL, NULL, NULL,
+ gnumeric_imtanh, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imsech", "S", help_imsech,
- gnumeric_imsech, NULL, NULL, NULL,
+ gnumeric_imsech, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imcsch", "S", help_imcsch,
- gnumeric_imcsch, NULL, NULL, NULL,
+ gnumeric_imcsch, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imcoth", "S", help_imcoth,
- gnumeric_imcoth, NULL, NULL, NULL,
+ gnumeric_imcoth, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imarcsin", "S", help_imarcsin,
- gnumeric_imarcsin, NULL, NULL, NULL,
+ gnumeric_imarcsin, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imarccos", "S", help_imarccos,
- gnumeric_imarccos, NULL, NULL, NULL,
+ gnumeric_imarccos, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imarctan", "S", help_imarctan,
- gnumeric_imarctan, NULL, NULL, NULL,
+ gnumeric_imarctan, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imarcsec", "S", help_imarcsec,
- gnumeric_imarcsec, NULL, NULL, NULL,
+ gnumeric_imarcsec, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imarccsc", "S", help_imarccsc,
- gnumeric_imarccsc, NULL, NULL, NULL,
+ gnumeric_imarccsc, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imarccot", "S", help_imarccot,
- gnumeric_imarccot, NULL, NULL, NULL,
+ gnumeric_imarccot, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imarcsinh", "S", help_imarcsinh,
- gnumeric_imarcsinh, NULL, NULL, NULL,
+ gnumeric_imarcsinh, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imarccosh", "S", help_imarccosh,
- gnumeric_imarccosh, NULL, NULL, NULL,
+ gnumeric_imarccosh, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imarctanh", "S", help_imarctanh,
- gnumeric_imarctanh, NULL, NULL, NULL,
+ gnumeric_imarctanh, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imarcsech", "S", help_imarcsech,
- gnumeric_imarcsech, NULL, NULL, NULL,
+ gnumeric_imarcsech, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imarccsch", "S", help_imarccsch,
- gnumeric_imarccsch, NULL, NULL, NULL,
+ gnumeric_imarccsch, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imarccoth", "S", help_imarccoth,
- gnumeric_imarccoth, NULL, NULL, NULL,
+ gnumeric_imarccoth, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imfact", "S", help_imfact,
- gnumeric_imfact, NULL, NULL, NULL,
+ gnumeric_imfact, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imgamma", "S", help_imgamma,
- gnumeric_imgamma, NULL, NULL, NULL,
+ gnumeric_imgamma, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "imigamma", "SS|bb", help_imigamma,
- gnumeric_imigamma, NULL, NULL, NULL,
+ gnumeric_imigamma, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{NULL}
diff --git a/plugins/fn-database/functions.c b/plugins/fn-database/functions.c
index 84f800c98..9445170cb 100644
--- a/plugins/fn-database/functions.c
+++ b/plugins/fn-database/functions.c
@@ -807,45 +807,45 @@ gnumeric_getpivotdata (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
const GnmFuncDescriptor database_functions[] = {
{ "daverage", "rSr",
- help_daverage, gnumeric_daverage, NULL, NULL, NULL,
+ help_daverage, gnumeric_daverage, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "dcount", "rSr",
- help_dcount, gnumeric_dcount, NULL, NULL, NULL,
+ help_dcount, gnumeric_dcount, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "dcounta", "rSr",
- help_dcounta, gnumeric_dcounta, NULL, NULL, NULL,
+ help_dcounta, gnumeric_dcounta, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "dget", "rSr",
- help_dget, gnumeric_dget, NULL, NULL, NULL,
+ help_dget, gnumeric_dget, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "dmax", "rSr",
- help_dmax, gnumeric_dmax, NULL, NULL, NULL,
+ help_dmax, gnumeric_dmax, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "dmin", "rSr",
- help_dmin, gnumeric_dmin, NULL, NULL, NULL,
+ help_dmin, gnumeric_dmin, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "dproduct", "rSr",
- help_dproduct, gnumeric_dproduct, NULL, NULL, NULL,
+ help_dproduct, gnumeric_dproduct, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "dstdev", "rSr",
- help_dstdev, gnumeric_dstdev, NULL, NULL, NULL,
+ help_dstdev, gnumeric_dstdev, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "dstdevp", "rSr",
- help_dstdevp, gnumeric_dstdevp, NULL, NULL, NULL,
+ help_dstdevp, gnumeric_dstdevp, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "dsum", "rSr",
- help_dsum, gnumeric_dsum, NULL, NULL, NULL,
+ help_dsum, gnumeric_dsum, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "dvar", "rSr",
- help_dvar, gnumeric_dvar, NULL, NULL, NULL,
+ help_dvar, gnumeric_dvar, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "dvarp", "rSr",
- help_dvarp, gnumeric_dvarp, NULL, NULL, NULL,
+ help_dvarp, gnumeric_dvarp, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
/* XL stores in lookup */
{ "getpivotdata", "rs",
- help_getpivotdata, gnumeric_getpivotdata, NULL, NULL, NULL,
+ help_getpivotdata, gnumeric_getpivotdata, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_SUBSET, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{NULL}
diff --git a/plugins/fn-date/functions.c b/plugins/fn-date/functions.c
index fb8c4dc43..0917c7388 100644
--- a/plugins/fn-date/functions.c
+++ b/plugins/fn-date/functions.c
@@ -1416,112 +1416,112 @@ gnumeric_days (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
GnmFuncDescriptor const datetime_functions[] = {
{ "date", "fff", help_date,
- gnumeric_date, NULL, NULL, NULL,
+ gnumeric_date, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_DATE,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "datevalue", "f", help_datevalue,
- gnumeric_datevalue, NULL, NULL, NULL,
+ gnumeric_datevalue, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "datedif", "ffs", help_datedif,
- gnumeric_datedif, NULL, NULL, NULL,
+ gnumeric_datedif, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "day", "f", help_day,
- gnumeric_day, NULL, NULL, NULL,
+ gnumeric_day, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "days360", "ff|f", help_days360,
- gnumeric_days360, NULL, NULL, NULL,
+ gnumeric_days360, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "edate", "ff", help_edate,
- gnumeric_edate, NULL, NULL, NULL,
+ gnumeric_edate, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_DATE,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "eomonth", "f|f", help_eomonth,
- gnumeric_eomonth, NULL, NULL, NULL,
+ gnumeric_eomonth, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_DATE,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "hour", "f", help_hour,
- gnumeric_hour, NULL, NULL, NULL,
+ gnumeric_hour, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "minute", "f", help_minute,
- gnumeric_minute, NULL, NULL, NULL,
+ gnumeric_minute, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "month", "f", help_month,
- gnumeric_month, NULL, NULL, NULL,
+ gnumeric_month, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "networkdays", "ff|?A",
- help_networkdays, gnumeric_networkdays, NULL, NULL, NULL,
+ help_networkdays, gnumeric_networkdays, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "now", "", help_now,
- gnumeric_now, NULL, NULL, NULL,
+ gnumeric_now, NULL,
GNM_FUNC_VOLATILE + GNM_FUNC_AUTO_TIME,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "odf.time", "fff", help_odf_time,
- gnumeric_odf_time, NULL, NULL, NULL,
+ gnumeric_odf_time, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_TIME,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "second", "f", help_second,
- gnumeric_second, NULL, NULL, NULL,
+ gnumeric_second, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "time", "fff", help_time,
- gnumeric_time, NULL, NULL, NULL,
+ gnumeric_time, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_TIME,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "timevalue", "f", help_timevalue,
- gnumeric_timevalue, NULL, NULL, NULL,
+ gnumeric_timevalue, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "today", "", help_today,
- gnumeric_today, NULL, NULL, NULL,
+ gnumeric_today, NULL,
GNM_FUNC_VOLATILE + GNM_FUNC_AUTO_DATE,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "weekday", "f|f", help_weekday,
- gnumeric_weekday, NULL, NULL, NULL,
+ gnumeric_weekday, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "weeknum", "f|f", help_weeknum,
- gnumeric_weeknum, NULL, NULL, NULL,
+ gnumeric_weeknum, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "workday", "ff|?A", help_workday,
- gnumeric_workday, NULL, NULL, NULL,
+ gnumeric_workday, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_DATE,
GNM_FUNC_IMPL_STATUS_SUBSET, GNM_FUNC_TEST_STATUS_BASIC },
{ "year", "f", help_year,
- gnumeric_year, NULL, NULL, NULL,
+ gnumeric_year, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "yearfrac", "ff|f", help_yearfrac,
- gnumeric_yearfrac, NULL, NULL, NULL,
+ gnumeric_yearfrac, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "unix2date", "f", help_unix2date,
- gnumeric_unix2date, NULL, NULL, NULL,
+ gnumeric_unix2date, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_DATE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "date2unix", "f", help_date2unix,
- gnumeric_date2unix, NULL, NULL, NULL,
+ gnumeric_date2unix, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "isoweeknum", "f", help_isoweeknum,
- gnumeric_isoweeknum, NULL, NULL, NULL,
+ gnumeric_isoweeknum, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "isoyear", "f", help_isoyear,
- gnumeric_isoyear, NULL, NULL, NULL,
+ gnumeric_isoyear, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "days", "ff",
- help_days, gnumeric_days, NULL, NULL, NULL,
+ help_days, gnumeric_days, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{NULL}
diff --git a/plugins/fn-derivatives/options.c b/plugins/fn-derivatives/options.c
index 2446b257d..0f6d3049f 100644
--- a/plugins/fn-derivatives/options.c
+++ b/plugins/fn-derivatives/options.c
@@ -1971,148 +1971,148 @@ static GnmFuncHelp const help_opt_binomial[] = {
GnmFuncDescriptor const derivatives_functions [] = {
{ "opt_bs",
"sfffff|f",
- help_opt_bs, opt_bs, NULL, NULL, NULL,
+ help_opt_bs, opt_bs, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_bs_delta",
"sfffff|f",
- help_opt_bs_delta, opt_bs_delta, NULL, NULL, NULL,
+ help_opt_bs_delta, opt_bs_delta, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_bs_rho",
"sfffff|f",
- help_opt_bs_rho, opt_bs_rho, NULL, NULL, NULL,
+ help_opt_bs_rho, opt_bs_rho, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_bs_theta",
"sfffff|f",
- help_opt_bs_theta, opt_bs_theta, NULL, NULL, NULL,
+ help_opt_bs_theta, opt_bs_theta, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_bs_gamma",
"fffff|f",
- help_opt_bs_gamma, opt_bs_gamma, NULL, NULL, NULL,
+ help_opt_bs_gamma, opt_bs_gamma, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_bs_vega",
"fffff|f",
- help_opt_bs_vega, opt_bs_vega, NULL, NULL, NULL,
+ help_opt_bs_vega, opt_bs_vega, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_bs_carrycost",
"sfffff|f",
- help_opt_bs_carrycost, opt_bs_carrycost, NULL, NULL, NULL,
+ help_opt_bs_carrycost, opt_bs_carrycost, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "cum_biv_norm_dist",
"fff",
- help_cum_biv_norm_dist, cum_biv_norm_dist, NULL, NULL, NULL,
+ help_cum_biv_norm_dist, cum_biv_norm_dist, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "opt_garman_kohlhagen",
"sffffff",
- help_opt_garman_kohlhagen, opt_garman_kohlhagen, NULL, NULL, NULL,
+ help_opt_garman_kohlhagen, opt_garman_kohlhagen, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_french",
"sfffffff",
- help_opt_french, opt_french, NULL, NULL, NULL,
+ help_opt_french, opt_french, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_jump_diff",
"sfffffff",
- help_opt_jump_diff, opt_jump_diff, NULL, NULL, NULL,
+ help_opt_jump_diff, opt_jump_diff, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_exec",
"sfffffff",
- help_opt_exec, opt_exec, NULL, NULL, NULL,
+ help_opt_exec, opt_exec, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_bjer_stens",
"sffffff",
- help_opt_bjer_stens, opt_bjer_stens, NULL, NULL, NULL,
+ help_opt_bjer_stens, opt_bjer_stens, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_miltersen_schwartz",
"sfffffffffffff",
- help_opt_miltersen_schwartz, opt_miltersen_schwartz, NULL, NULL, NULL,
+ help_opt_miltersen_schwartz, opt_miltersen_schwartz, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_baw_amer",
"sffffff",
- help_opt_baw_amer, opt_baw_amer, NULL, NULL, NULL,
+ help_opt_baw_amer, opt_baw_amer, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_rgw",
"fffffff",
- help_opt_rgw, opt_rgw, NULL, NULL, NULL,
+ help_opt_rgw, opt_rgw, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_forward_start",
"sfffffff",
- help_opt_forward_start, opt_forward_start, NULL, NULL, NULL,
+ help_opt_forward_start, opt_forward_start, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_time_switch",
"sfffffffff",
- help_opt_time_switch, opt_time_switch, NULL, NULL, NULL,
+ help_opt_time_switch, opt_time_switch, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_simple_chooser",
"fffffff",
- help_opt_simple_chooser, opt_simple_chooser, NULL, NULL, NULL,
+ help_opt_simple_chooser, opt_simple_chooser, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_complex_chooser",
"fffffffff",
- help_opt_complex_chooser, opt_complex_chooser, NULL, NULL, NULL,
+ help_opt_complex_chooser, opt_complex_chooser, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_on_options",
"sffffffff",
- help_opt_on_options, opt_on_options, NULL, NULL, NULL,
+ help_opt_on_options, opt_on_options, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_extendible_writer",
"sffffffff",
- help_opt_extendible_writer, opt_extendible_writer, NULL, NULL, NULL,
+ help_opt_extendible_writer, opt_extendible_writer, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_2_asset_correlation",
"sfffffffffff",
- help_opt_2_asset_correlation, opt_2_asset_correlation, NULL, NULL, NULL,
+ help_opt_2_asset_correlation, opt_2_asset_correlation, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_euro_exchange",
"fffffffffff",
- help_opt_euro_exchange, opt_euro_exchange, NULL, NULL, NULL,
+ help_opt_euro_exchange, opt_euro_exchange, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_amer_exchange",
"fffffffffff",
- help_opt_amer_exchange, opt_amer_exchange, NULL, NULL, NULL,
+ help_opt_amer_exchange, opt_amer_exchange, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_spread_approx",
"sffffffff",
- help_opt_spread_approx, opt_spread_approx, NULL, NULL, NULL,
+ help_opt_spread_approx, opt_spread_approx, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_float_strk_lkbk",
"sfffffff",
- help_opt_float_strk_lkbk, opt_float_strk_lkbk, NULL, NULL, NULL,
+ help_opt_float_strk_lkbk, opt_float_strk_lkbk, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_fixed_strk_lkbk",
"sffffffff",
- help_opt_fixed_strk_lkbk, opt_fixed_strk_lkbk, NULL, NULL, NULL,
+ help_opt_fixed_strk_lkbk, opt_fixed_strk_lkbk, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "opt_binomial",
"ssffffff|f",
- help_opt_binomial, opt_binomial, NULL, NULL, NULL,
+ help_opt_binomial, opt_binomial, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ NULL}
diff --git a/plugins/fn-eng/functions.c b/plugins/fn-eng/functions.c
index c00c4a6fd..e307bc817 100644
--- a/plugins/fn-eng/functions.c
+++ b/plugins/fn-eng/functions.c
@@ -1593,88 +1593,88 @@ gnumeric_invsuminv (GnmFuncEvalInfo *ei, int argc, GnmExprConstPtr const *argv)
GnmFuncDescriptor const engineering_functions[] = {
{ "base", "Sf|f", help_base,
- gnumeric_base, NULL, NULL, NULL,
+ gnumeric_base, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "besseli", "ff", help_besseli,
- gnumeric_besseli, NULL, NULL, NULL,
+ gnumeric_besseli, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "besselj", "ff", help_besselj,
- gnumeric_besselj, NULL, NULL, NULL,
+ gnumeric_besselj, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "besselk", "ff", help_besselk,
- gnumeric_besselk, NULL, NULL, NULL,
+ gnumeric_besselk, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "bessely", "ff", help_bessely,
- gnumeric_bessely, NULL, NULL, NULL,
+ gnumeric_bessely, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "bin2dec", "S", help_bin2dec,
- gnumeric_bin2dec, NULL, NULL, NULL,
+ gnumeric_bin2dec, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "bin2hex", "S|f", help_bin2hex,
- gnumeric_bin2hex, NULL, NULL, NULL,
+ gnumeric_bin2hex, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "bin2oct", "S|f", help_bin2oct,
- gnumeric_bin2oct, NULL, NULL, NULL,
+ gnumeric_bin2oct, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "convert", "fss", help_convert,
- gnumeric_convert, NULL, NULL, NULL,
+ gnumeric_convert, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "dec2bin", "S|f", help_dec2bin,
- gnumeric_dec2bin, NULL, NULL, NULL,
+ gnumeric_dec2bin, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "dec2oct", "S|f", help_dec2oct,
- gnumeric_dec2oct, NULL, NULL, NULL,
+ gnumeric_dec2oct, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "dec2hex", "S|f", help_dec2hex,
- gnumeric_dec2hex, NULL, NULL, NULL,
+ gnumeric_dec2hex, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "decimal", "Sf", help_decimal,
- gnumeric_decimal, NULL, NULL, NULL,
+ gnumeric_decimal, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "delta", "f|f", help_delta,
- gnumeric_delta, NULL, NULL, NULL,
+ gnumeric_delta, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "erf", "f|f", help_erf,
- gnumeric_erf , NULL, NULL, NULL,
+ gnumeric_erf , NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "erfc", "f", help_erfc,
- gnumeric_erfc, NULL, NULL, NULL,
+ gnumeric_erfc, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "gestep", "f|f", help_gestep,
- gnumeric_gestep, NULL, NULL, NULL,
+ gnumeric_gestep, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "hex2bin", "S|f", help_hex2bin,
- gnumeric_hex2bin, NULL, NULL, NULL,
+ gnumeric_hex2bin, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "hex2dec", "S", help_hex2dec,
- gnumeric_hex2dec, NULL, NULL, NULL,
+ gnumeric_hex2dec, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "hex2oct", "S|f", help_hex2oct,
- gnumeric_hex2oct, NULL, NULL, NULL,
+ gnumeric_hex2oct, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "hexrep", "f", help_hexrep,
- gnumeric_hexrep, NULL, NULL, NULL,
+ gnumeric_hexrep, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "invsuminv", NULL, help_invsuminv,
- NULL, gnumeric_invsuminv, NULL, NULL,
+ NULL, gnumeric_invsuminv,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "oct2bin", "S|f", help_oct2bin,
- gnumeric_oct2bin, NULL, NULL, NULL,
+ gnumeric_oct2bin, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "oct2dec", "S", help_oct2dec,
- gnumeric_oct2dec, NULL, NULL, NULL,
+ gnumeric_oct2dec, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "oct2hex", "S|f", help_oct2hex,
- gnumeric_oct2hex, NULL, NULL, NULL,
+ gnumeric_oct2hex, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{NULL}
diff --git a/plugins/fn-erlang/functions.c b/plugins/fn-erlang/functions.c
index 3f20a987a..88aabfb7d 100644
--- a/plugins/fn-erlang/functions.c
+++ b/plugins/fn-erlang/functions.c
@@ -284,22 +284,22 @@ gnumeric_offcap (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
GnmFuncDescriptor const erlang_functions[] = {
{ "probblock", "ff", help_probblock,
- gnumeric_probblock, NULL, NULL, NULL,
+ gnumeric_probblock, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_PERCENT,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "offtraf", "ff", help_offtraf,
- gnumeric_offtraf, NULL, NULL, NULL,
+ gnumeric_offtraf, NULL,
GNM_FUNC_SIMPLE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "dimcirc", "ff", help_dimcirc,
- gnumeric_dimcirc, NULL, NULL, NULL,
+ gnumeric_dimcirc, NULL,
GNM_FUNC_SIMPLE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "offcap", "ff", help_offcap,
- gnumeric_offcap, NULL, NULL, NULL,
+ gnumeric_offcap, NULL,
GNM_FUNC_SIMPLE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
diff --git a/plugins/fn-financial/functions.c b/plugins/fn-financial/functions.c
index 4fff02df2..75ac9cee3 100644
--- a/plugins/fn-financial/functions.c
+++ b/plugins/fn-financial/functions.c
@@ -3322,211 +3322,211 @@ gnumeric_vdb (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
GnmFuncDescriptor const financial_functions[] = {
{ "accrint", "ffff|fffb",
- help_accrint, gnumeric_accrint, NULL, NULL, NULL,
+ help_accrint, gnumeric_accrint, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "accrintm", "fff|ff",
- help_accrintm, gnumeric_accrintm, NULL, NULL, NULL,
+ help_accrintm, gnumeric_accrintm, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "amordegrc", "fffffff",
- help_amordegrc, gnumeric_amordegrc, NULL, NULL, NULL,
+ help_amordegrc, gnumeric_amordegrc, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "amorlinc", "fffffff",
- help_amorlinc, gnumeric_amorlinc, NULL, NULL, NULL,
+ help_amorlinc, gnumeric_amorlinc, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "coupdaybs", "fff|fb",
- help_coupdaybs, gnumeric_coupdaybs, NULL, NULL, NULL,
+ help_coupdaybs, gnumeric_coupdaybs, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "coupdays", "fff|fb",
- help_coupdays, gnumeric_coupdays, NULL, NULL, NULL,
+ help_coupdays, gnumeric_coupdays, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "coupdaysnc", "fff|fb",
- help_coupdaysnc, gnumeric_coupdaysnc, NULL, NULL, NULL,
+ help_coupdaysnc, gnumeric_coupdaysnc, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "coupncd", "fff|fb",
- help_coupncd, gnumeric_coupncd, NULL, NULL, NULL,
+ help_coupncd, gnumeric_coupncd, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_DATE,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "coupnum", "fff|fb",
- help_coupnum, gnumeric_coupnum, NULL, NULL, NULL,
+ help_coupnum, gnumeric_coupnum, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "couppcd", "fff|fb",
- help_couppcd, gnumeric_couppcd, NULL, NULL, NULL,
+ help_couppcd, gnumeric_couppcd, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_DATE,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "cumipmt", "ffffff",
- help_cumipmt, gnumeric_cumipmt, NULL, NULL, NULL,
+ help_cumipmt, gnumeric_cumipmt, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "cumprinc", "ffffff",
- help_cumprinc, gnumeric_cumprinc, NULL, NULL, NULL,
+ help_cumprinc, gnumeric_cumprinc, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "db", "ffff|f",
- help_db, gnumeric_db, NULL, NULL, NULL,
+ help_db, gnumeric_db, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "ddb", "ffff|f",
- help_ddb, gnumeric_ddb, NULL, NULL, NULL,
+ help_ddb, gnumeric_ddb, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "disc", "ffff|f",
- help_disc, gnumeric_disc, NULL, NULL, NULL,
+ help_disc, gnumeric_disc, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "dollarde", "ff",
- help_dollarde, gnumeric_dollarde, NULL, NULL, NULL,
+ help_dollarde, gnumeric_dollarde, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "dollarfr", "ff",
- help_dollarfr, gnumeric_dollarfr, NULL, NULL, NULL,
+ help_dollarfr, gnumeric_dollarfr, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "duration", "fffff|f",
- help_duration, gnumeric_duration, NULL, NULL, NULL,
+ help_duration, gnumeric_duration, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "effect", "ff",
- help_effect, gnumeric_effect, NULL, NULL, NULL,
+ help_effect, gnumeric_effect, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_PERCENT,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "euro", "s",
- help_euro, gnumeric_euro, NULL, NULL, NULL,
+ help_euro, gnumeric_euro, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "euroconvert", "fss|bf",
- help_euroconvert, gnumeric_euroconvert, NULL, NULL, NULL,
+ help_euroconvert, gnumeric_euroconvert, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "fv", "fff|ff",
- help_fv, gnumeric_fv, NULL, NULL, NULL,
+ help_fv, gnumeric_fv, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "fvschedule", "fA",
- help_fvschedule, gnumeric_fvschedule, NULL, NULL, NULL,
+ help_fvschedule, gnumeric_fvschedule, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "g_duration", "fff",
- help_g_duration, gnumeric_g_duration, NULL, NULL, NULL,
+ help_g_duration, gnumeric_g_duration, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "intrate", "ffff|f",
- help_intrate, gnumeric_intrate, NULL, NULL, NULL,
+ help_intrate, gnumeric_intrate, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_PERCENT,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "ipmt", "ffff|ff",
- help_ipmt, gnumeric_ipmt, NULL, NULL, NULL,
+ help_ipmt, gnumeric_ipmt, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "irr", "A|f",
- help_irr, gnumeric_irr, NULL, NULL, NULL,
+ help_irr, gnumeric_irr, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_PERCENT,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "ispmt", "ffff",
- help_ispmt, gnumeric_ispmt, NULL, NULL, NULL,
+ help_ispmt, gnumeric_ispmt, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "mduration", "fffff|f",
- help_mduration, gnumeric_mduration, NULL, NULL, NULL,
+ help_mduration, gnumeric_mduration, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "mirr", "Aff",
- help_mirr, gnumeric_mirr, NULL, NULL, NULL,
+ help_mirr, gnumeric_mirr, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_PERCENT,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "nominal", "ff",
- help_nominal, gnumeric_nominal, NULL, NULL, NULL,
+ help_nominal, gnumeric_nominal, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_PERCENT,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "nper", "fff|ff",
- help_nper, gnumeric_nper, NULL, NULL, NULL,
+ help_nper, gnumeric_nper, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "npv", NULL,
- help_npv, NULL, gnumeric_npv, NULL, NULL,
+ help_npv, NULL, gnumeric_npv,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "oddfprice", "fffffffff",
- help_oddfprice, gnumeric_oddfprice, NULL, NULL, NULL,
+ help_oddfprice, gnumeric_oddfprice, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "oddfyield", "fffffffff",
- help_oddfyield, gnumeric_oddfyield, NULL, NULL, NULL,
+ help_oddfyield, gnumeric_oddfyield, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "oddlprice", "ffffffff",
- help_oddlprice, gnumeric_oddlprice, NULL, NULL, NULL,
+ help_oddlprice, gnumeric_oddlprice, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "oddlyield", "ffffffff",
- help_oddlyield, gnumeric_oddlyield, NULL, NULL, NULL,
+ help_oddlyield, gnumeric_oddlyield, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "pmt", "fff|ff",
- help_pmt, gnumeric_pmt, NULL, NULL, NULL,
+ help_pmt, gnumeric_pmt, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "ppmt", "ffff|ff",
- help_ppmt, gnumeric_ppmt, NULL, NULL, NULL,
+ help_ppmt, gnumeric_ppmt, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "price", "ffffff|f",
- help_price, gnumeric_price, NULL, NULL, NULL,
+ help_price, gnumeric_price, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "pricedisc", "ffff|f",
- help_pricedisc, gnumeric_pricedisc, NULL, NULL, NULL,
+ help_pricedisc, gnumeric_pricedisc, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "pricemat", "fffff|f",
- help_pricemat, gnumeric_pricemat, NULL, NULL, NULL,
+ help_pricemat, gnumeric_pricemat, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "pv", "fff|ff",
- help_pv, gnumeric_pv, NULL, NULL, NULL,
+ help_pv, gnumeric_pv, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "rate", "fff|fff",
- help_rate, gnumeric_rate, NULL, NULL, NULL,
+ help_rate, gnumeric_rate, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_PERCENT,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "rri", "fff",
- help_rri, gnumeric_rri, NULL, NULL, NULL,
+ help_rri, gnumeric_rri, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_PERCENT,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "received", "ffff|f",
- help_received, gnumeric_received, NULL, NULL, NULL,
+ help_received, gnumeric_received, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "sln", "fff",
- help_sln, gnumeric_sln, NULL, NULL, NULL,
+ help_sln, gnumeric_sln, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "syd", "ffff",
- help_syd, gnumeric_syd, NULL, NULL, NULL,
+ help_syd, gnumeric_syd, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "tbilleq", "fff",
- help_tbilleq, gnumeric_tbilleq, NULL, NULL, NULL,
+ help_tbilleq, gnumeric_tbilleq, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "tbillprice", "fff",
- help_tbillprice, gnumeric_tbillprice, NULL, NULL, NULL,
+ help_tbillprice, gnumeric_tbillprice, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "tbillyield", "fff",
- help_tbillyield, gnumeric_tbillyield, NULL, NULL, NULL,
+ help_tbillyield, gnumeric_tbillyield, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_PERCENT,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "vdb", "fffff|ff",
- help_vdb, gnumeric_vdb, NULL, NULL, NULL,
+ help_vdb, gnumeric_vdb, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "xirr", "AA|f",
- help_xirr, gnumeric_xirr, NULL, NULL, NULL,
+ help_xirr, gnumeric_xirr, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_PERCENT,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "xnpv", "fAA",
- help_xnpv, gnumeric_xnpv, NULL, NULL, NULL,
+ help_xnpv, gnumeric_xnpv, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_MONETARY,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "yield", "ffffff|f",
- help_yield, gnumeric_yield, NULL, NULL, NULL,
+ help_yield, gnumeric_yield, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_PERCENT,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "yielddisc", "ffff|f",
- help_yielddisc, gnumeric_yielddisc, NULL, NULL, NULL,
+ help_yielddisc, gnumeric_yielddisc, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "yieldmat", "fffff|f",
- help_yieldmat, gnumeric_yieldmat, NULL, NULL, NULL,
+ help_yieldmat, gnumeric_yieldmat, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{NULL}
};
diff --git a/plugins/fn-hebrew-date/functions.c b/plugins/fn-hebrew-date/functions.c
index 0fa0387c4..13e75a222 100644
--- a/plugins/fn-hebrew-date/functions.c
+++ b/plugins/fn-hebrew-date/functions.c
@@ -364,47 +364,47 @@ gnumeric_date2julian (GnmFuncEvalInfo * ei, GnmValue const * const *argv)
GnmFuncDescriptor const hebrew_datetime_functions[] = {
{"hdate", "|fff", help_hdate,
- gnumeric_hdate, NULL, NULL, NULL,
+ gnumeric_hdate, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{"hdate_heb", "|fff", help_hdate_heb,
- gnumeric_hdate_heb, NULL, NULL, NULL,
+ gnumeric_hdate_heb, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{"hdate_day", "|fff", help_hdate_day,
- gnumeric_hdate_day, NULL, NULL, NULL,
+ gnumeric_hdate_day, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_VOLATILE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{"hdate_month", "|fff", help_hdate_month,
- gnumeric_hdate_month, NULL, NULL, NULL,
+ gnumeric_hdate_month, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_VOLATILE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{"hdate_year", "|fff", help_hdate_year,
- gnumeric_hdate_year, NULL, NULL, NULL,
+ gnumeric_hdate_year, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_VOLATILE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{"hdate_julian", "|fff", help_hdate_julian,
- gnumeric_hdate_julian, NULL, NULL, NULL,
+ gnumeric_hdate_julian, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_VOLATILE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{"date2hdate", "|f", help_date2hdate,
- gnumeric_date2hdate, NULL, NULL, NULL,
+ gnumeric_date2hdate, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{"date2hdate_heb", "|f", help_date2hdate_heb,
- gnumeric_date2hdate_heb, NULL, NULL, NULL,
+ gnumeric_date2hdate_heb, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{"date2julian", "|f", help_date2julian,
- gnumeric_date2julian, NULL, NULL, NULL,
+ gnumeric_date2julian, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_VOLATILE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
diff --git a/plugins/fn-info/functions.c b/plugins/fn-info/functions.c
index a87b707c8..3a218470a 100644
--- a/plugins/fn-info/functions.c
+++ b/plugins/fn-info/functions.c
@@ -1862,81 +1862,81 @@ gnumeric_get_link (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
GnmFuncDescriptor const info_functions[] = {
{ "cell", "sr", help_cell,
- gnumeric_cell, NULL, NULL, NULL,
+ gnumeric_cell, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_SUBSET_WITH_EXTENSIONS, GNM_FUNC_TEST_STATUS_BASIC },
{ "error.type", "E", help_error_type,
- gnumeric_error_type, NULL, NULL, NULL,
+ gnumeric_error_type, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "info", "s", help_info,
- gnumeric_info, NULL, NULL, NULL,
+ gnumeric_info, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "isblank", "E", help_isblank,
- gnumeric_isblank, NULL, NULL, NULL,
+ gnumeric_isblank, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "iserr", "E", help_iserr,
- gnumeric_iserr, NULL, NULL, NULL,
+ gnumeric_iserr, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "iserror", "E", help_iserror,
- gnumeric_iserror, NULL, NULL, NULL,
+ gnumeric_iserror, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "iseven", "f", help_iseven,
- gnumeric_iseven, NULL, NULL, NULL,
+ gnumeric_iseven, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "islogical", "E", help_islogical,
- gnumeric_islogical, NULL, NULL, NULL,
+ gnumeric_islogical, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "isna", "E", help_isna,
- gnumeric_isna, NULL, NULL, NULL,
+ gnumeric_isna, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "isnontext", "E", help_isnontext,
- gnumeric_isnontext, NULL, NULL, NULL,
+ gnumeric_isnontext, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "isnumber", "E", help_isnumber,
- gnumeric_isnumber, NULL, NULL, NULL,
+ gnumeric_isnumber, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "isodd", "S", help_isodd,
- gnumeric_isodd, NULL, NULL, NULL,
+ gnumeric_isodd, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "isref", NULL, help_isref,
- NULL, gnumeric_isref, NULL, NULL,
+ NULL, gnumeric_isref,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "istext", "E", help_istext,
- gnumeric_istext, NULL, NULL, NULL,
+ gnumeric_istext, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "n", "S", help_n,
- gnumeric_n, NULL, NULL, NULL,
+ gnumeric_n, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "na", "", help_na,
- gnumeric_na, NULL, NULL, NULL,
+ gnumeric_na, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "type", "?", help_type,
- gnumeric_type, NULL, NULL, NULL,
+ gnumeric_type, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
/* XL stores this in statistical ? */
{ "countblank", "r", help_countblank,
- gnumeric_countblank, NULL, NULL, NULL,
+ gnumeric_countblank, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "error", "s", help_error,
- gnumeric_error, NULL, NULL, NULL,
+ gnumeric_error, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "expression", "r", help_expression,
- gnumeric_expression, NULL, NULL, NULL,
+ gnumeric_expression, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
/* XLM : looks common in charts */
{ "get.formula", "r", help_get_formula,
- gnumeric_get_formula, NULL, NULL, NULL,
+ gnumeric_get_formula, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "get.link", "r", help_get_link,
- gnumeric_get_link, NULL, NULL, NULL,
+ gnumeric_get_link, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "isformula", "r", help_isformula,
- gnumeric_isformula, NULL, NULL, NULL,
+ gnumeric_isformula, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{ "getenv", "s", help_getenv,
- gnumeric_getenv, NULL, NULL, NULL,
+ gnumeric_getenv, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{NULL}
diff --git a/plugins/fn-logical/functions.c b/plugins/fn-logical/functions.c
index a72dd5e25..8d87a5a6c 100644
--- a/plugins/fn-logical/functions.c
+++ b/plugins/fn-logical/functions.c
@@ -402,42 +402,42 @@ gnumeric_false (GnmFuncEvalInfo *ei, GnmValue const * const *args)
GnmFuncDescriptor const logical_functions[] = {
{ "and", NULL, help_and, NULL,
- gnumeric_and, NULL, NULL,
+ gnumeric_and,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "or", NULL, help_or, NULL,
- gnumeric_or, NULL, NULL,
+ gnumeric_or,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "not", "b", help_not, gnumeric_not,
- NULL, NULL, NULL,
+ NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "iferror", "EE", help_iferror,
- gnumeric_iferror, NULL, NULL, NULL,
+ gnumeric_iferror, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_SECOND,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "ifna", "EE", help_ifna,
- gnumeric_ifna, NULL, NULL, NULL,
+ gnumeric_ifna, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_SECOND,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{ "ifs", NULL, help_ifs,
- NULL, gnumeric_ifs, NULL, NULL,
+ NULL, gnumeric_ifs,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "switch", NULL, help_switch,
- NULL, gnumeric_switch, NULL, NULL,
+ NULL, gnumeric_switch,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "true", "", help_true, gnumeric_true,
- NULL, NULL, NULL,
+ NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "false", "", help_false, gnumeric_false,
- NULL, NULL, NULL,
+ NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "xor", NULL, help_xor, NULL,
- gnumeric_xor, NULL, NULL,
+ gnumeric_xor,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{NULL}
diff --git a/plugins/fn-lookup/functions.c b/plugins/fn-lookup/functions.c
index 722feeb89..d8766c433 100644
--- a/plugins/fn-lookup/functions.c
+++ b/plugins/fn-lookup/functions.c
@@ -1965,70 +1965,70 @@ gnumeric_sort (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
GnmFuncDescriptor const lookup_functions[] = {
{ "address", "ff|fbs",
- help_address, gnumeric_address, NULL, NULL, NULL,
+ help_address, gnumeric_address, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "areas", NULL,
- help_areas, NULL, gnumeric_areas, NULL, NULL,
+ help_areas, NULL, gnumeric_areas,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "choose", NULL,
- help_choose, NULL, gnumeric_choose, NULL, NULL,
+ help_choose, NULL, gnumeric_choose,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "column", "|A",
- help_column, gnumeric_column, NULL, NULL, NULL,
+ help_column, gnumeric_column, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "columnnumber", "s",
- help_columnnumber, gnumeric_columnnumber, NULL, NULL, NULL,
+ help_columnnumber, gnumeric_columnnumber, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "columns", "A",
- help_columns, gnumeric_columns, NULL, NULL, NULL,
+ help_columns, gnumeric_columns, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "hlookup", "EAf|bb",
- help_hlookup, gnumeric_hlookup, NULL, NULL, NULL,
+ help_hlookup, gnumeric_hlookup, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "hyperlink", "S|S",
- help_hyperlink, gnumeric_hyperlink, NULL, NULL, NULL,
+ help_hyperlink, gnumeric_hyperlink, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_SUBSET, GNM_FUNC_TEST_STATUS_BASIC },
{ "indirect", "s|b",
- help_indirect, gnumeric_indirect, NULL, NULL, NULL,
+ help_indirect, gnumeric_indirect, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "index", "A|fff",
- help_index, NULL, gnumeric_index, NULL, NULL,
+ help_index, NULL, gnumeric_index,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "lookup", "EA|r",
- help_lookup, gnumeric_lookup, NULL, NULL, NULL,
+ help_lookup, gnumeric_lookup, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "match", "EA|f",
- help_match, gnumeric_match, NULL, NULL, NULL,
+ help_match, gnumeric_match, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "offset", "rff|ff",
- help_offset, gnumeric_offset, NULL, NULL, NULL,
+ help_offset, gnumeric_offset, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "row", "|A",
- help_row, gnumeric_row, NULL, NULL, NULL,
+ help_row, gnumeric_row, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "rows", "A",
- help_rows, gnumeric_rows, NULL, NULL, NULL,
+ help_rows, gnumeric_rows, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "sheets", "|A",
- help_sheets, gnumeric_sheets, NULL, NULL, NULL,
+ help_sheets, gnumeric_sheets, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "sheet", "|?",
- help_sheet, gnumeric_sheet, NULL, NULL, NULL,
+ help_sheet, gnumeric_sheet, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "sort", "r|f",
- help_sort, gnumeric_sort, NULL, NULL, NULL,
+ help_sort, gnumeric_sort, NULL,
GNM_FUNC_RETURNS_NON_SCALAR, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "transpose", "A",
- help_transpose, gnumeric_transpose, NULL, NULL, NULL,
+ help_transpose, gnumeric_transpose, NULL,
GNM_FUNC_RETURNS_NON_SCALAR, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "vlookup", "EAf|bb",
- help_vlookup, gnumeric_vlookup, NULL, NULL, NULL,
+ help_vlookup, gnumeric_vlookup, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "array", NULL,
- help_array, NULL, gnumeric_array, NULL, NULL,
+ help_array, NULL, gnumeric_array,
GNM_FUNC_RETURNS_NON_SCALAR, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "flip", "A|b",
- help_flip, gnumeric_flip, NULL, NULL, NULL,
+ help_flip, gnumeric_flip, NULL,
GNM_FUNC_RETURNS_NON_SCALAR, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{NULL}
diff --git a/plugins/fn-math/functions.c b/plugins/fn-math/functions.c
index a092e1f08..333dfb089 100644
--- a/plugins/fn-math/functions.c
+++ b/plugins/fn-math/functions.c
@@ -3413,324 +3413,324 @@ out:
GnmFuncDescriptor const math_functions[] = {
{ "abs", "f", help_abs,
- gnumeric_abs, NULL, NULL, NULL,
+ gnumeric_abs, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "acos", "f", help_acos,
- gnumeric_acos, NULL, NULL, NULL,
+ gnumeric_acos, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "acosh", "f", help_acosh,
- gnumeric_acosh, NULL, NULL, NULL,
+ gnumeric_acosh, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "acot", "f", help_acot,
- gnumeric_acot, NULL, NULL, NULL,
+ gnumeric_acot, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "acoth", "f", help_acoth,
- gnumeric_acoth, NULL, NULL, NULL,
+ gnumeric_acoth, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "agm", "ff", help_agm,
- gnumeric_agm, NULL, NULL, NULL,
+ gnumeric_agm, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "arabic", "S", help_arabic,
- gnumeric_arabic, NULL, NULL, NULL,
+ gnumeric_arabic, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "asin", "f", help_asin,
- gnumeric_asin, NULL, NULL, NULL,
+ gnumeric_asin, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "asinh", "f", help_asinh,
- gnumeric_asinh, NULL, NULL, NULL,
+ gnumeric_asinh, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "atan", "f", help_atan,
- gnumeric_atan, NULL, NULL, NULL,
+ gnumeric_atan, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "atanh", "f", help_atanh,
- gnumeric_atanh, NULL, NULL, NULL,
+ gnumeric_atanh, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "atan2", "ff", help_atan2,
- gnumeric_atan2, NULL, NULL, NULL,
+ gnumeric_atan2, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "beta", "ff", help_beta,
- gnumeric_beta, NULL, NULL, NULL,
+ gnumeric_beta, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "betaln", "ff", help_betaln,
- gnumeric_betaln, NULL, NULL, NULL,
+ gnumeric_betaln, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "cholesky","A", help_cholesky,
- gnumeric_cholesky, NULL, NULL, NULL,
+ gnumeric_cholesky, NULL,
GNM_FUNC_RETURNS_NON_SCALAR, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "cos", "f", help_cos,
- gnumeric_cos, NULL, NULL, NULL,
+ gnumeric_cos, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "cosh", "f", help_cosh,
- gnumeric_cosh, NULL, NULL, NULL,
+ gnumeric_cosh, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "cospi", "f", help_cospi,
- gnumeric_cospi, NULL, NULL, NULL,
+ gnumeric_cospi, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "cot", "f", help_cot,
- gnumeric_cot, NULL, NULL, NULL,
+ gnumeric_cot, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "cotpi", "f", help_cotpi,
- gnumeric_cotpi, NULL, NULL, NULL,
+ gnumeric_cotpi, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "coth", "f", help_coth,
- gnumeric_coth, NULL, NULL, NULL,
+ gnumeric_coth, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "countif", "rS", help_countif,
- gnumeric_countif, NULL, NULL, NULL,
+ gnumeric_countif, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "countifs", NULL, help_countifs,
- NULL, gnumeric_countifs, NULL, NULL,
+ NULL, gnumeric_countifs,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "ceil", "f", help_ceil,
- gnumeric_ceil, NULL, NULL, NULL,
+ gnumeric_ceil, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "ceiling", "f|f", help_ceiling,
- gnumeric_ceiling, NULL, NULL, NULL,
+ gnumeric_ceiling, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "degrees", "f", help_degrees,
- gnumeric_degrees, NULL, NULL, NULL,
+ gnumeric_degrees, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "even", "f", help_even,
- gnumeric_even, NULL, NULL, NULL,
+ gnumeric_even, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "exp", "f", help_exp,
- gnumeric_exp, NULL, NULL, NULL,
+ gnumeric_exp, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "expm1", "f", help_expm1,
- gnumeric_expm1, NULL, NULL, NULL,
+ gnumeric_expm1, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "fact", "f", help_fact,
- gnumeric_fact, NULL, NULL, NULL,
+ gnumeric_fact, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_SUPERSET, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
/* MS Excel puts this in the engineering functions */
{ "factdouble", "f", help_factdouble,
- gnumeric_factdouble, NULL, NULL, NULL,
+ gnumeric_factdouble, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "fib", "f", help_fib,
- gnumeric_fib, NULL, NULL, NULL,
+ gnumeric_fib, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "combin", "ff", help_combin,
- gnumeric_combin, NULL, NULL, NULL,
+ gnumeric_combin, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "combina", "ff", help_combina,
- gnumeric_combina, NULL, NULL, NULL,
+ gnumeric_combina, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "csc", "f", help_csc,
- gnumeric_csc, NULL, NULL, NULL,
+ gnumeric_csc, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "csch", "f", help_csch,
- gnumeric_csch, NULL, NULL, NULL,
+ gnumeric_csch, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "floor", "f|f", help_floor,
- gnumeric_floor, NULL, NULL, NULL,
+ gnumeric_floor, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "gamma", "f", help_gamma,
- gnumeric_gamma, NULL, NULL, NULL,
+ gnumeric_gamma, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "gammaln", "f",
- help_gammaln, gnumeric_gammaln, NULL, NULL, NULL,
+ help_gammaln, gnumeric_gammaln, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "gcd", NULL, help_gcd,
- NULL, gnumeric_gcd, NULL, NULL,
+ NULL, gnumeric_gcd,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "gd", "f", help_gd,
- gnumeric_gd, NULL, NULL, NULL,
+ gnumeric_gd, NULL,
GNM_FUNC_SIMPLE,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "hypot", NULL, help_hypot,
- NULL, gnumeric_hypot, NULL, NULL,
+ NULL, gnumeric_hypot,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "igamma", "ff|bbb", help_igamma,
- gnumeric_igamma, NULL, NULL, NULL,
+ gnumeric_igamma, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "int", "f", help_int,
- gnumeric_int, NULL, NULL, NULL,
+ gnumeric_int, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "lcm", NULL, help_lcm,
- NULL, gnumeric_lcm, NULL, NULL,
+ NULL, gnumeric_lcm,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "ln", "f", help_ln,
- gnumeric_ln, NULL, NULL, NULL,
+ gnumeric_ln, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "ln1p", "f", help_ln1p,
- gnumeric_ln1p, NULL, NULL, NULL,
+ gnumeric_ln1p, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "log", "f|f", help_log,
- gnumeric_log, NULL, NULL, NULL,
+ gnumeric_log, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "log2", "f", help_log2,
- gnumeric_log2, NULL, NULL, NULL,
+ gnumeric_log2, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "log10", "f", help_log10,
- gnumeric_log10, NULL, NULL, NULL,
+ gnumeric_log10, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "mod", "ff", help_mod,
- gnumeric_mod, NULL, NULL, NULL,
+ gnumeric_mod, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "mround", "ff", help_mround,
- gnumeric_mround, NULL, NULL, NULL,
+ gnumeric_mround, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "multinomial", NULL, help_multinomial,
- NULL, gnumeric_multinomial, NULL, NULL,
+ NULL, gnumeric_multinomial,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "odd" , "f", help_odd,
- gnumeric_odd, NULL, NULL, NULL,
+ gnumeric_odd, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "power", "ff|f", help_power,
- gnumeric_power, NULL, NULL, NULL,
+ gnumeric_power, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_SUPERSET, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "pochhammer", "ff", help_pochhammer,
- gnumeric_pochhammer, NULL, NULL, NULL,
+ gnumeric_pochhammer, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "g_product", NULL, help_g_product,
- NULL, gnumeric_g_product, NULL, NULL,
+ NULL, gnumeric_g_product,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "quotient" , "ff", help_quotient,
- gnumeric_quotient, NULL, NULL, NULL,
+ gnumeric_quotient, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "radians", "f", help_radians,
- gnumeric_radians, NULL, NULL, NULL,
+ gnumeric_radians, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "reducepi", "ff|f", help_reducepi,
- gnumeric_reducepi, NULL, NULL, NULL,
+ gnumeric_reducepi, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "roman", "f|f", help_roman,
- gnumeric_roman, NULL, NULL, NULL,
+ gnumeric_roman, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "round", "f|f", help_round,
- gnumeric_round, NULL, NULL, NULL,
+ gnumeric_round, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "rounddown", "f|f", help_rounddown,
- gnumeric_rounddown, NULL, NULL, NULL,
+ gnumeric_rounddown, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "roundup", "f|f", help_roundup,
- gnumeric_roundup, NULL, NULL, NULL,
+ gnumeric_roundup, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "sec", "f", help_sec,
- gnumeric_sec, NULL, NULL, NULL,
+ gnumeric_sec, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "sech", "f", help_sech,
- gnumeric_sech, NULL, NULL, NULL,
+ gnumeric_sech, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "seriessum", "fffA", help_seriessum,
- gnumeric_seriessum, NULL, NULL, NULL,
+ gnumeric_seriessum, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "sign", "f", help_sign,
- gnumeric_sign, NULL, NULL, NULL,
+ gnumeric_sign, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "sin", "f", help_sin,
- gnumeric_sin, NULL, NULL, NULL,
+ gnumeric_sin, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "sinh", "f", help_sinh,
- gnumeric_sinh, NULL, NULL, NULL,
+ gnumeric_sinh, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "sinpi", "f", help_sinpi,
- gnumeric_sinpi, NULL, NULL, NULL,
+ gnumeric_sinpi, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "sqrt", "f", help_sqrt,
- gnumeric_sqrt, NULL, NULL, NULL,
+ gnumeric_sqrt, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "sqrtpi", "f", help_sqrtpi,
- gnumeric_sqrtpi, NULL, NULL, NULL,
+ gnumeric_sqrtpi, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "suma", NULL, help_suma,
- NULL, gnumeric_suma, NULL, NULL,
+ NULL, gnumeric_suma,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "sumif", "rS|r", help_sumif,
- gnumeric_sumif, NULL, NULL, NULL,
+ gnumeric_sumif, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "sumifs", NULL, help_sumifs,
- NULL, gnumeric_sumifs, NULL, NULL,
+ NULL, gnumeric_sumifs,
GNM_FUNC_SIMPLE,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "averageif", "rS|r", help_averageif,
- gnumeric_averageif, NULL, NULL, NULL,
+ gnumeric_averageif, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "averageifs", NULL, help_averageifs,
- NULL, gnumeric_averageifs, NULL, NULL,
+ NULL, gnumeric_averageifs,
GNM_FUNC_SIMPLE,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "minifs", NULL, help_minifs,
- NULL, gnumeric_minifs, NULL, NULL,
+ NULL, gnumeric_minifs,
GNM_FUNC_SIMPLE,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "maxifs", NULL, help_maxifs,
- NULL, gnumeric_maxifs, NULL, NULL,
+ NULL, gnumeric_maxifs,
GNM_FUNC_SIMPLE,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "sumproduct", NULL, help_sumproduct,
- NULL, gnumeric_sumproduct, NULL, NULL,
+ NULL, gnumeric_sumproduct,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "odf.sumproduct", NULL, help_odf_sumproduct,
- NULL, gnumeric_odf_sumproduct, NULL, NULL,
+ NULL, gnumeric_odf_sumproduct,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "sumsq", NULL, help_sumsq,
- NULL, gnumeric_sumsq, NULL, NULL,
+ NULL, gnumeric_sumsq,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "sumx2my2", "AA", help_sumx2my2,
- gnumeric_sumx2my2, NULL, NULL, NULL,
+ gnumeric_sumx2my2, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "sumx2py2", "AA", help_sumx2py2,
- gnumeric_sumx2py2, NULL, NULL, NULL,
+ gnumeric_sumx2py2, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "sumxmy2", "AA", help_sumxmy2,
- gnumeric_sumxmy2, NULL, NULL, NULL,
+ gnumeric_sumxmy2, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "tan", "f", help_tan,
- gnumeric_tan, NULL, NULL, NULL,
+ gnumeric_tan, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "tanpi", "f", help_tanpi,
- gnumeric_tanpi, NULL, NULL, NULL,
+ gnumeric_tanpi, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "tanh", "f", help_tanh,
- gnumeric_tanh, NULL, NULL, NULL,
+ gnumeric_tanh, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "trunc", "f|f", help_trunc,
- gnumeric_trunc, NULL, NULL, NULL,
+ gnumeric_trunc, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "pi", "", help_pi,
- gnumeric_pi, NULL, NULL, NULL,
+ gnumeric_pi, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "mmult", "AA", help_mmult,
- gnumeric_mmult, NULL, NULL, NULL,
+ gnumeric_mmult, NULL,
GNM_FUNC_RETURNS_NON_SCALAR, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "minverse","A", help_minverse,
- gnumeric_minverse, NULL, NULL, NULL,
+ gnumeric_minverse, NULL,
GNM_FUNC_RETURNS_NON_SCALAR, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "mpseudoinverse","A|f", help_mpseudoinverse,
- gnumeric_mpseudoinverse, NULL, NULL, NULL,
+ gnumeric_mpseudoinverse, NULL,
GNM_FUNC_RETURNS_NON_SCALAR, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "linsolve", "AA", help_linsolve,
- gnumeric_linsolve, NULL, NULL, NULL,
+ gnumeric_linsolve, NULL,
GNM_FUNC_RETURNS_NON_SCALAR, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "mdeterm", "A", help_mdeterm,
- gnumeric_mdeterm, NULL, NULL, NULL,
+ gnumeric_mdeterm, NULL,
GNM_FUNC_RETURNS_NON_SCALAR, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "munit","f", help_munit,
- gnumeric_munit, NULL, NULL, NULL,
+ gnumeric_munit, NULL,
GNM_FUNC_RETURNS_NON_SCALAR, GNM_FUNC_IMPL_STATUS_COMPLETE,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "eigen","A", help_eigen,
- gnumeric_eigen, NULL, NULL, NULL,
+ gnumeric_eigen, NULL,
GNM_FUNC_RETURNS_NON_SCALAR, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
#if 0
{ "logmdeterm", "A|si",
diff --git a/plugins/fn-numtheory/numtheory.c b/plugins/fn-numtheory/numtheory.c
index 0adf9ae95..f2ce4e0ef 100644
--- a/plugins/fn-numtheory/numtheory.c
+++ b/plugins/fn-numtheory/numtheory.c
@@ -713,31 +713,31 @@ go_plugin_shutdown (GOPlugin *plugin, GOCmdContext *cc)
const GnmFuncDescriptor num_theory_functions[] = {
{"ithprime", "f", help_ithprime,
- &gnumeric_ithprime, NULL, NULL, NULL,
+ &gnumeric_ithprime, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{"pfactor", "f", help_pfactor,
- &gnumeric_pfactor, NULL, NULL, NULL,
+ &gnumeric_pfactor, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{"nt_omega", "f", help_nt_omega,
- &gnumeric_nt_omega, NULL, NULL, NULL,
+ &gnumeric_nt_omega, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{"nt_phi", "f", help_phi,
- &gnumeric_phi, NULL, NULL, NULL,
+ &gnumeric_phi, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{"nt_d", "f", help_d,
- &gnumeric_d, NULL, NULL, NULL,
+ &gnumeric_d, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{"nt_sigma", "f", help_sigma,
- &gnumeric_sigma, NULL, NULL, NULL,
+ &gnumeric_sigma, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{"isprime", "f", help_isprime,
- &gnumeric_isprime, NULL, NULL, NULL,
+ &gnumeric_isprime, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{"nt_pi", "f", help_nt_pi,
- &gnumeric_nt_pi, NULL, NULL, NULL,
+ &gnumeric_nt_pi, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{"nt_mu", "f", help_nt_mu,
- &gnumeric_nt_mu, NULL, NULL, NULL,
+ &gnumeric_nt_mu, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{NULL}
@@ -745,19 +745,19 @@ const GnmFuncDescriptor num_theory_functions[] = {
const GnmFuncDescriptor bitwise_functions[] = {
{"bitor", "ff", help_bitor,
- &func_bitor, NULL, NULL, NULL,
+ &func_bitor, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{"bitxor", "ff", help_bitxor,
- &func_bitxor, NULL, NULL, NULL,
+ &func_bitxor, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{"bitand", "ff", help_bitand,
- &func_bitand, NULL, NULL, NULL,
+ &func_bitand, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{"bitlshift", "ff", help_bitlshift,
- &func_bitlshift, NULL, NULL, NULL,
+ &func_bitlshift, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{"bitrshift", "ff", help_bitrshift,
- &func_bitrshift, NULL, NULL, NULL,
+ &func_bitrshift, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{NULL}
};
diff --git a/plugins/fn-r/functions.c b/plugins/fn-r/functions.c
index 27c658965..8f92a3d73 100644
--- a/plugins/fn-r/functions.c
+++ b/plugins/fn-r/functions.c
@@ -1574,413 +1574,413 @@ GnmFuncDescriptor const rstat_functions[] = {
"r.dbeta",
"fff|b",
help_r_dbeta,
- gnumeric_r_dbeta, NULL, NULL, NULL,
+ gnumeric_r_dbeta, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.pbeta",
"fff|bb",
help_r_pbeta,
- gnumeric_r_pbeta, NULL, NULL, NULL,
+ gnumeric_r_pbeta, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.qbeta",
"fff|bb",
help_r_qbeta,
- gnumeric_r_qbeta, NULL, NULL, NULL,
+ gnumeric_r_qbeta, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.dbinom",
"fff|b",
help_r_dbinom,
- gnumeric_r_dbinom, NULL, NULL, NULL,
+ gnumeric_r_dbinom, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.pbinom",
"fff|bb",
help_r_pbinom,
- gnumeric_r_pbinom, NULL, NULL, NULL,
+ gnumeric_r_pbinom, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.qbinom",
"fff|bb",
help_r_qbinom,
- gnumeric_r_qbinom, NULL, NULL, NULL,
+ gnumeric_r_qbinom, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.dcauchy",
"fff|b",
help_r_dcauchy,
- gnumeric_r_dcauchy, NULL, NULL, NULL,
+ gnumeric_r_dcauchy, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.pcauchy",
"fff|bb",
help_r_pcauchy,
- gnumeric_r_pcauchy, NULL, NULL, NULL,
+ gnumeric_r_pcauchy, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.qcauchy",
"fff|bb",
help_r_qcauchy,
- gnumeric_r_qcauchy, NULL, NULL, NULL,
+ gnumeric_r_qcauchy, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.dchisq",
"ff|b",
help_r_dchisq,
- gnumeric_r_dchisq, NULL, NULL, NULL,
+ gnumeric_r_dchisq, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.pchisq",
"ff|bb",
help_r_pchisq,
- gnumeric_r_pchisq, NULL, NULL, NULL,
+ gnumeric_r_pchisq, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.qchisq",
"ff|bb",
help_r_qchisq,
- gnumeric_r_qchisq, NULL, NULL, NULL,
+ gnumeric_r_qchisq, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.dexp",
"ff|b",
help_r_dexp,
- gnumeric_r_dexp, NULL, NULL, NULL,
+ gnumeric_r_dexp, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.pexp",
"ff|bb",
help_r_pexp,
- gnumeric_r_pexp, NULL, NULL, NULL,
+ gnumeric_r_pexp, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.qexp",
"ff|bb",
help_r_qexp,
- gnumeric_r_qexp, NULL, NULL, NULL,
+ gnumeric_r_qexp, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.df",
"fff|b",
help_r_df,
- gnumeric_r_df, NULL, NULL, NULL,
+ gnumeric_r_df, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.pf",
"fff|bb",
help_r_pf,
- gnumeric_r_pf, NULL, NULL, NULL,
+ gnumeric_r_pf, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.qf",
"fff|bb",
help_r_qf,
- gnumeric_r_qf, NULL, NULL, NULL,
+ gnumeric_r_qf, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.dgamma",
"fff|b",
help_r_dgamma,
- gnumeric_r_dgamma, NULL, NULL, NULL,
+ gnumeric_r_dgamma, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.pgamma",
"fff|bb",
help_r_pgamma,
- gnumeric_r_pgamma, NULL, NULL, NULL,
+ gnumeric_r_pgamma, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.qgamma",
"fff|bb",
help_r_qgamma,
- gnumeric_r_qgamma, NULL, NULL, NULL,
+ gnumeric_r_qgamma, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.dgeom",
"ff|b",
help_r_dgeom,
- gnumeric_r_dgeom, NULL, NULL, NULL,
+ gnumeric_r_dgeom, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.pgeom",
"ff|bb",
help_r_pgeom,
- gnumeric_r_pgeom, NULL, NULL, NULL,
+ gnumeric_r_pgeom, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.qgeom",
"ff|bb",
help_r_qgeom,
- gnumeric_r_qgeom, NULL, NULL, NULL,
+ gnumeric_r_qgeom, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.dgumbel",
"fff|b",
help_r_dgumbel,
- gnumeric_r_dgumbel, NULL, NULL, NULL,
+ gnumeric_r_dgumbel, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.pgumbel",
"fff|bb",
help_r_pgumbel,
- gnumeric_r_pgumbel, NULL, NULL, NULL,
+ gnumeric_r_pgumbel, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.qgumbel",
"fff|bb",
help_r_qgumbel,
- gnumeric_r_qgumbel, NULL, NULL, NULL,
+ gnumeric_r_qgumbel, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.dhyper",
"ffff|b",
help_r_dhyper,
- gnumeric_r_dhyper, NULL, NULL, NULL,
+ gnumeric_r_dhyper, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.phyper",
"ffff|bb",
help_r_phyper,
- gnumeric_r_phyper, NULL, NULL, NULL,
+ gnumeric_r_phyper, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.qhyper",
"ffff|bb",
help_r_qhyper,
- gnumeric_r_qhyper, NULL, NULL, NULL,
+ gnumeric_r_qhyper, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.dlnorm",
"fff|b",
help_r_dlnorm,
- gnumeric_r_dlnorm, NULL, NULL, NULL,
+ gnumeric_r_dlnorm, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.plnorm",
"fff|bb",
help_r_plnorm,
- gnumeric_r_plnorm, NULL, NULL, NULL,
+ gnumeric_r_plnorm, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.qlnorm",
"fff|bb",
help_r_qlnorm,
- gnumeric_r_qlnorm, NULL, NULL, NULL,
+ gnumeric_r_qlnorm, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.dnbinom",
"fff|b",
help_r_dnbinom,
- gnumeric_r_dnbinom, NULL, NULL, NULL,
+ gnumeric_r_dnbinom, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.pnbinom",
"fff|bb",
help_r_pnbinom,
- gnumeric_r_pnbinom, NULL, NULL, NULL,
+ gnumeric_r_pnbinom, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.qnbinom",
"fff|bb",
help_r_qnbinom,
- gnumeric_r_qnbinom, NULL, NULL, NULL,
+ gnumeric_r_qnbinom, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.dnorm",
"fff|b",
help_r_dnorm,
- gnumeric_r_dnorm, NULL, NULL, NULL,
+ gnumeric_r_dnorm, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.pnorm",
"fff|bb",
help_r_pnorm,
- gnumeric_r_pnorm, NULL, NULL, NULL,
+ gnumeric_r_pnorm, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.qnorm",
"fff|bb",
help_r_qnorm,
- gnumeric_r_qnorm, NULL, NULL, NULL,
+ gnumeric_r_qnorm, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.dpois",
"ff|b",
help_r_dpois,
- gnumeric_r_dpois, NULL, NULL, NULL,
+ gnumeric_r_dpois, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.ppois",
"ff|bb",
help_r_ppois,
- gnumeric_r_ppois, NULL, NULL, NULL,
+ gnumeric_r_ppois, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.qpois",
"ff|bb",
help_r_qpois,
- gnumeric_r_qpois, NULL, NULL, NULL,
+ gnumeric_r_qpois, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.drayleigh",
"ff|b",
help_r_drayleigh,
- gnumeric_r_drayleigh, NULL, NULL, NULL,
+ gnumeric_r_drayleigh, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.prayleigh",
"ff|bb",
help_r_prayleigh,
- gnumeric_r_prayleigh, NULL, NULL, NULL,
+ gnumeric_r_prayleigh, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.qrayleigh",
"ff|bb",
help_r_qrayleigh,
- gnumeric_r_qrayleigh, NULL, NULL, NULL,
+ gnumeric_r_qrayleigh, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.dsnorm",
"ffff|b",
help_r_dsnorm,
- gnumeric_r_dsnorm, NULL, NULL, NULL,
+ gnumeric_r_dsnorm, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.psnorm",
"ffff|bb",
help_r_psnorm,
- gnumeric_r_psnorm, NULL, NULL, NULL,
+ gnumeric_r_psnorm, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.qsnorm",
"ffff|bb",
help_r_qsnorm,
- gnumeric_r_qsnorm, NULL, NULL, NULL,
+ gnumeric_r_qsnorm, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.dst",
"fff|b",
help_r_dst,
- gnumeric_r_dst, NULL, NULL, NULL,
+ gnumeric_r_dst, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.pst",
"fff|bb",
help_r_pst,
- gnumeric_r_pst, NULL, NULL, NULL,
+ gnumeric_r_pst, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.qst",
"fff|bb",
help_r_qst,
- gnumeric_r_qst, NULL, NULL, NULL,
+ gnumeric_r_qst, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.dt",
"ff|b",
help_r_dt,
- gnumeric_r_dt, NULL, NULL, NULL,
+ gnumeric_r_dt, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.pt",
"ff|bb",
help_r_pt,
- gnumeric_r_pt, NULL, NULL, NULL,
+ gnumeric_r_pt, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.qt",
"ff|bb",
help_r_qt,
- gnumeric_r_qt, NULL, NULL, NULL,
+ gnumeric_r_qt, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.ptukey",
"fff|fbb",
help_r_ptukey,
- gnumeric_r_ptukey, NULL, NULL, NULL,
+ gnumeric_r_ptukey, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.qtukey",
"fff|fbb",
help_r_qtukey,
- gnumeric_r_qtukey, NULL, NULL, NULL,
+ gnumeric_r_qtukey, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{
"r.dweibull",
"fff|b",
help_r_dweibull,
- gnumeric_r_dweibull, NULL, NULL, NULL,
+ gnumeric_r_dweibull, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.pweibull",
"fff|bb",
help_r_pweibull,
- gnumeric_r_pweibull, NULL, NULL, NULL,
+ gnumeric_r_pweibull, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{
"r.qweibull",
"fff|bb",
help_r_qweibull,
- gnumeric_r_qweibull, NULL, NULL, NULL,
+ gnumeric_r_qweibull, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE,
},
{ NULL }
diff --git a/plugins/fn-r/generate b/plugins/fn-r/generate
index f429b3f3c..2c6783118 100644
--- a/plugins/fn-r/generate
+++ b/plugins/fn-r/generate
@@ -455,7 +455,7 @@ sub distribution {
"\t\t\"r.$func\",\n" .
"\t\t\"$typespec\",\n" .
"\t\thelp_r_$func,\n" .
- "\t\tgnumeric_r_$func, NULL, NULL, NULL,\n" .
+ "\t\tgnumeric_r_$func, NULL,\n" .
"\t\tGNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_$test_status,\n" .
"\t},\n");
}
diff --git a/plugins/fn-random/functions.c b/plugins/fn-random/functions.c
index b1e09e1c9..f88a6de1e 100644
--- a/plugins/fn-random/functions.c
+++ b/plugins/fn-random/functions.c
@@ -971,139 +971,139 @@ gnumeric_randstdist (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
GnmFuncDescriptor const random_functions[] = {
{ "rand", "", help_rand,
- gnumeric_rand, NULL, NULL, NULL,
+ gnumeric_rand, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randbernoulli", "f", help_randbernoulli,
- gnumeric_randbernoulli, NULL, NULL, NULL,
+ gnumeric_randbernoulli, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randbeta", "ff", help_randbeta,
- gnumeric_randbeta, NULL, NULL, NULL,
+ gnumeric_randbeta, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randbetween", "ff", help_randbetween,
- gnumeric_randbetween, NULL, NULL, NULL,
+ gnumeric_randbetween, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randbinom", "ff", help_randbinom,
- gnumeric_randbinom, NULL, NULL, NULL,
+ gnumeric_randbinom, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randcauchy", "f", help_randcauchy,
- gnumeric_randcauchy, NULL, NULL, NULL,
+ gnumeric_randcauchy, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randchisq", "f", help_randchisq,
- gnumeric_randchisq, NULL, NULL, NULL,
+ gnumeric_randchisq, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randdiscrete", "r|r",
- help_randdiscrete, gnumeric_randdiscrete, NULL, NULL, NULL,
+ help_randdiscrete, gnumeric_randdiscrete, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randexp", "f", help_randexp,
- gnumeric_randexp, NULL, NULL, NULL,
+ gnumeric_randexp, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randexppow", "ff", help_randexppow,
- gnumeric_randexppow, NULL, NULL, NULL,
+ gnumeric_randexppow, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "randfdist", "ff", help_randfdist,
- gnumeric_randfdist, NULL, NULL, NULL,
+ gnumeric_randfdist, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randgamma", "ff", help_randgamma,
- gnumeric_randgamma, NULL, NULL, NULL,
+ gnumeric_randgamma, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randnormtail", "ff", help_randnormtail,
- gnumeric_randnormtail, NULL, NULL, NULL,
+ gnumeric_randnormtail, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "randgeom", "f", help_randgeom,
- gnumeric_randgeom, NULL, NULL, NULL,
+ gnumeric_randgeom, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randgumbel", "ff|f", help_randgumbel,
- gnumeric_randgumbel, NULL, NULL, NULL,
+ gnumeric_randgumbel, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "randhyperg", "fff", help_randhyperg,
- gnumeric_randhyperg, NULL, NULL, NULL,
+ gnumeric_randhyperg, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randlandau", "", help_randlandau,
- gnumeric_randlandau, NULL, NULL, NULL,
+ gnumeric_randlandau, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "randlaplace", "f", help_randlaplace,
- gnumeric_randlaplace, NULL, NULL, NULL,
+ gnumeric_randlaplace, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "randlevy", "ff|f", help_randlevy,
- gnumeric_randlevy, NULL, NULL, NULL,
+ gnumeric_randlevy, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "randlog", "f", help_randlog,
- gnumeric_randlog, NULL, NULL, NULL,
+ gnumeric_randlog, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randlogistic", "f", help_randlogistic,
- gnumeric_randlogistic, NULL, NULL, NULL,
+ gnumeric_randlogistic, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "randlognorm", "ff", help_randlognorm,
- gnumeric_randlognorm, NULL, NULL, NULL,
+ gnumeric_randlognorm, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randnegbinom", "ff", help_randnegbinom,
- gnumeric_randnegbinom, NULL, NULL, NULL,
+ gnumeric_randnegbinom, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randnorm", "ff", help_randnorm,
- gnumeric_randnorm, NULL, NULL, NULL,
+ gnumeric_randnorm, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randpareto", "ff", help_randpareto,
- gnumeric_randpareto, NULL, NULL, NULL,
+ gnumeric_randpareto, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "randpoisson", "f", help_randpoisson,
- gnumeric_randpoisson, NULL, NULL, NULL,
+ gnumeric_randpoisson, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randrayleigh", "f", help_randrayleigh,
- gnumeric_randrayleigh, NULL, NULL, NULL,
+ gnumeric_randrayleigh, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randrayleightail", "ff", help_randrayleightail,
- gnumeric_randrayleightail, NULL, NULL, NULL,
+ gnumeric_randrayleightail, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "randsnorm", "|fff", help_randsnorm,
- gnumeric_randsnorm, NULL, NULL, NULL,
+ gnumeric_randsnorm, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randstdist", "ff", help_randstdist,
- gnumeric_randstdist, NULL, NULL, NULL,
+ gnumeric_randstdist, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "randtdist", "f", help_randtdist,
- gnumeric_randtdist, NULL, NULL, NULL,
+ gnumeric_randtdist, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randuniform", "ff", help_randuniform,
- gnumeric_randuniform, NULL, NULL, NULL,
+ gnumeric_randuniform, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "randweibull", "ff", help_randweibull,
- gnumeric_randweibull, NULL, NULL, NULL,
+ gnumeric_randweibull, NULL,
GNM_FUNC_SIMPLE | GNM_FUNC_VOLATILE,
GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "simtable", NULL, help_simtable,
- NULL, gnumeric_simtable, NULL, NULL,
+ NULL, gnumeric_simtable,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{NULL}
diff --git a/plugins/fn-stat/functions.c b/plugins/fn-stat/functions.c
index 59ce410ba..945f2f30b 100644
--- a/plugins/fn-stat/functions.c
+++ b/plugins/fn-stat/functions.c
@@ -5321,369 +5321,369 @@ gnumeric_adtest (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
GnmFuncDescriptor const stat_functions[] = {
{ "adtest", "A",
- help_adtest, gnumeric_adtest, NULL, NULL, NULL,
+ help_adtest, gnumeric_adtest, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{ "sftest", "A",
- help_sftest, gnumeric_sftest, NULL, NULL, NULL,
+ help_sftest, gnumeric_sftest, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{ "cvmtest", "A",
- help_cvmtest, gnumeric_cvmtest, NULL, NULL, NULL,
+ help_cvmtest, gnumeric_cvmtest, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{ "lkstest", "A",
- help_lkstest, gnumeric_lkstest, NULL, NULL, NULL,
+ help_lkstest, gnumeric_lkstest, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{ "avedev", NULL,
- help_avedev, NULL, gnumeric_avedev, NULL, NULL,
+ help_avedev, NULL, gnumeric_avedev,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "average", NULL,
- help_average, NULL, gnumeric_average, NULL, NULL,
+ help_average, NULL, gnumeric_average,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "averagea", NULL,
- help_averagea, NULL, gnumeric_averagea, NULL, NULL,
+ help_averagea, NULL, gnumeric_averagea,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "bernoulli", "ff", help_bernoulli,
- gnumeric_bernoulli, NULL, NULL, NULL,
+ gnumeric_bernoulli, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "betadist", "fff|ff",
- help_betadist, gnumeric_betadist, NULL, NULL, NULL,
+ help_betadist, gnumeric_betadist, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "beta.dist", "fffb|ff",
- help_beta_dist, gnumeric_beta_dist, NULL, NULL, NULL,
+ help_beta_dist, gnumeric_beta_dist, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "betainv", "fff|ff",
- help_betainv, gnumeric_betainv, NULL, NULL, NULL,
+ help_betainv, gnumeric_betainv, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "binomdist", "fffb",
- help_binomdist, gnumeric_binomdist, NULL, NULL, NULL,
+ help_binomdist, gnumeric_binomdist, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "binom.dist.range", "fff|f",
- help_binom_dist_range, gnumeric_binom_dist_range, NULL, NULL, NULL,
+ help_binom_dist_range, gnumeric_binom_dist_range, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "cauchy", "ffb", help_cauchy,
- gnumeric_cauchy, NULL, NULL, NULL,
+ gnumeric_cauchy, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "chidist", "ff",
- help_chidist, gnumeric_chidist, NULL, NULL, NULL,
+ help_chidist, gnumeric_chidist, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "chiinv", "ff",
- help_chiinv, gnumeric_chiinv, NULL, NULL, NULL,
+ help_chiinv, gnumeric_chiinv, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "chitest", "AA",
- help_chitest, gnumeric_chitest, NULL, NULL, NULL,
+ help_chitest, gnumeric_chitest, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "confidence", "fff",
- help_confidence, gnumeric_confidence, NULL, NULL, NULL,
+ help_confidence, gnumeric_confidence, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "confidence.t", "fff",
- help_confidence_t, gnumeric_confidence_t, NULL, NULL, NULL,
+ help_confidence_t, gnumeric_confidence_t, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{ "correl", "AA",
- help_correl, gnumeric_correl, NULL, NULL, NULL,
+ help_correl, gnumeric_correl, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "count", NULL,
- help_count, NULL, gnumeric_count, NULL, NULL,
+ help_count, NULL, gnumeric_count,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "counta", NULL,
- help_counta, NULL, gnumeric_counta, NULL, NULL,
+ help_counta, NULL, gnumeric_counta,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "covar", "AA",
- help_covar, gnumeric_covar, NULL, NULL, NULL,
+ help_covar, gnumeric_covar, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "covariance.s", "AA",
- help_covariance_s, gnumeric_covariance_s, NULL, NULL, NULL,
+ help_covariance_s, gnumeric_covariance_s, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "critbinom", "fff",
- help_critbinom, gnumeric_critbinom, NULL, NULL, NULL,
+ help_critbinom, gnumeric_critbinom, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "devsq", NULL,
- help_devsq, NULL, gnumeric_devsq, NULL, NULL,
+ help_devsq, NULL, gnumeric_devsq,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "expondist", "ffb",
- help_expondist, gnumeric_expondist, NULL, NULL, NULL,
+ help_expondist, gnumeric_expondist, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "fdist", "fff",
- help_fdist, gnumeric_fdist, NULL, NULL, NULL,
+ help_fdist, gnumeric_fdist, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "finv", "fff",
- help_finv, gnumeric_finv, NULL, NULL, NULL,
+ help_finv, gnumeric_finv, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "fisher", "f",
- help_fisher, gnumeric_fisher, NULL, NULL, NULL,
+ help_fisher, gnumeric_fisher, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "fisherinv", "f",
- help_fisherinv, gnumeric_fisherinv, NULL, NULL, NULL,
+ help_fisherinv, gnumeric_fisherinv, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "forecast", "frr",
- help_forecast, gnumeric_forecast, NULL, NULL, NULL,
+ help_forecast, gnumeric_forecast, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "frequency", "AA",
- help_frequency, gnumeric_frequency, NULL, NULL, NULL,
+ help_frequency, gnumeric_frequency, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "ftest", "rr",
- help_ftest, gnumeric_ftest, NULL, NULL, NULL,
+ help_ftest, gnumeric_ftest, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "gammadist", "fffb",
- help_gammadist, gnumeric_gammadist, NULL, NULL, NULL,
+ help_gammadist, gnumeric_gammadist, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "gammainv", "fff",
- help_gammainv, gnumeric_gammainv, NULL, NULL, NULL,
+ help_gammainv, gnumeric_gammainv, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "geomean", NULL,
- help_geomean, NULL, gnumeric_geomean, NULL, NULL,
+ help_geomean, NULL, gnumeric_geomean,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "growth", "A|AAb",
- help_growth, gnumeric_growth, NULL, NULL, NULL,
+ help_growth, gnumeric_growth, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "harmean", NULL,
- help_harmean, NULL, gnumeric_harmean, NULL, NULL,
+ help_harmean, NULL, gnumeric_harmean,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "hypgeomdist", "ffff|b",
- help_hypgeomdist, gnumeric_hypgeomdist, NULL, NULL, NULL,
+ help_hypgeomdist, gnumeric_hypgeomdist, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "intercept", "AA",
- help_intercept, gnumeric_intercept, NULL, NULL, NULL,
+ help_intercept, gnumeric_intercept, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "kurt", NULL,
- help_kurt, NULL, gnumeric_kurt, NULL, NULL,
+ help_kurt, NULL, gnumeric_kurt,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "large", "Af",
- help_large, gnumeric_large, NULL, NULL, NULL,
+ help_large, gnumeric_large, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "leverage", "A", help_leverage,
- gnumeric_leverage, NULL, NULL, NULL,
+ gnumeric_leverage, NULL,
GNM_FUNC_RETURNS_NON_SCALAR, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "linest", "A|Abb",
- help_linest, gnumeric_linest, NULL, NULL, NULL,
+ help_linest, gnumeric_linest, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "logest", "A|Abb",
- help_logest, gnumeric_logest, NULL, NULL, NULL,
+ help_logest, gnumeric_logest, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "logfit", "rr",
- help_logfit, gnumeric_logfit, NULL, NULL, NULL,
+ help_logfit, gnumeric_logfit, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "loginv", "fff",
- help_loginv, gnumeric_loginv, NULL, NULL, NULL,
+ help_loginv, gnumeric_loginv, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "lognormdist", "fff",
- help_lognormdist, gnumeric_lognormdist, NULL, NULL, NULL,
+ help_lognormdist, gnumeric_lognormdist, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "logreg", "A|Abb",
- help_logreg, gnumeric_logreg, NULL, NULL, NULL,
+ help_logreg, gnumeric_logreg, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "max", NULL,
- help_max, NULL, gnumeric_max, NULL, NULL,
+ help_max, NULL, gnumeric_max,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "maxa", NULL,
- help_maxa, NULL, gnumeric_maxa, NULL, NULL,
+ help_maxa, NULL, gnumeric_maxa,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "median", NULL,
- help_median, NULL, gnumeric_median, NULL, NULL,
+ help_median, NULL, gnumeric_median,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "min", NULL,
- help_min, NULL, gnumeric_min, NULL, NULL,
+ help_min, NULL, gnumeric_min,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "mina", NULL,
- help_mina, NULL, gnumeric_mina, NULL, NULL,
+ help_mina, NULL, gnumeric_mina,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "mode", NULL,
- help_mode, NULL, gnumeric_mode, NULL, NULL,
+ help_mode, NULL, gnumeric_mode,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "mode.mult", NULL,
- help_mode_mult, NULL, gnumeric_mode_mult, NULL, NULL,
+ help_mode_mult, NULL, gnumeric_mode_mult,
GNM_FUNC_SIMPLE,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{ "negbinomdist", "fff",
- help_negbinomdist, gnumeric_negbinomdist, NULL, NULL, NULL,
+ help_negbinomdist, gnumeric_negbinomdist, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "normdist", "fffb",
- help_normdist, gnumeric_normdist, NULL, NULL, NULL,
+ help_normdist, gnumeric_normdist, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "snorm.dist.range", "ff",
- help_snorm_dist_range, gnumeric_snorm_dist_range, NULL, NULL, NULL,
+ help_snorm_dist_range, gnumeric_snorm_dist_range, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE,
},
{ "norminv", "fff",
- help_norminv, gnumeric_norminv, NULL, NULL, NULL,
+ help_norminv, gnumeric_norminv, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "normsdist", "f",
- help_normsdist, gnumeric_normsdist, NULL, NULL, NULL,
+ help_normsdist, gnumeric_normsdist, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "normsinv", "f",
- help_normsinv, gnumeric_normsinv, NULL, NULL, NULL,
+ help_normsinv, gnumeric_normsinv, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "owent", "ff",
- help_owent, gnumeric_owent, NULL, NULL, NULL,
+ help_owent, gnumeric_owent, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_EXHAUSTIVE },
{ "pearson", "AA",
- help_pearson, gnumeric_pearson, NULL, NULL, NULL,
+ help_pearson, gnumeric_pearson, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "percentile", "Af",
- help_percentile, gnumeric_percentile, NULL, NULL, NULL,
+ help_percentile, gnumeric_percentile, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "percentile.exc", "Af",
- help_percentile_exc, gnumeric_percentile_exc, NULL, NULL, NULL,
+ help_percentile_exc, gnumeric_percentile_exc, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{ "percentrank", "Af|f",
- help_percentrank, gnumeric_percentrank, NULL, NULL, NULL,
+ help_percentrank, gnumeric_percentrank, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "percentrank.exc", "Af|f",
- help_percentrank_exc, gnumeric_percentrank_exc, NULL, NULL, NULL,
+ help_percentrank_exc, gnumeric_percentrank_exc, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{ "permut", "ff",
- help_permut, gnumeric_permut, NULL, NULL, NULL,
+ help_permut, gnumeric_permut, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "poisson", "ffb",
- help_poisson, gnumeric_poisson, NULL, NULL, NULL,
+ help_poisson, gnumeric_poisson, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "prob", "AAf|f",
- help_prob, gnumeric_prob, NULL, NULL, NULL,
+ help_prob, gnumeric_prob, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "quartile", "Af",
- help_quartile, gnumeric_quartile, NULL, NULL, NULL,
+ help_quartile, gnumeric_quartile, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "quartile.exc", "Af",
- help_quartile_exc, gnumeric_quartile_exc, NULL, NULL, NULL,
+ help_quartile_exc, gnumeric_quartile_exc, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{ "rank", "fr|b",
- help_rank, gnumeric_rank, NULL, NULL, NULL,
+ help_rank, gnumeric_rank, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "rank.avg", "fr|b",
- help_rank_avg, gnumeric_rank_avg, NULL, NULL, NULL,
+ help_rank_avg, gnumeric_rank_avg, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE},
{ "slope", "AA",
- help_slope, gnumeric_slope, NULL, NULL, NULL,
+ help_slope, gnumeric_slope, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "small", "Af",
- help_small, gnumeric_small, NULL, NULL, NULL,
+ help_small, gnumeric_small, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "standardize", "fff",
- help_standardize, gnumeric_standardize, NULL, NULL, NULL,
+ help_standardize, gnumeric_standardize, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "ssmedian", "A|f",
- help_ssmedian, gnumeric_ssmedian, NULL, NULL, NULL,
+ help_ssmedian, gnumeric_ssmedian, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "stdev", NULL,
- help_stdev, NULL, gnumeric_stdev, NULL, NULL,
+ help_stdev, NULL, gnumeric_stdev,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "stdeva", NULL,
- help_stdeva, NULL, gnumeric_stdeva, NULL, NULL,
+ help_stdeva, NULL, gnumeric_stdeva,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "stdevp", NULL,
- help_stdevp, NULL, gnumeric_stdevp, NULL, NULL,
+ help_stdevp, NULL, gnumeric_stdevp,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "stdevpa", NULL,
- help_stdevpa, NULL, gnumeric_stdevpa, NULL, NULL,
+ help_stdevpa, NULL, gnumeric_stdevpa,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "steyx", "AA",
- help_steyx, gnumeric_steyx, NULL, NULL, NULL,
+ help_steyx, gnumeric_steyx, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "rsq", "AA",
- help_rsq, gnumeric_rsq, NULL, NULL, NULL,
+ help_rsq, gnumeric_rsq, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "skew", NULL,
- help_skew, NULL, gnumeric_skew, NULL, NULL,
+ help_skew, NULL, gnumeric_skew,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "tdist", "fff",
- help_tdist, gnumeric_tdist, NULL, NULL, NULL,
+ help_tdist, gnumeric_tdist, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "tinv", "ff",
- help_tinv, gnumeric_tinv, NULL, NULL, NULL,
+ help_tinv, gnumeric_tinv, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "trend", "A|AAb",
- help_trend, gnumeric_trend, NULL, NULL, NULL,
+ help_trend, gnumeric_trend, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "trimmean", "rf",
- help_trimmean, gnumeric_trimmean, NULL, NULL, NULL,
+ help_trimmean, gnumeric_trimmean, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "ttest", "rrff",
- help_ttest, gnumeric_ttest, NULL, NULL, NULL,
+ help_ttest, gnumeric_ttest, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "var", NULL,
- help_var, NULL, gnumeric_var, NULL, NULL,
+ help_var, NULL, gnumeric_var,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "vara", NULL,
- help_vara, NULL, gnumeric_vara, NULL, NULL,
+ help_vara, NULL, gnumeric_vara,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "varp", NULL,
- help_varp, NULL, gnumeric_varp, NULL, NULL,
+ help_varp, NULL, gnumeric_varp,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "varpa", NULL,
- help_varpa, NULL, gnumeric_varpa, NULL, NULL,
+ help_varpa, NULL, gnumeric_varpa,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "weibull", "fffb",
- help_weibull, gnumeric_weibull, NULL, NULL, NULL,
+ help_weibull, gnumeric_weibull, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "ztest", "Af|f",
- help_ztest, gnumeric_ztest, NULL, NULL, NULL,
+ help_ztest, gnumeric_ztest, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "exppowdist", "fff", help_exppowdist,
- gnumeric_exppowdist, NULL, NULL, NULL,
+ gnumeric_exppowdist, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "geomdist", "ffb", help_geomdist,
- gnumeric_geomdist, NULL, NULL, NULL,
+ gnumeric_geomdist, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "kurtp", NULL,
- help_kurtp, NULL, gnumeric_kurtp, NULL, NULL,
+ help_kurtp, NULL, gnumeric_kurtp,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "landau", "f", help_landau,
- gnumeric_landau, NULL, NULL, NULL,
+ gnumeric_landau, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "laplace", "ff", help_laplace,
- gnumeric_laplace, NULL, NULL, NULL,
+ gnumeric_laplace, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "logistic", "ff", help_logistic,
- gnumeric_logistic, NULL, NULL, NULL,
+ gnumeric_logistic, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "pareto", "fff", help_pareto,
- gnumeric_pareto, NULL, NULL, NULL,
+ gnumeric_pareto, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "rayleigh", "ff", help_rayleigh,
- gnumeric_rayleigh, NULL, NULL, NULL,
+ gnumeric_rayleigh, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "rayleightail", "fff", help_rayleightail,
- gnumeric_rayleightail, NULL, NULL, NULL,
+ gnumeric_rayleightail, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "skewp", NULL,
- help_skewp, NULL, gnumeric_skewp, NULL, NULL,
+ help_skewp, NULL, gnumeric_skewp,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "subtotal", NULL,
- help_subtotal, NULL, gnumeric_subtotal, NULL, NULL,
+ help_subtotal, NULL, gnumeric_subtotal,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "cronbach", NULL,
- help_cronbach, NULL, gnumeric_cronbach, NULL, NULL,
+ help_cronbach, NULL, gnumeric_cronbach,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "permutationa", "ff", help_permutationa,
- gnumeric_permutationa, NULL, NULL, NULL,
+ gnumeric_permutationa, NULL,
GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_UNITLESS,
GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
diff --git a/plugins/fn-string/functions.c b/plugins/fn-string/functions.c
index f5a75aa9a..5789eeced 100644
--- a/plugins/fn-string/functions.c
+++ b/plugins/fn-string/functions.c
@@ -1753,115 +1753,115 @@ gnumeric_jis (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
/***************************************************************************/
GnmFuncDescriptor const string_functions[] = {
{ "asc", "s", help_asc,
- gnumeric_asc, NULL, NULL, NULL,
+ gnumeric_asc, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "char", "f", help_char,
- gnumeric_char, NULL, NULL, NULL,
+ gnumeric_char, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "unichar", "f", help_unichar,
- gnumeric_unichar, NULL, NULL, NULL,
+ gnumeric_unichar, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "clean", "S", help_clean,
- gnumeric_clean, NULL, NULL, NULL,
+ gnumeric_clean, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "code", "S", help_code,
- gnumeric_code, NULL, NULL, NULL,
+ gnumeric_code, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "unicode", "S", help_unicode,
- gnumeric_unicode, NULL, NULL, NULL,
+ gnumeric_unicode, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "concat", NULL, help_concat,
- NULL, gnumeric_concat, NULL, NULL,
+ NULL, gnumeric_concat,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "concatenate", NULL, help_concatenate,
- NULL, gnumeric_concatenate, NULL, NULL,
+ NULL, gnumeric_concatenate,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "dollar", "f|f", help_dollar,
- gnumeric_dollar, NULL, NULL, NULL,
+ gnumeric_dollar, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "exact", "SS", help_exact,
- gnumeric_exact, NULL, NULL, NULL,
+ gnumeric_exact, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "find", "SS|f", help_find,
- gnumeric_find, NULL, NULL, NULL,
+ gnumeric_find, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "findb", "SS|f", help_findb,
- gnumeric_findb, NULL, NULL, NULL,
+ gnumeric_findb, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "fixed", "f|fb", help_fixed,
- gnumeric_fixed, NULL, NULL, NULL,
+ gnumeric_fixed, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "jis", "s", help_jis,
- gnumeric_jis, NULL, NULL, NULL,
+ gnumeric_jis, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "left", "S|f", help_left,
- gnumeric_left, NULL, NULL, NULL,
+ gnumeric_left, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "leftb", "S|f", help_leftb,
- gnumeric_leftb, NULL, NULL, NULL,
+ gnumeric_leftb, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "len", "S", help_len,
- gnumeric_len, NULL, NULL, NULL,
+ gnumeric_len, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "lenb", "S", help_lenb,
- gnumeric_lenb, NULL, NULL, NULL,
+ gnumeric_lenb, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "lower", "S", help_lower,
- gnumeric_lower, NULL, NULL, NULL,
+ gnumeric_lower, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "mid", "Sff", help_mid,
- gnumeric_mid, NULL, NULL, NULL,
+ gnumeric_mid, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "midb", "Sff", help_midb,
- gnumeric_midb, NULL, NULL, NULL,
+ gnumeric_midb, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "numbervalue", "SS", help_numbervalue,
- gnumeric_numbervalue, NULL, NULL, NULL,
+ gnumeric_numbervalue, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_BASIC },
{ "proper", "S", help_proper,
- gnumeric_proper, NULL, NULL, NULL,
+ gnumeric_proper, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "replace", "SffS", help_replace,
- gnumeric_replace, NULL, NULL, NULL,
+ gnumeric_replace, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "replaceb", "SffS", help_replaceb,
- gnumeric_replaceb, NULL, NULL, NULL,
+ gnumeric_replaceb, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "rept", "Sf", help_rept,
- gnumeric_rept, NULL, NULL, NULL,
+ gnumeric_rept, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "right", "S|f", help_right,
- gnumeric_right, NULL, NULL, NULL,
+ gnumeric_right, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "rightb", "S|f", help_rightb,
- gnumeric_rightb, NULL, NULL, NULL,
+ gnumeric_rightb, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "search", "SS|f", help_search,
- gnumeric_search, NULL, NULL, NULL,
+ gnumeric_search, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "searchb", "SS|f", help_searchb,
- gnumeric_searchb, NULL, NULL, NULL,
+ gnumeric_searchb, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "substitute", "SSS|f", help_substitute,
- gnumeric_substitute, NULL, NULL, NULL,
+ gnumeric_substitute, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "t", "S", help_t_,
- gnumeric_t_, NULL, NULL, NULL,
+ gnumeric_t_, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "text", "Ss", help_text,
- gnumeric_text, NULL, NULL, NULL,
+ gnumeric_text, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "textjoin", NULL, help_textjoin,
- NULL, gnumeric_textjoin, NULL, NULL,
+ NULL, gnumeric_textjoin,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_NO_TESTSUITE },
{ "trim", "S", help_trim,
- gnumeric_trim, NULL, NULL, NULL,
+ gnumeric_trim, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "upper", "S", help_upper,
- gnumeric_upper, NULL, NULL, NULL,
+ gnumeric_upper, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "value", "S", help_value,
- gnumeric_value, NULL, NULL, NULL,
+ gnumeric_value, NULL,
GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{NULL}
diff --git a/plugins/fn-tsa/functions.c b/plugins/fn-tsa/functions.c
index bbf95b3a5..df1c74f0c 100644
--- a/plugins/fn-tsa/functions.c
+++ b/plugins/fn-tsa/functions.c
@@ -1070,20 +1070,20 @@ gnumeric_hpfilter (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
const GnmFuncDescriptor TimeSeriesAnalysis_functions[] = {
{ "interpolation", "AAA|f",
- help_interpolation, gnumeric_interpolation, NULL, NULL, NULL,
+ help_interpolation, gnumeric_interpolation, NULL,
GNM_FUNC_RETURNS_NON_SCALAR, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "periodogram", "A|fAff",
- help_periodogram, gnumeric_periodogram, NULL, NULL, NULL,
+ help_periodogram, gnumeric_periodogram, NULL,
GNM_FUNC_RETURNS_NON_SCALAR, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "fourier", "A|bb",
- help_fourier, gnumeric_fourier, NULL, NULL, NULL,
+ help_fourier, gnumeric_fourier, NULL,
GNM_FUNC_RETURNS_NON_SCALAR, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
{ "hpfilter", "A|f",
- help_hpfilter, gnumeric_hpfilter, NULL, NULL, NULL,
+ help_hpfilter, gnumeric_hpfilter, NULL,
GNM_FUNC_RETURNS_NON_SCALAR, GNM_FUNC_IMPL_STATUS_COMPLETE, GNM_FUNC_TEST_STATUS_BASIC },
- {NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0}
+ {NULL}
};
diff --git a/plugins/python-loader/py-gnumeric.c b/plugins/python-loader/py-gnumeric.c
index da2454fac..b09df5a54 100644
--- a/plugins/python-loader/py-gnumeric.c
+++ b/plugins/python-loader/py-gnumeric.c
@@ -1947,7 +1947,7 @@ py_GnumericFunc_object_dealloc (py_GnumericFunc_object *self)
{
g_return_if_fail (self != NULL);
- gnm_func_unref (self->fn_def);
+ gnm_func_dec_usage (self->fn_def);
g_free (self->eval_pos);
PyObject_Del (self);
}
@@ -1962,7 +1962,7 @@ py_new_GnumericFunc_object (GnmFunc *fn_def, const GnmEvalPos *opt_eval_pos)
return NULL;
}
- gnm_func_ref (fn_def);
+ gnm_func_inc_usage (fn_def);
self->fn_def = fn_def;
if (opt_eval_pos != NULL) {
self->eval_pos = g_new (GnmEvalPos, 1);
diff --git a/plugins/python-loader/python-loader.c b/plugins/python-loader/python-loader.c
index db772ad0d..1e5004707 100644
--- a/plugins/python-loader/python-loader.c
+++ b/plugins/python-loader/python-loader.c
@@ -471,7 +471,7 @@ call_python_function_args (GnmFuncEvalInfo *ei, GnmValue const * const *args)
g_return_val_if_fail (args != NULL, NULL);
fndef = ei->func_call->func;
- service = (GOPluginService *) gnm_func_get_user_data (fndef);
+ service = (GOPluginService *)g_object_get_data (G_OBJECT (fndef), "service");
loader_data = g_object_get_data (G_OBJECT (service), "loader_data");
SWITCH_TO_PLUGIN (go_plugin_service_get_plugin (service));
fn_info_tuple = PyDict_GetItemString (loader_data->python_fn_info_dict,
@@ -501,7 +501,7 @@ call_python_function_nodes (GnmFuncEvalInfo *ei,
g_return_val_if_fail (ei->func_call != NULL, NULL);
fndef = ei->func_call->func;
- service = (GOPluginService *) gnm_func_get_user_data (fndef);
+ service = (GOPluginService *)g_object_get_data (G_OBJECT (fndef), "service");
loader_data = g_object_get_data (G_OBJECT (service), "loader_data");
SWITCH_TO_PLUGIN (go_plugin_service_get_plugin (service));
python_fn = PyDict_GetItemString (loader_data->python_fn_info_dict,
@@ -643,24 +643,25 @@ python_function_get_gnumeric_help (PyObject *python_fn_info_dict, PyObject *pyth
return (GnmFuncHelp const *) PyCObject_AsVoidPtr (cobject_help_value);
}
-static gboolean
-gplp_func_desc_load (GOPluginService *service,
- char const *name,
- GnmFuncDescriptor *res)
+static void
+gplp_func_load_stub (GOPluginService *service,
+ GnmFunc *func)
{
ServiceLoaderDataFunctionGroup *loader_data;
PyObject *fn_info_obj;
+ char const *name;
- g_return_val_if_fail (GNM_IS_PLUGIN_SERVICE_FUNCTION_GROUP (service), FALSE);
- g_return_val_if_fail (name != NULL, FALSE);
+ g_return_if_fail (GNM_IS_PLUGIN_SERVICE_FUNCTION_GROUP (service));
+ g_return_if_fail (GNM_IS_FUNC (func));
+ name = gnm_func_get_name (func, FALSE);
loader_data = g_object_get_data (G_OBJECT (service), "loader_data");
SWITCH_TO_PLUGIN (go_plugin_service_get_plugin (service));
fn_info_obj = PyDict_GetItemString (loader_data->python_fn_info_dict,
- (gchar *) name);
+ (gchar *)name);
if (fn_info_obj == NULL) {
gnm_python_clear_error_if_needed (SERVICE_GET_LOADER (service)->py_object);
- return FALSE;
+ return;
}
if (PyTuple_Check (fn_info_obj)) {
@@ -672,35 +673,36 @@ gplp_func_desc_load (GOPluginService *service,
PyString_Check (python_args) &&
(python_fn = PyTuple_GetItem (fn_info_obj, 2)) != NULL &&
PyCallable_Check (python_fn)) {
- res->arg_spec = PyString_AsString (python_args);
- res->help = python_function_get_gnumeric_help (
+ func->fn.args.func = &call_python_function_args;
+ func->fn.args.arg_spec = PyString_AsString (python_args);
+ func->help = python_function_get_gnumeric_help (
loader_data->python_fn_info_dict, python_fn, name);
- res->fn_args = &call_python_function_args;
- res->fn_nodes = NULL;
- res->linker = NULL;
- res->impl_status = GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC;
- res->test_status = GNM_FUNC_TEST_STATUS_UNKNOWN;
- return TRUE;
+ func->linker = NULL;
+ func->impl_status = GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC;
+ func->test_status = GNM_FUNC_TEST_STATUS_UNKNOWN;
+ gnm_func_set_function_type (func, GNM_FUNC_TYPE_ARGS);
+ g_object_set_data (G_OBJECT (func), "service", service);
+ return;
}
gnm_python_clear_error_if_needed (SERVICE_GET_LOADER (service)->py_object);
- return FALSE;
+ return;
}
if (PyCallable_Check (fn_info_obj)) {
- res->arg_spec = "";
- res->help = python_function_get_gnumeric_help (
+ func->help = python_function_get_gnumeric_help (
loader_data->python_fn_info_dict, fn_info_obj, name);
- res->fn_args = NULL;
- res->fn_nodes = &call_python_function_nodes;
- res->linker = NULL;
- res->impl_status = GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC;
- res->test_status = GNM_FUNC_TEST_STATUS_UNKNOWN;
- return TRUE;
+ func->fn.nodes = &call_python_function_nodes;
+ func->linker = NULL;
+ func->impl_status = GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC;
+ func->test_status = GNM_FUNC_TEST_STATUS_UNKNOWN;
+ gnm_func_set_function_type (func, GNM_FUNC_TYPE_NODES);
+ g_object_set_data (G_OBJECT (func), "service", service);
+ return;
}
gnm_python_clear_error_if_needed (SERVICE_GET_LOADER (service)->py_object);
- return FALSE;
+ return;
}
static void
@@ -726,7 +728,7 @@ gplp_load_service_function_group (GOPluginLoader *loader,
ServiceLoaderDataFunctionGroup *loader_data;
cbs = go_plugin_service_get_cbs (service);
- cbs->func_desc_load = &gplp_func_desc_load;
+ cbs->load_stub = &gplp_func_load_stub;
loader_data = g_new (ServiceLoaderDataFunctionGroup, 1);
loader_data->python_fn_info_dict = (PyObject *) python_fn_info_dict;
diff --git a/plugins/sample_datasource/sample_datasource.c b/plugins/sample_datasource/sample_datasource.c
index 8bb658600..36e990a91 100644
--- a/plugins/sample_datasource/sample_datasource.c
+++ b/plugins/sample_datasource/sample_datasource.c
@@ -138,11 +138,86 @@ cb_atl_input (GIOChannel *gioc, GIOCondition cond, gpointer ignored)
return TRUE;
}
+static GnmValue *
+atl_last (GnmFuncEvalInfo *ei, GnmValue const * const argv[])
+{
+ WatchedValue *val = watched_value_fetch (value_peek_string (argv[0]));
+
+ Watcher key;
+ key.node = ei->func_call;
+ key.dep = ei->pos->dep;
+
+ g_return_val_if_fail (val != NULL,
+ value_new_error_NA (ei->pos));
+
+ /* If caller wants to be notified of updates */
+ if (key.node != NULL && key.dep != NULL) {
+ Watcher *w = g_hash_table_lookup (watchers, &key);
+ if (w == NULL) {
+ w = g_new (Watcher, 1);
+ key.value = val;
+ *w = key;
+ g_hash_table_insert (watchers, w, w);
+ g_hash_table_insert (w->value->deps, w, w);
+ } else if (w->value != val) {
+ g_hash_table_remove (w->value->deps, w);
+ w->value = val;
+ g_hash_table_insert (w->value->deps, w, w);
+ }
+ }
+
+ if (!val->valid)
+ return value_new_error_NA (ei->pos);
+ return value_new_float (val->value);
+}
+
+static int // GnmDependentFlags
+atl_last_link (GnmFunc *func, GnmFuncEvalInfo *ei, gboolean qlink)
+{
+ if (qlink) {
+ if (debug)
+ g_printerr ("link atl_last\n");
+ } else {
+ Watcher key, *w;
+ key.node = ei->func_call;
+ key.dep = ei->pos->dep;
+
+ w = g_hash_table_lookup (watchers, &key);
+ if (w != NULL) {
+ if (w->value != NULL)
+ g_hash_table_remove (w->value->deps, w);
+ g_free (w);
+ }
+ if (debug)
+ g_printerr ("unlink atl_last\n");
+ }
+ return DEPENDENT_NO_FLAG;
+}
+
+static GnmFuncHelp const help_atl_last[] = {
+ { GNM_FUNC_HELP_NAME, F_("ATL_LAST:sample real-time data source")},
+ { GNM_FUNC_HELP_ARG, F_("tag:tag to watch")},
+ { GNM_FUNC_HELP_DESCRIPTION, F_("ATL_LAST is a sample implementation of a real time data source. It
takes a string tag and monitors the named pipe ~/atl for changes to the value of that tag.") },
+ { GNM_FUNC_HELP_NOTE, F_("This is not intended to be generally enabled and is OFF by default.") },
+ { GNM_FUNC_HELP_END }
+};
+
+GnmFuncDescriptor const ATL_functions[] = {
+ {"atl_last", "s", help_atl_last, atl_last, NULL,
+ GNM_FUNC_SIMPLE, GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC, GNM_FUNC_TEST_STATUS_NO_TESTSUITE
+ },
+
+ {NULL}
+};
+
G_MODULE_EXPORT void
go_plugin_init (GOPlugin *plugin, GOCmdContext *cc)
{
GIOChannel *channel = NULL;
char *filename;
+ GnmFunc *atl_last = gnm_func_lookup ("atl_last", NULL);
+
+ g_signal_connect (atl_last, "link-dep", G_CALLBACK (atl_last_link), NULL);
debug = gnm_debug_flag ("datasource");
@@ -213,73 +288,3 @@ go_plugin_shutdown (GOPlugin *plugin, GOCmdContext *cc)
g_hash_table_destroy (watchers);
watchers = NULL;
}
-
-static GnmValue *
-atl_last (GnmFuncEvalInfo *ei, GnmValue const * const argv[])
-{
- WatchedValue *val = watched_value_fetch (value_peek_string (argv[0]));
-
- Watcher key;
- key.node = ei->func_call;
- key.dep = ei->pos->dep;
-
- g_return_val_if_fail (val != NULL,
- value_new_error_NA (ei->pos));
-
- /* If caller wants to be notified of updates */
- if (key.node != NULL && key.dep != NULL) {
- Watcher *w = g_hash_table_lookup (watchers, &key);
- if (w == NULL) {
- w = g_new (Watcher, 1);
- key.value = val;
- *w = key;
- g_hash_table_insert (watchers, w, w);
- g_hash_table_insert (w->value->deps, w, w);
- } else if (w->value != val) {
- g_hash_table_remove (w->value->deps, w);
- w->value = val;
- g_hash_table_insert (w->value->deps, w, w);
- }
- }
-
- if (!val->valid)
- return value_new_error_NA (ei->pos);
- return value_new_float (val->value);
-}
-
-static GnmDependentFlags
-atl_last_link (GnmFuncEvalInfo *ei, gboolean qlink)
-{
- if (qlink) {
- if (debug)
- g_printerr ("link atl_last\n");
- } else {
- Watcher key, *w;
- key.node = ei->func_call;
- key.dep = ei->pos->dep;
-
- w = g_hash_table_lookup (watchers, &key);
- if (w != NULL) {
- if (w->value != NULL)
- g_hash_table_remove (w->value->deps, w);
- g_free (w);
- }
- if (debug)
- g_printerr ("unlink atl_last\n");
- }
- return DEPENDENT_NO_FLAG;
-}
-
-static GnmFuncHelp const help_atl_last[] = {
- { GNM_FUNC_HELP_NAME, F_("ATL_LAST:sample real-time data source")},
- { GNM_FUNC_HELP_ARG, F_("tag:tag to watch")},
- { GNM_FUNC_HELP_DESCRIPTION, F_("ATL_LAST is a sample implementation of a real time data source. It
takes a string tag and monitors the named pipe ~/atl for changes to the value of that tag.") },
- { GNM_FUNC_HELP_NOTE, F_("This is not intended to be generally enabled and is OFF by default.") },
- { GNM_FUNC_HELP_END }
-};
-
-GnmFuncDescriptor const ATL_functions[] = {
- {"atl_last", "s", help_atl_last, atl_last, NULL, atl_last_link },
-
- {NULL}
-};
diff --git a/src/consolidate.c b/src/consolidate.c
index 3be761adb..18e75df22 100644
--- a/src/consolidate.c
+++ b/src/consolidate.c
@@ -123,7 +123,7 @@ gnm_consolidate_free (GnmConsolidate *cs, gboolean content_only)
if (cs->ref_count-- > 1)
return;
if (cs->fd) {
- gnm_func_unref (cs->fd);
+ gnm_func_dec_usage (cs->fd);
cs->fd = NULL;
}
@@ -171,10 +171,10 @@ gnm_consolidate_set_function (GnmConsolidate *cs, GnmFunc *fd)
g_return_if_fail (fd != NULL);
if (cs->fd)
- gnm_func_unref (cs->fd);
+ gnm_func_dec_usage (cs->fd);
cs->fd = fd;
- gnm_func_ref (fd);
+ gnm_func_inc_usage (fd);
}
void
diff --git a/src/dependent.c b/src/dependent.c
index b77a9cbf8..fad4407d1 100644
--- a/src/dependent.c
+++ b/src/dependent.c
@@ -1111,15 +1111,15 @@ link_unlink_expr_dep (GnmEvalPos *ep, GnmExpr const *tree, gboolean qlink)
*/
case GNM_EXPR_OP_FUNCALL: {
int i;
- GnmDependentFlags flag = DEPENDENT_NO_FLAG;
+ GnmFuncEvalInfo fei;
+ GnmDependentFlags flag;
+
if (tree->func.func->fn_type == GNM_FUNC_TYPE_STUB)
gnm_func_load_stub (tree->func.func);
- if (tree->func.func->linker) {
- GnmFuncEvalInfo fei;
- fei.pos = ep;
- fei.func_call = &tree->func;
- flag = tree->func.func->linker (&fei, qlink);
- }
+ fei.pos = ep;
+ fei.func_call = &tree->func;
+ flag = gnm_func_link_dep (tree->func.func, &fei, qlink);
+
if (!(flag & DEPENDENT_IGNORE_ARGS))
for (i = 0; i < tree->func.argc; i++)
flag |= link_unlink_expr_dep (ep, tree->func.argv[i], qlink);
diff --git a/src/dialogs/dialog-function-select.c b/src/dialogs/dialog-function-select.c
index a3d636903..d03e141db 100644
--- a/src/dialogs/dialog-function-select.c
+++ b/src/dialogs/dialog-function-select.c
@@ -309,7 +309,7 @@ cb_unref (GtkTreeModel *model, G_GNUC_UNUSED GtkTreePath *path,
gtk_tree_model_get (model, iter,
FUNCTION, &f,
-1);
- gnm_func_unref (f);
+ gnm_func_dec_usage (f);
return FALSE;
}
@@ -1182,7 +1182,7 @@ dialog_function_select_load_tree (FunctionSelectState *state)
if (!(func->flags &
(GNM_FUNC_INTERNAL | GNM_FUNC_IS_PLACEHOLDER))) {
gtk_list_store_append (state->model_functions, &iter);
- gnm_func_ref (func);
+ gnm_func_inc_usage (func);
desc = dialog_function_select_get_description (func, &pal);
gtk_list_store_set
(state->model_functions, &iter,
diff --git a/src/expr.c b/src/expr.c
index c3dee50cb..cd355c46c 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -98,7 +98,7 @@ gnm_expr_new_funcallv (GnmFunc *func, int argc, GnmExprConstPtr *argv)
ans = CHUNK_ALLOC (GnmExprFunction, expression_pool_small);
ans->oper = GNM_EXPR_OP_FUNCALL;
- gnm_func_ref (func);
+ gnm_func_inc_usage (func);
ans->func = func;
ans->argc = argc;
ans->argv = argv;
@@ -479,7 +479,7 @@ gnm_expr_free (GnmExpr const *expr)
for (i = 0; i < expr->func.argc; i++)
gnm_expr_free (expr->func.argv[i]);
g_free (expr->func.argv);
- gnm_func_unref (expr->func.func);
+ gnm_func_dec_usage (expr->func.func);
CHUNK_FREE (expression_pool_small, (gpointer)expr);
break;
}
@@ -2236,6 +2236,12 @@ gnm_expr_relocate (GnmExpr const *expr, RelocInfoInternal const *rinfo)
return gnm_expr_walk (expr, cb_relocate, (gpointer)rinfo);
}
+/**
+ * gnm_expr_get_func_def:
+ * @expr: Function call expressions
+ *
+ * Returns: (transfer none): the called function.
+ */
GnmFunc *
gnm_expr_get_func_def (GnmExpr const *expr)
{
@@ -2245,6 +2251,13 @@ gnm_expr_get_func_def (GnmExpr const *expr)
return expr->func.func;
}
+/**
+ * gnm_expr_get_func_arg:
+ * @expr: Function call expressions
+ * @i: argument index
+ *
+ * Returns: (transfer none): the @i'th argument of the function call @expr.
+ */
GnmExpr const *
gnm_expr_get_func_arg (GnmExpr const *expr, int i)
{
diff --git a/src/func-builtin.c b/src/func-builtin.c
index c32800c5a..e746f8283 100644
--- a/src/func-builtin.c
+++ b/src/func-builtin.c
@@ -157,8 +157,8 @@ static GnmFuncHelp const help_table[] = {
};
-static GnmDependentFlags
-gnumeric_table_link (GnmFuncEvalInfo *ei, gboolean qlink)
+static int //GnmDependentFlags
+gnumeric_table_link (const GnmFunc *func, GnmFuncEvalInfo *ei, gboolean qlink)
{
GnmDependent *dep = ei->pos->dep;
GnmRangeRef rr;
@@ -202,7 +202,7 @@ gnumeric_table (GnmFuncEvalInfo *ei, int argc, GnmExprConstPtr const *argv)
int cols, rows;
/* evaluation clears the dynamic deps */
- gnumeric_table_link (ei, TRUE);
+ gnumeric_table_link (gnm_eval_info_get_func (ei), ei, TRUE);
if (argc != 2 ||
ep->eval.col < 1 ||
@@ -489,62 +489,59 @@ static GnmFuncGroup *math_group = NULL;
static GnmFuncGroup *gnumeric_group = NULL;
static GnmFuncGroup *logic_group = NULL;
+static GnmFuncDescriptor const builtins [] = {
+ /* --- Math --- */
+ { "sum", NULL,
+ help_sum, NULL, gnumeric_sum,
+ GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
+ GNM_FUNC_IMPL_STATUS_COMPLETE,
+ GNM_FUNC_TEST_STATUS_BASIC
+ },
+ { "product", NULL,
+ help_product, NULL, gnumeric_product,
+ GNM_FUNC_SIMPLE,
+ GNM_FUNC_IMPL_STATUS_COMPLETE,
+ GNM_FUNC_TEST_STATUS_BASIC
+ },
+ /* --- Gnumeric --- */
+ { "gnumeric_version", "",
+ help_gnumeric_version, gnumeric_version, NULL,
+ GNM_FUNC_SIMPLE,
+ GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
+ GNM_FUNC_TEST_STATUS_EXHAUSTIVE
+ },
+ { "table", "",
+ help_table, NULL, gnumeric_table,
+ GNM_FUNC_SIMPLE + GNM_FUNC_INTERNAL,
+ GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
+ GNM_FUNC_TEST_STATUS_EXHAUSTIVE
+ },
+ { "number_match", "s|s", // Only in test suite
+ help_number_match, gnumeric_number_match, NULL,
+ GNM_FUNC_INTERNAL,
+ GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
+ GNM_FUNC_TEST_STATUS_BASIC },
+ { "deriv", "r|r", // Only in test suite
+ help_deriv, gnumeric_deriv, NULL,
+ GNM_FUNC_INTERNAL,
+ GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
+ GNM_FUNC_TEST_STATUS_BASIC },
+ /* --- Logic --- */
+ { "if", "b|EE",
+ help_if, gnumeric_if, NULL,
+ GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_SECOND,
+ GNM_FUNC_IMPL_STATUS_COMPLETE,
+ GNM_FUNC_TEST_STATUS_BASIC },
+ { NULL }
+};
+
void
func_builtin_init (void)
{
const char *gname;
const char *tdomain = GETTEXT_PACKAGE;
int i = 0;
-
- static GnmFuncDescriptor const builtins [] = {
- /* --- Math --- */
- { "sum", NULL,
- help_sum, NULL, gnumeric_sum,
- NULL, NULL, GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_FIRST,
- GNM_FUNC_IMPL_STATUS_COMPLETE,
- GNM_FUNC_TEST_STATUS_BASIC
- },
- { "product", NULL,
- help_product, NULL, gnumeric_product,
- NULL, NULL, GNM_FUNC_SIMPLE,
- GNM_FUNC_IMPL_STATUS_COMPLETE,
- GNM_FUNC_TEST_STATUS_BASIC
- },
- /* --- Gnumeric --- */
- { "gnumeric_version", "",
- help_gnumeric_version, gnumeric_version, NULL,
- NULL, NULL, GNM_FUNC_SIMPLE,
- GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
- GNM_FUNC_TEST_STATUS_EXHAUSTIVE
- },
- { "table", "",
- help_table, NULL, gnumeric_table,
- gnumeric_table_link,
- NULL, GNM_FUNC_SIMPLE + GNM_FUNC_INTERNAL,
- GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
- GNM_FUNC_TEST_STATUS_EXHAUSTIVE
- },
- { "number_match", "s|s", // Only in test suite
- help_number_match, gnumeric_number_match, NULL,
- NULL, NULL,
- GNM_FUNC_SIMPLE,
- GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
- GNM_FUNC_TEST_STATUS_BASIC },
- { "deriv", "r|r", // Only in test suite
- help_deriv, gnumeric_deriv, NULL,
- NULL, NULL,
- GNM_FUNC_SIMPLE,
- GNM_FUNC_IMPL_STATUS_UNIQUE_TO_GNUMERIC,
- GNM_FUNC_TEST_STATUS_BASIC },
- /* --- Logic --- */
- { "if", "b|EE",
- help_if, gnumeric_if, NULL,
- NULL, NULL,
- GNM_FUNC_SIMPLE + GNM_FUNC_AUTO_SECOND,
- GNM_FUNC_IMPL_STATUS_COMPLETE,
- GNM_FUNC_TEST_STATUS_BASIC },
- { NULL }
- };
+ GnmFunc *table_func;
gname = N_("Mathematics");
math_group = gnm_func_group_fetch (gname, _(gname));
@@ -565,25 +562,23 @@ func_builtin_init (void)
logic_group = gnm_func_group_fetch (gname, _(gname));
gnm_func_add (logic_group, builtins + i++, tdomain);
+ table_func = gnm_func_lookup ("table", NULL);
+ g_signal_connect (table_func, "link-dep", G_CALLBACK (gnumeric_table_link), NULL);
+
gnm_expr_deriv_install_handler (gnm_func_lookup ("sum", NULL),
gnumeric_sum_deriv,
GNM_EXPR_DERIV_NO_CHAIN | GNM_EXPR_DERIV_OPTIMIZE,
NULL, NULL);
}
-static void
-shutdown_cat (GnmFuncGroup *group)
-{
- GSList *ptr, *list = g_slist_copy (group->functions);
- for (ptr = list; ptr; ptr = ptr->next)
- gnm_func_free (ptr->data);
- g_slist_free (list);
-}
-
void
func_builtin_shutdown (void)
{
- shutdown_cat (math_group);
- shutdown_cat (gnumeric_group);
- shutdown_cat (logic_group);
+ int i;
+
+ for (i = 0; builtins[i].name; i++) {
+ GnmFunc *func = gnm_func_lookup (builtins[i].name, NULL);
+ if (func)
+ g_object_unref (func);
+ }
}
diff --git a/src/func.c b/src/func.c
index 0ec7d7ed8..0700471a0 100644
--- a/src/func.c
+++ b/src/func.c
@@ -1,4 +1,3 @@
-
/*
* func.c: Function management and utility routines.
*
@@ -11,6 +10,7 @@
#include <gnumeric-config.h>
#include <glib/gi18n-lib.h>
#include <glib/gstdio.h>
+#include <gnm-i18n.h>
#include <gnumeric.h>
#include <func.h>
@@ -29,12 +29,28 @@
#include <gnm-plugin.h>
#include <gutils.h>
#include <gui-util.h>
+#include <gnm-marshalers.h>
#include <goffice/goffice.h>
#include <glib.h>
#include <string.h>
#include <stdlib.h>
+enum {
+ PROP_0,
+ PROP_NAME,
+ PROP_TRANSLATION_DOMAIN,
+ PROP_IN_USE,
+};
+
+enum {
+ SIG_LOAD_STUB,
+ SIG_LINK_DEP,
+ LAST_SIGNAL
+};
+static guint signals[LAST_SIGNAL] = { 0 };
+
+
#define F2(func,s) dgettext ((func)->tdomain->str, (s))
static GList *categories;
@@ -73,7 +89,7 @@ functions_shutdown (void)
func->usage_count);
func->usage_count = 0;
}
- gnm_func_free (func);
+ g_object_unref (func);
}
func_builtin_shutdown ();
@@ -304,45 +320,47 @@ gnm_func_create_arg_names (GnmFunc *fn_def)
void
gnm_func_load_stub (GnmFunc *func)
{
- GnmFuncDescriptor desc;
-
g_return_if_fail (func->fn_type == GNM_FUNC_TYPE_STUB);
- /* default the content to 0 in case we add new fields
- * later and the services do not fill them in
- */
- memset (&desc, 0, sizeof (GnmFuncDescriptor));
+ g_signal_emit (G_OBJECT (func), signals[SIG_LOAD_STUB], 0);
- if (func->fn.load_desc (func, &desc)) {
- func->help = desc.help ? desc.help : NULL;
- if (desc.fn_args != NULL) {
- func->fn_type = GNM_FUNC_TYPE_ARGS;
- func->fn.args.func = desc.fn_args;
- func->fn.args.arg_spec = desc.arg_spec;
- extract_arg_types (func);
- } else if (desc.fn_nodes != NULL) {
- func->fn_type = GNM_FUNC_TYPE_NODES;
- func->fn.nodes = desc.fn_nodes;
- } else {
- g_warning ("Invalid function descriptor with no function");
- }
- func->linker = desc.linker;
- func->impl_status = desc.impl_status;
- func->test_status = desc.test_status;
- func->flags = desc.flags;
- gnm_func_create_arg_names (func);
- } else {
- func->fn_type = GNM_FUNC_TYPE_NODES;
+ if (func->fn_type == GNM_FUNC_TYPE_STUB) {
+ static GnmFuncHelp const no_help[] = { { GNM_FUNC_HELP_END } };
+
+ func->help = no_help;
func->fn.nodes = &error_function_no_full_info;
- func->linker = NULL;
+ gnm_func_set_function_type (func, GNM_FUNC_TYPE_NODES);
+ }
+}
+
+void
+gnm_func_set_function_type (GnmFunc *func, GnmFuncType typ)
+{
+ g_return_if_fail (GNM_IS_FUNC (func));
+
+ func->fn_type = typ;
+ switch (typ) {
+ case GNM_FUNC_TYPE_ARGS:
+ extract_arg_types (func);
+ gnm_func_create_arg_names (func);
+ break;
+ case GNM_FUNC_TYPE_NODES:
+ gnm_func_create_arg_names (func);
+ break;
+ case GNM_FUNC_TYPE_STUB:
+ break;
}
}
+
static void
gnm_func_set_localized_name (GnmFunc *fd, const char *lname)
{
gboolean in_hashes = !(fd->flags & GNM_FUNC_IS_WORKBOOK_LOCAL);
+ if (g_strcmp0 (fd->localized_name, lname) == 0)
+ return;
+
if (in_hashes && fd->localized_name)
g_hash_table_remove (functions_by_localized_name, fd->localized_name);
g_free (fd->localized_name);
@@ -353,71 +371,61 @@ gnm_func_set_localized_name (GnmFunc *fd, const char *lname)
fd->localized_name, fd);
}
-void
-gnm_func_free (GnmFunc *func)
-{
- GnmFuncGroup *group;
-
- g_return_if_fail (func != NULL);
- g_return_if_fail (func->usage_count == 0);
-
- group = func->fn_group;
- if (group != NULL)
- gnm_func_group_remove_func (group, func);
-
- gnm_func_set_localized_name (func, NULL);
-
- if (!(func->flags & GNM_FUNC_IS_WORKBOOK_LOCAL)) {
- g_hash_table_remove (functions_by_name, func->name);
- }
-
- if (func->fn_type == GNM_FUNC_TYPE_ARGS)
- g_free (func->fn.args.arg_types);
-
- g_free ((char *)func->name);
-
- go_string_unref (func->tdomain);
-
- gnm_func_clear_arg_names (func);
-
- g_free (func);
-}
-
+/**
+ * gnm_func_inc_usage:
+ * @func: (transfer none): #GnmFunc
+ *
+ * This function increments the usage count of @func. A non-zero usage count
+ * prevents the unloading of the function.
+ *
+ * Returns: (transfer full): a new reference to @func.
+ */
GnmFunc *
-gnm_func_ref (GnmFunc *func)
+gnm_func_inc_usage (GnmFunc *func)
{
g_return_val_if_fail (func != NULL, NULL);
func->usage_count++;
- if (func->usage_count == 1 && func->usage_notify != NULL)
- func->usage_notify (func, 1);
+ if (func->usage_count == 1)
+ g_object_notify (G_OBJECT (func), "in-use");
return func;
}
+/**
+ * gnm_func_dec_usage:
+ * @func: (transfer full): #GnmFunc
+ *
+ * This function decrements the usage count of @func. When the usage count
+ * reaches zero, the function may be unloaded, for example by unloading the
+ * plugin that defines it.
+ */
void
-gnm_func_unref (GnmFunc *func)
+gnm_func_dec_usage (GnmFunc *func)
{
g_return_if_fail (func != NULL);
g_return_if_fail (func->usage_count > 0);
func->usage_count--;
- if (func->usage_count == 0 && func->usage_notify != NULL)
- func->usage_notify (func, 0);
+ if (func->usage_count == 0)
+ g_object_notify (G_OBJECT (func), "in-use");
}
-GType
-gnm_func_get_type (void)
+gboolean
+gnm_func_get_in_use (GnmFunc *func)
{
- static GType t = 0;
+ g_return_val_if_fail (func != NULL, FALSE);
- if (t == 0) {
- t = g_boxed_type_register_static ("GnmFunc",
- (GBoxedCopyFunc)gnm_func_ref,
- (GBoxedFreeFunc)gnm_func_unref);
- }
- return t;
+ return func->usage_count > 0;
}
+
+/**
+ * gnm_func_lookup:
+ * @name: name of function
+ * @scope: (nullable): scope of function, %NULL for global
+ *
+ * Returns: (nullable) (transfer none): the function of that name.
+ */
GnmFunc *
gnm_func_lookup (char const *name, Workbook *scope)
{
@@ -429,6 +437,13 @@ gnm_func_lookup (char const *name, Workbook *scope)
return g_hash_table_lookup (scope->sheet_local_functions, (gpointer)name);
}
+/**
+ * gnm_func_lookup_localized:
+ * @name: localized name of function
+ * @scope: (nullable): scope of function, %NULL for global
+ *
+ * Returns: (nullable) (transfer none): the function of that name.
+ */
GnmFunc *
gnm_func_lookup_localized (char const *name, Workbook *scope)
{
@@ -476,7 +491,7 @@ gnm_func_lookup_prefix (char const *prefix, Workbook *scope, gboolean trans)
if (!(fd->flags & GNM_FUNC_IS_PLACEHOLDER)) {
const char *name = gnm_func_get_name (fd, trans);
if (g_str_has_prefix (name, prefix)) {
- gnm_func_ref (fd);
+ gnm_func_inc_usage (fd);
res = g_slist_prepend (res, fd);
}
}
@@ -485,6 +500,71 @@ gnm_func_lookup_prefix (char const *prefix, Workbook *scope, gboolean trans)
return res;
}
+/**
+ * gnm_func_get_translation_domain:
+ * @func: #GnmFunc
+ *
+ * Returns: (transfer none): the translation domain for @func's help text.
+ */
+char const *
+gnm_func_get_translation_domain (GnmFunc *func)
+{
+ g_return_val_if_fail (GNM_IS_FUNC (func), NULL);
+ return func->tdomain->str;
+}
+
+/**
+ * gnm_func_set_translation_domain:
+ * @func: #GnmFunc
+ * @tdomain: (nullable): Translation domain, %NULL for Gnumeric's.
+ */
+void
+gnm_func_set_translation_domain (GnmFunc *func, const char *tdomain)
+{
+ g_return_if_fail (GNM_IS_FUNC (func));
+
+ if (!tdomain)
+ tdomain = GETTEXT_PACKAGE;
+
+ if (g_strcmp0 (func->tdomain->str, tdomain) == 0)
+ return;
+
+ go_string_unref (func->tdomain);
+ func->tdomain = go_string_new (tdomain);
+
+ g_object_notify (G_OBJECT (func), "translation-domain");
+}
+
+void
+gnm_func_set_function_group (GnmFunc *func, GnmFuncGroup *group)
+{
+ g_return_if_fail (GNM_IS_FUNC (func));
+ g_return_if_fail (group != NULL);
+
+ if (func->fn_group == group)
+ return;
+
+ if (func->fn_group)
+ gnm_func_group_remove_func (func->fn_group, func);
+ func->fn_group = group;
+ gnm_func_group_add_func (group, func);
+
+ if (group == unknown_cat)
+ func->flags |= GNM_FUNC_IS_PLACEHOLDER;
+ else
+ func->flags &= ~GNM_FUNC_IS_PLACEHOLDER;
+}
+
+
+
+/**
+ * gnm_func_add:
+ * @group:
+ * @descriptor:
+ * @tdomain: (nullable):
+ *
+ * Returns: (transfer full): a new #GnmFunc.
+ */
GnmFunc *
gnm_func_add (GnmFuncGroup *fn_group,
GnmFuncDescriptor const *desc,
@@ -497,23 +577,18 @@ gnm_func_add (GnmFuncGroup *fn_group,
g_return_val_if_fail (fn_group != NULL, NULL);
g_return_val_if_fail (desc != NULL, NULL);
- func = g_new (GnmFunc, 1);
-
- if (!tdomain)
- tdomain = GETTEXT_PACKAGE;
+ func = g_object_new (GNM_FUNC_TYPE,
+ "name", desc->name,
+ NULL);
+ gnm_func_set_translation_domain (func, tdomain);
- func->name = g_strdup (desc->name);
func->help = desc->help ? desc->help : NULL;
- func->tdomain = go_string_new (tdomain);
- func->linker = desc->linker;
- func->usage_notify = desc->usage_notify;
func->flags = desc->flags;
func->impl_status = desc->impl_status;
func->test_status = desc->test_status;
func->localized_name = NULL;
func->arg_names_p = NULL;
- func->user_data = NULL;
func->usage_count = 0;
if (desc->fn_args != NULL) {
@@ -522,33 +597,29 @@ gnm_func_add (GnmFuncGroup *fn_group,
g_return_val_if_fail (strchr (valid_tokens, *ptr), NULL);
}
- func->fn_type = GNM_FUNC_TYPE_ARGS;
func->fn.args.func = desc->fn_args;
func->fn.args.arg_spec = desc->arg_spec;
- extract_arg_types (func);
+ gnm_func_set_function_type (func, GNM_FUNC_TYPE_ARGS);
} else if (desc->fn_nodes != NULL) {
if (desc->arg_spec && *desc->arg_spec) {
g_warning ("Arg spec for node function -- why?");
}
- func->fn_type = GNM_FUNC_TYPE_NODES;
func->fn.nodes = desc->fn_nodes;
+ gnm_func_set_function_type (func, GNM_FUNC_TYPE_NODES);
} else {
g_warning ("Invalid function has neither args nor nodes handler");
- g_free (func);
+ g_object_unref (func);
return NULL;
}
func->fn_group = fn_group;
- if (fn_group != NULL)
- gnm_func_group_add_func (fn_group, func);
+ gnm_func_group_add_func (fn_group, func);
if (!(func->flags & GNM_FUNC_IS_WORKBOOK_LOCAL))
g_hash_table_insert (functions_by_name,
(gpointer)(func->name), func);
- gnm_func_create_arg_names (func);
-
return func;
}
@@ -561,47 +632,6 @@ unknownFunctionHandler (GnmFuncEvalInfo *ei,
return value_new_error_NAME (ei->pos);
}
-/**
- * gnm_func_upgrade_placeholder:
- * @fd:
- * @fn_group:
- * @tdomain:
- * @load_desc: (scope async):
- * @opt_usage_notify: (scope async):
- **/
-void
-gnm_func_upgrade_placeholder (GnmFunc *fd,
- GnmFuncGroup *fn_group,
- const char *tdomain,
- GnmFuncLoadDesc load_desc,
- GnmFuncUsageNotify opt_usage_notify)
-{
- g_return_if_fail (fd != NULL);
- g_return_if_fail (fd->flags & GNM_FUNC_IS_PLACEHOLDER);
- g_return_if_fail (fn_group != NULL);
-
- if (!tdomain)
- tdomain = GETTEXT_PACKAGE;
-
- /* Remove from unknown_cat */
- gnm_func_group_remove_func (fd->fn_group, fd);
-
- fd->fn_type = GNM_FUNC_TYPE_STUB;
- fd->fn.load_desc = load_desc;
- fd->usage_notify = opt_usage_notify;
-
- go_string_unref (fd->tdomain);
- fd->tdomain = go_string_new (tdomain);
-
- /* Clear localized_name so we can deduce the proper name. */
- gnm_func_set_localized_name (fd, NULL);
-
- fd->flags &= ~GNM_FUNC_IS_PLACEHOLDER;
-
- fd->fn_group = fn_group;
- gnm_func_group_add_func (fn_group, fd);
-}
-
static char *
invent_name (const char *pref, GHashTable *h, const char *template)
{
@@ -661,8 +691,6 @@ gnm_func_add_placeholder_full (Workbook *scope,
desc.help = NULL;
desc.fn_args = NULL;
desc.fn_nodes = &unknownFunctionHandler;
- desc.linker = NULL;
- desc.usage_notify = NULL;
desc.flags = GNM_FUNC_IS_PLACEHOLDER;
desc.impl_status = GNM_FUNC_IMPL_STATUS_EXISTS;
desc.test_status = GNM_FUNC_TEST_STATUS_UNKNOWN;
@@ -691,7 +719,7 @@ gnm_func_add_placeholder_full (Workbook *scope,
if (scope->sheet_local_functions == NULL)
scope->sheet_local_functions = g_hash_table_new_full (
g_str_hash, g_str_equal,
- NULL, (GDestroyNotify) gnm_func_free);
+ NULL, g_object_unref);
g_hash_table_insert (scope->sheet_local_functions,
(gpointer)func->name, func);
}
@@ -699,13 +727,13 @@ gnm_func_add_placeholder_full (Workbook *scope,
return func;
}
-/*
- * When importing it is useful to keep track of unknown function names.
- * We may be missing a plugin or something similar.
+/**
+ * gnm_func_add_placeholder:
+ * @scope: (nullable): scope to defined placeholder, %NULL for global
+ * @name: (nullable): function name
+ * @type:
*
- * TODO : Eventully we should be able to keep track of these
- * and replace them with something else. Possibly even reordering the
- * arguments.
+ * Returns: (transfer none): a placeholder with the given name.
*/
GnmFunc *
gnm_func_add_placeholder (Workbook *scope,
@@ -714,13 +742,26 @@ gnm_func_add_placeholder (Workbook *scope,
return gnm_func_add_placeholder_full (scope, name, NULL, type);
}
+/**
+ * gnm_func_add_placeholder_localized:
+ * @gname: (nullable): function name
+ * @lname: localized function name
+ *
+ * Returns: (transfer none): a placeholder with the given localized name.
+ */
GnmFunc *
gnm_func_add_placeholder_localized (char const *gname, char const *lname)
{
return gnm_func_add_placeholder_full (NULL, gname, lname, "?");
}
-/* Utility routine to be used for import and analysis tools */
+/**
+ * gnm_func_lookup_or_add_placeholder:
+ * @name: function name
+ *
+ * Returns: (transfer none): a #GnmFunc named @name, either an existing
+ * one or a placeholder.
+ */
GnmFunc *
gnm_func_lookup_or_add_placeholder (char const *name)
{
@@ -730,28 +771,6 @@ gnm_func_lookup_or_add_placeholder (char const *name)
return f;
}
-/**
- * gnm_func_get_user_data:
- * @func:
- *
- * Returns: (transfer none):
- **/
-gpointer
-gnm_func_get_user_data (GnmFunc const *func)
-{
- g_return_val_if_fail (func != NULL, NULL);
-
- return func->user_data;
-}
-
-void
-gnm_func_set_user_data (GnmFunc *func, gpointer user_data)
-{
- g_return_if_fail (func != NULL);
-
- func->user_data = user_data;
-}
-
/**
* gnm_func_get_name:
* @func: #GnmFunc to query
@@ -845,46 +864,50 @@ gnm_func_get_description (GnmFunc const *fn_def)
* @min: (out): location for mininum args
* @max: (out): location for mininum args
*
- * This calculates the maximum and minimum number of args tha can be passed.
+ * This calculates the maximum and minimum number of args that can be passed.
* For a vararg function, the maximum will be set to G_MAXINT.
**/
void
gnm_func_count_args (GnmFunc const *fn_def, int *min, int *max)
{
- char const *ptr;
- int i;
- int vararg;
-
g_return_if_fail (min != NULL);
g_return_if_fail (max != NULL);
g_return_if_fail (fn_def != NULL);
gnm_func_load_if_stub ((GnmFunc *)fn_def);
- /*
- * FIXME: clearly for 'nodes' functions many of
- * the type fields will need to be filled.
- */
- if (fn_def->fn_type == GNM_FUNC_TYPE_NODES) {
+ switch (fn_def->fn_type) {
+ case GNM_FUNC_TYPE_NODES:
*min = 0;
+ // Really?
if (g_ascii_strcasecmp ("INDEX",fn_def->name) == 0)
*max = 4;
else
*max = G_MAXINT;
return;
- }
- ptr = fn_def->fn.args.arg_spec;
- for (i = vararg = 0; ptr && *ptr; ptr++) {
- if (*ptr == '|') {
- vararg = 1;
+ case GNM_FUNC_TYPE_ARGS: {
+ const char *ptr = fn_def->fn.args.arg_spec;
+ int i, vararg;
+
+ for (i = vararg = 0; ptr && *ptr; ptr++) {
+ if (*ptr == '|') {
+ vararg = 1;
+ *min = i;
+ } else
+ i++;
+ }
+ *max = i;
+ if (!vararg)
*min = i;
- } else
- i++;
+ return;
+ }
+
+ default:
+ *min = 0;
+ *max = G_MAXINT;
+ return;
}
- *max = i;
- if (!vararg)
- *min = i;
}
/**
@@ -935,7 +958,7 @@ gnm_func_get_arg_type (GnmFunc const *fn_def, int arg_idx)
**/
char const *
gnm_func_get_arg_type_string (GnmFunc const *fn_def,
- int arg_idx)
+ int arg_idx)
{
switch (gnm_func_get_arg_type (fn_def, arg_idx)) {
case 'f':
@@ -979,7 +1002,7 @@ gnm_func_get_arg_name (GnmFunc const *fn_def, guint arg_idx)
if ((fn_def->arg_names_p != NULL)
&& (arg_idx < fn_def->arg_names_p->len))
return g_strdup (g_ptr_array_index (fn_def->arg_names_p,
- arg_idx));
+ arg_idx));
return NULL;
}
@@ -1616,6 +1639,12 @@ function_iterate_argument_values (GnmEvalPos const *ep,
}
+/**
+ * gnm_eval_info_get_func:
+ * @ei: #GnmFuncEvalInfo
+ *
+ * Returns: (transfer none): the called function.
+ */
GnmFunc const *
gnm_eval_info_get_func (GnmFuncEvalInfo const *ei)
{
@@ -1627,3 +1656,161 @@ gnm_eval_info_get_arg_count (GnmFuncEvalInfo const *ei)
{
return ei->func_call->argc;
}
+
+GnmDependentFlags
+gnm_func_link_dep (GnmFunc *func, GnmFuncEvalInfo *ei, gboolean qlink)
+{
+ int res = DEPENDENT_NO_FLAG;
+ g_signal_emit (func, signals[SIG_LINK_DEP], 0, ei, qlink, &res);
+ return (GnmDependentFlags)res;
+}
+
+/* ------------------------------------------------------------------------- */
+
+static GObjectClass *parent_class;
+
+typedef struct {
+ GObjectClass parent;
+
+ void (*load_stub) (GnmFunc *func);
+ int (*link_dep) (GnmFunc *func, GnmFuncEvalInfo *ei, gboolean qlink);
+} GnmFuncClass;
+
+static void
+gnm_func_finalize (GObject *obj)
+{
+ GnmFunc *func = GNM_FUNC (obj);
+
+ if (func->usage_count != 0) {
+ g_printerr ("Function %s still has a usage count of %d\n",
+ func->name, func->usage_count);
+ }
+
+ if (func->fn_group) {
+ gnm_func_group_remove_func (func->fn_group, func);
+ func->fn_group = NULL;
+ }
+
+ gnm_func_set_localized_name (func, NULL);
+
+ if (!(func->flags & GNM_FUNC_IS_WORKBOOK_LOCAL)) {
+ g_hash_table_remove (functions_by_name, func->name);
+ }
+
+ if (func->fn_type == GNM_FUNC_TYPE_ARGS)
+ g_free (func->fn.args.arg_types);
+
+ g_free ((char *)func->name);
+
+ go_string_unref (func->tdomain);
+
+ gnm_func_clear_arg_names (func);
+
+ parent_class->finalize (obj);
+}
+
+static void
+gnm_func_get_property (GObject *object, guint property_id,
+ GValue *value, GParamSpec *pspec)
+{
+ GnmFunc *func = (GnmFunc *)object;
+
+ switch (property_id) {
+ case PROP_NAME:
+ g_value_set_string (value, func->name);
+ break;
+ case PROP_TRANSLATION_DOMAIN:
+ g_value_set_string (value, func->tdomain->str);
+ break;
+ case PROP_IN_USE:
+ g_value_set_boolean (value, func->usage_count > 0);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+static void
+gnm_func_set_property (GObject *object, guint property_id,
+ GValue const *value, GParamSpec *pspec)
+{
+ GnmFunc *func = (GnmFunc *)object;
+
+ switch (property_id) {
+ case PROP_NAME:
+ func->name = g_value_dup_string (value);
+ break;
+ case PROP_TRANSLATION_DOMAIN:
+ gnm_func_set_translation_domain (func,
+ g_value_get_string (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+static void
+gnm_func_init (GnmFunc *func)
+{
+ func->tdomain = go_string_new (GETTEXT_PACKAGE);
+}
+
+static void
+gnm_func_class_init (GObjectClass *gobject_class)
+{
+ parent_class = g_type_class_peek_parent (gobject_class);
+
+ gobject_class->finalize = gnm_func_finalize;
+ gobject_class->get_property = gnm_func_get_property;
+ gobject_class->set_property = gnm_func_set_property;
+
+ g_object_class_install_property (gobject_class, PROP_NAME,
+ g_param_spec_string ("name",
+ P_("Name"),
+ P_("The name of the function."),
+ NULL,
+ GSF_PARAM_STATIC |
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY));
+
+ g_object_class_install_property (gobject_class, PROP_TRANSLATION_DOMAIN,
+ g_param_spec_string ("translation-domain",
+ P_("Translation Domain"),
+ P_("The translation domain for help texts"),
+ NULL,
+ GSF_PARAM_STATIC |
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (gobject_class, PROP_IN_USE,
+ g_param_spec_boolean ("in-use",
+ P_("In use"),
+ P_("Is function being used?"),
+ FALSE,
+ GSF_PARAM_STATIC |
+ G_PARAM_READABLE));
+
+ signals[SIG_LOAD_STUB] = g_signal_new
+ ("load-stub",
+ GNM_FUNC_TYPE,
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GnmFuncClass, load_stub),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+
+ signals[SIG_LINK_DEP] = g_signal_new
+ ("link-dep",
+ GNM_FUNC_TYPE,
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GnmFuncClass, link_dep),
+ NULL, NULL,
+ gnm__INT__POINTER_BOOLEAN,
+ // GnmDependentFlags ... GnmFuncEvalInfo
+ G_TYPE_INT, 2, G_TYPE_POINTER, G_TYPE_BOOLEAN);
+}
+
+GSF_CLASS (GnmFunc, gnm_func,
+ gnm_func_class_init, gnm_func_init, G_TYPE_OBJECT)
diff --git a/src/func.h b/src/func.h
index ee2c74c4d..9673e01d5 100644
--- a/src/func.h
+++ b/src/func.h
@@ -125,10 +125,6 @@ typedef enum {
typedef GnmValue *(*GnmFuncArgs) (GnmFuncEvalInfo *ei, GnmValue const * const *args);
typedef GnmValue *(*GnmFuncNodes) (GnmFuncEvalInfo *ei,
int argc, GnmExprConstPtr const *argv);
-typedef GnmDependentFlags (*GnmFuncLink) (GnmFuncEvalInfo *ei, gboolean qlink);
-
-typedef void (*GnmFuncUsageNotify) (GnmFunc *f, int refcount);
-typedef gboolean (*GnmFuncLoadDesc) (GnmFunc const *f, GnmFuncDescriptor *fd);
typedef enum {
GNM_FUNC_HELP_END, /* Format */
@@ -167,6 +163,7 @@ typedef enum {
GNM_FUNC_HELP_ODF
/* <SPECIAL NOTE RE ODF (reference args using @{arg})> (translated) */
} GnmFuncHelpType;
+
typedef struct {
GnmFuncHelpType type;
char const *text;
@@ -178,16 +175,16 @@ struct _GnmFuncDescriptor {
GnmFuncHelp const *help;
GnmFuncArgs fn_args;
GnmFuncNodes fn_nodes;
- GnmFuncLink linker;
- GnmFuncUsageNotify usage_notify;
GnmFuncFlags flags;
GnmFuncImplStatus impl_status;
GnmFuncTestStatus test_status;
};
-struct _GnmFunc {
+struct GnmFunc_ {
+ GObject base;
+
char const *name;
- GPtrArray *arg_names_p;
+ GPtrArray *arg_names_p;
GnmFuncHelp const *help;
GOString *tdomain;
char *localized_name;
@@ -200,39 +197,39 @@ struct _GnmFunc {
int min_args, max_args;
char *arg_types;
} args;
- GnmFuncLoadDesc load_desc;
} fn;
GnmFuncGroup *fn_group; /* most recent it was assigned to */
- GnmFuncLink linker;
- GnmFuncUsageNotify usage_notify;
GnmFuncImplStatus impl_status;
GnmFuncTestStatus test_status;
GnmFuncFlags flags;
gint usage_count;
- gpointer user_data;
};
-struct _GnmFuncEvalInfo {
- GnmEvalPos const *pos;
- GnmExprFunction const *func_call;
- GnmExprEvalFlags flags;
-};
-
-GnmFunc const *gnm_eval_info_get_func (GnmFuncEvalInfo const *ei);
-int gnm_eval_info_get_arg_count (GnmFuncEvalInfo const *ei);
-
+#define GNM_FUNC_TYPE (gnm_func_get_type ())
+#define GNM_FUNC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GNM_FUNC_TYPE, GnmFunc))
+#define GNM_IS_FUNC(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNM_FUNC_TYPE))
GType gnm_func_get_type (void);
-void gnm_func_free (GnmFunc *func);
-GnmFunc *gnm_func_ref (GnmFunc *func);
-void gnm_func_unref (GnmFunc *func);
void gnm_func_load_if_stub (GnmFunc *func);
-void gnm_func_load_stub (GnmFunc *fn_def);
+void gnm_func_load_stub (GnmFunc *func);
+
+GnmFunc *gnm_func_inc_usage (GnmFunc *func);
+void gnm_func_dec_usage (GnmFunc *func);
+gboolean gnm_func_get_in_use (GnmFunc *func);
+
+char const *gnm_func_get_translation_domain (GnmFunc *func);
+void gnm_func_set_translation_domain (GnmFunc *func,
+ const char *tdomain);
+
+void gnm_func_set_function_group (GnmFunc *func, GnmFuncGroup *group);
+
+void gnm_func_set_function_type (GnmFunc *func, GnmFuncType typ);
+
+GnmDependentFlags gnm_func_link_dep (GnmFunc *func, GnmFuncEvalInfo *ei, gboolean qlink);
+
char const *gnm_func_get_name (GnmFunc const *func,
gboolean localized);
-gpointer gnm_func_get_user_data (GnmFunc const *func);
-void gnm_func_set_user_data (GnmFunc *func, gpointer user_data);
GnmFunc *gnm_func_lookup (char const *name, Workbook *scope);
GnmFunc *gnm_func_lookup_localized (char const *name, Workbook *scope);
GSList *gnm_func_lookup_prefix (char const *prefix, Workbook *scope,
@@ -240,17 +237,11 @@ GSList *gnm_func_lookup_prefix (char const *prefix, Workbook *scope,
GnmFunc *gnm_func_add (GnmFuncGroup *group,
GnmFuncDescriptor const *descriptor,
const char *tdomain);
-GnmFunc *gnm_func_add_placeholder (Workbook *optional_scope,
+GnmFunc *gnm_func_add_placeholder (Workbook *scope,
char const *name,
char const *type);
GnmFunc *gnm_func_add_placeholder_localized (char const *gname, char const *lname);
GnmFunc *gnm_func_lookup_or_add_placeholder (char const *name);
-void gnm_func_upgrade_placeholder
- (GnmFunc *fd,
- GnmFuncGroup *fn_group,
- const char *tdomain,
- GnmFuncLoadDesc load_desc,
- GnmFuncUsageNotify opt_usage_notify);
/* TODO */
char const *gnm_func_get_description (GnmFunc const *fn_def);
@@ -286,6 +277,17 @@ GnmValue *function_iterate_argument_values (GnmEvalPos const *ep,
gboolean strict,
CellIterFlags iter_flags);
+/*************************************************************************/
+
+struct _GnmFuncEvalInfo {
+ GnmEvalPos const *pos;
+ GnmExprFunction const *func_call;
+ GnmExprEvalFlags flags;
+};
+
+GnmFunc const *gnm_eval_info_get_func (GnmFuncEvalInfo const *ei);
+int gnm_eval_info_get_arg_count (GnmFuncEvalInfo const *ei);
+
G_END_DECLS
#endif /* _GNM_FUNC_H_ */
diff --git a/src/gnm-marshalers.list b/src/gnm-marshalers.list
index 7b0139357..2655e605e 100644
--- a/src/gnm-marshalers.list
+++ b/src/gnm-marshalers.list
@@ -24,3 +24,4 @@ BOOLEAN:POINTER
BOOLEAN:OBJECT,POINTER
VOID:BOOLEAN,INT
BOOLEAN:VOID
+INT:POINTER,BOOLEAN
diff --git a/src/gnm-plugin.c b/src/gnm-plugin.c
index 0bcb43024..fac15210e 100644
--- a/src/gnm-plugin.c
+++ b/src/gnm-plugin.c
@@ -143,45 +143,41 @@ plugin_service_function_group_read_xml (GOPluginService *service, xmlNode *tree,
}
}
-static gboolean
-plugin_service_function_group_func_desc_load (GnmFunc const *fn_def,
- GnmFuncDescriptor *res)
+static void
+plugin_service_function_group_func_ref_notify (GnmFunc *fn_def,
+ G_GNUC_UNUSED GParamSpec *pspec,
+ GOPlugin *plugin)
+{
+ if (gnm_func_get_in_use (fn_def))
+ go_plugin_use_ref (plugin);
+ else
+ go_plugin_use_unref (plugin);
+}
+
+static void
+plugin_service_function_group_func_load_stub (GnmFunc *fn_def,
+ GOPluginService *service)
{
- GOPluginService *service = gnm_func_get_user_data (fn_def);
GnmPluginServiceFunctionGroup *sfg = GNM_PLUGIN_SERVICE_FUNCTION_GROUP (service);
GOErrorInfo *error = NULL;
- g_return_val_if_fail (fn_def != NULL, FALSE);
+ g_return_if_fail (fn_def != NULL);
go_plugin_service_load (service, &error);
if (error != NULL) {
go_error_info_print (error);
go_error_info_free (error);
- return FALSE;
+ return;
}
- if (NULL == sfg->cbs.func_desc_load) {
- error = go_error_info_new_printf (_("No func_desc_load method.\n"));
+
+ if (!sfg->cbs.load_stub) {
+ error = go_error_info_new_printf (_("No load_stub method.\n"));
go_error_info_print (error);
go_error_info_free (error);
- return FALSE;
+ return;
}
- return sfg->cbs.func_desc_load (service,
- gnm_func_get_name (fn_def, FALSE),
- res);
-}
-static void
-plugin_service_function_group_func_ref_notify (GnmFunc *fn_def, int refcount)
-{
- GOPluginService *service;
-
- service = gnm_func_get_user_data (fn_def);
- g_return_if_fail (GNM_IS_PLUGIN_SERVICE_FUNCTION_GROUP (service));
- if (refcount == 0) {
- go_plugin_use_unref (service->plugin);
- } else {
- go_plugin_use_ref (service->plugin);
- }
+ sfg->cbs.load_stub (service, fn_def);
}
static void
@@ -192,7 +188,7 @@ delayed_ref_notify (GOPlugin *plugin, GnmFunc *fd)
fd);
/* We cannot do this until after the plugin has been activated. */
- plugin_service_function_group_func_ref_notify (fd, 1);
+ plugin_service_function_group_func_ref_notify (fd, NULL, plugin);
}
static void
@@ -200,40 +196,41 @@ plugin_service_function_group_activate (GOPluginService *service, GOErrorInfo **
{
GnmPluginServiceFunctionGroup *sfg =
GNM_PLUGIN_SERVICE_FUNCTION_GROUP (service);
+ GOPlugin *plugin = go_plugin_service_get_plugin (service);
+ GSList *l;
GO_INIT_RET_ERROR_INFO (ret_error);
sfg->func_group = gnm_func_group_fetch (sfg->category_name,
sfg->translated_category_name);
if (gnm_debug_flag ("plugin-func"))
g_printerr ("Activating group %s\n", sfg->category_name);
- GO_SLIST_FOREACH
- (sfg->function_name_list, char, fname,
- GnmFunc *fd;
-
- fd = gnm_func_lookup (fname, NULL);
- if (fd) {
-#if 0
- g_printerr ("Reusing placeholder for %s\n", fname);
-#endif
- } else {
- fd = gnm_func_add_placeholder (NULL, fname, "?");
- }
- if (fd->flags & GNM_FUNC_IS_PLACEHOLDER) {
- gnm_func_set_user_data (fd, service);
- gnm_func_upgrade_placeholder
- (fd, sfg->func_group,
- sfg->tdomain,
- plugin_service_function_group_func_desc_load,
- plugin_service_function_group_func_ref_notify);
- if (fd->usage_count > 0)
- g_signal_connect (go_plugin_service_get_plugin (service),
- "state_changed",
- G_CALLBACK (delayed_ref_notify),
- fd);
- } else {
- g_warning ("Multiple definitions of function %s -- this cannot be good!", fname);
- }
- );
+
+ for (l = sfg->function_name_list; l; l = l->next) {
+ const char *fname = l->data;
+ GnmFunc *fd = gnm_func_lookup_or_add_placeholder (fname);
+
+ gnm_func_set_function_type (fd, GNM_FUNC_TYPE_STUB);
+ gnm_func_set_translation_domain (fd, sfg->tdomain);
+ gnm_func_set_function_group (fd, sfg->func_group);
+ // Clear localized_name so we can deduce the proper name.
+ //gnm_func_set_localized_name (fd, NULL);
+
+ g_signal_connect
+ (G_OBJECT (fd), "notify::in-use",
+ G_CALLBACK (plugin_service_function_group_func_ref_notify),
+ plugin);
+
+ g_signal_connect
+ (G_OBJECT (fd), "load-stub",
+ G_CALLBACK (plugin_service_function_group_func_load_stub),
+ service);
+
+ if (fd->usage_count > 0)
+ g_signal_connect (plugin,
+ "state_changed",
+ G_CALLBACK (delayed_ref_notify),
+ fd);
+ }
service->is_active = TRUE;
}
@@ -241,14 +238,18 @@ static void
plugin_service_function_group_deactivate (GOPluginService *service, GOErrorInfo **ret_error)
{
GnmPluginServiceFunctionGroup *sfg = GNM_PLUGIN_SERVICE_FUNCTION_GROUP (service);
+ GSList *l;
if (gnm_debug_flag ("plugin-func"))
g_printerr ("Deactivating group %s\n", sfg->category_name);
GO_INIT_RET_ERROR_INFO (ret_error);
- GO_SLIST_FOREACH (sfg->function_name_list, char, fname,
- gnm_func_free (gnm_func_lookup (fname, NULL));
- );
+
+ for (l = sfg->function_name_list; l; l = l->next) {
+ const char *fname = l->data;
+ GnmFunc *func = gnm_func_lookup (fname, NULL);
+ g_object_unref (func);
+ }
service->is_active = FALSE;
}
@@ -741,26 +742,43 @@ function_group_loader_data_free (gpointer data)
g_free (ld);
}
-static gboolean
-gnm_plugin_loader_module_func_desc_load (GOPluginService *service,
- char const *name,
- GnmFuncDescriptor *res)
+static void
+gnm_plugin_loader_module_func_load_stub (GOPluginService *service,
+ GnmFunc *func)
{
ServiceLoaderDataFunctionGroup *loader_data;
- gpointer func_index_ptr;
+ gpointer index_ptr;
+ GnmFuncDescriptor *desc;
+ const char *name;
- g_return_val_if_fail (GNM_IS_PLUGIN_SERVICE_FUNCTION_GROUP (service), FALSE);
- g_return_val_if_fail (name != NULL, FALSE);
+ g_return_if_fail (GNM_IS_PLUGIN_SERVICE_FUNCTION_GROUP (service));
+ g_return_if_fail (GNM_IS_FUNC (func));
+ name = gnm_func_get_name (func, FALSE);
loader_data = g_object_get_data (G_OBJECT (service), "loader_data");
- if (g_hash_table_lookup_extended (loader_data->function_indices, (gpointer) name,
- NULL, &func_index_ptr)) {
- int i = GPOINTER_TO_INT (func_index_ptr);
- *res = loader_data->module_fn_info_array[i];
- return TRUE;
+ if (!g_hash_table_lookup_extended (loader_data->function_indices,
+ (gpointer)name,
+ NULL, &index_ptr))
+ return; // Failed
+
+ desc = loader_data->module_fn_info_array + GPOINTER_TO_INT (index_ptr);
+
+ func->help = desc->help ? desc->help : NULL;
+ func->impl_status = desc->impl_status;
+ func->test_status = desc->test_status;
+ func->flags = desc->flags;
+ if (desc->fn_args != NULL) {
+ func->fn.args.func = desc->fn_args;
+ func->fn.args.arg_spec = desc->arg_spec;
+ gnm_func_set_function_type (func, GNM_FUNC_TYPE_ARGS);
+ } else if (desc->fn_nodes != NULL) {
+ func->fn.nodes = desc->fn_nodes;
+ gnm_func_set_function_type (func, GNM_FUNC_TYPE_NODES);
+ } else {
+ g_warning ("Invalid function descriptor with no function");
}
- return FALSE;
}
+
static void
gnm_plugin_loader_module_load_service_function_group (GOPluginLoader *loader,
GOPluginService *service,
@@ -782,7 +800,7 @@ gnm_plugin_loader_module_load_service_function_group (GOPluginLoader *loader,
gint i;
cbs = go_plugin_service_get_cbs (service);
- cbs->func_desc_load = &gnm_plugin_loader_module_func_desc_load;
+ cbs->load_stub = &gnm_plugin_loader_module_func_load_stub;
loader_data = g_new (ServiceLoaderDataFunctionGroup, 1);
loader_data->module_fn_info_array = module_fn_info_array;
@@ -949,7 +967,7 @@ gplm_service_unload (GOPluginLoader *l, GOPluginService *s, GOErrorInfo **err)
{
if (GNM_IS_PLUGIN_SERVICE_FUNCTION_GROUP (s)) {
GnmPluginServiceFunctionGroupCallbacks *cbs = go_plugin_service_get_cbs (s);
- cbs->func_desc_load = NULL;
+ cbs->load_stub = NULL;
} else if (GNM_IS_PLUGIN_SERVICE_UI (s)) {
GnmPluginServiceUICallbacks *cbs = go_plugin_service_get_cbs (s);
cbs->plugin_func_exec_action = NULL;
diff --git a/src/gnm-plugin.h b/src/gnm-plugin.h
index d15ba79b6..c062e2143 100644
--- a/src/gnm-plugin.h
+++ b/src/gnm-plugin.h
@@ -20,8 +20,7 @@ GType gnm_plugin_loader_module_get_type (void);
GType gnm_plugin_service_function_group_get_type (void);
typedef struct GnmPluginServiceFunctionGroup_ GnmPluginServiceFunctionGroup;
typedef struct {
- gboolean (*func_desc_load) (GOPluginService *service, char const *name,
- GnmFuncDescriptor *res);
+ void (*load_stub) (GOPluginService *service, GnmFunc *func);
} GnmPluginServiceFunctionGroupCallbacks;
#define GNM_PLUGIN_SERVICE_UI_TYPE (gnm_plugin_service_ui_get_type ())
diff --git a/src/gnumeric-fwd.h b/src/gnumeric-fwd.h
index 87f69664e..c1a83c265 100644
--- a/src/gnumeric-fwd.h
+++ b/src/gnumeric-fwd.h
@@ -46,7 +46,7 @@ typedef struct _GnmFilterCondition GnmFilterCondition;
typedef struct _GnmFont GnmFont;
typedef struct _GnmFontMetrics GnmFontMetrics;
typedef struct GnmFT_ GnmFT; /* does not really belong here */
-typedef struct _GnmFunc GnmFunc;
+typedef struct GnmFunc_ GnmFunc;
typedef struct _GnmFuncDescriptor GnmFuncDescriptor;
typedef struct _GnmFuncEvalInfo GnmFuncEvalInfo;
typedef struct _GnmFuncGroup GnmFuncGroup;
diff --git a/src/gutils.c b/src/gutils.c
index 40cefcc4e..6f12d1f8c 100644
--- a/src/gutils.c
+++ b/src/gutils.c
@@ -51,7 +51,7 @@ running_in_tree (void)
if (!argv0)
return FALSE;
- /* Sometime we see, e.g., "lt-gnumeric" as basename. */
+ /* Sometimes we see, e.g., "lt-gnumeric" as basename. */
{
char *base = g_path_get_basename (argv0);
gboolean has_lt_prefix = (strncmp (base, "lt-", 3) == 0);
diff --git a/src/sheet.c b/src/sheet.c
index 2ed8c0bb2..dc36c0a3e 100644
--- a/src/sheet.c
+++ b/src/sheet.c
@@ -97,7 +97,7 @@ enum {
LAST_SIGNAL
};
-static guint signals [LAST_SIGNAL] = { 0 };
+static guint signals[LAST_SIGNAL] = { 0 };
typedef struct {
GObjectClass parent;
diff --git a/src/tools/analysis-anova.c b/src/tools/analysis-anova.c
index 9503191a1..b08ff56d6 100644
--- a/src/tools/analysis-anova.c
+++ b/src/tools/analysis-anova.c
@@ -95,25 +95,25 @@ analysis_tool_anova_two_factor_no_rep_engine_run (data_analysis_output_t *dao,
GnmFunc *fd_finv;
fd_index = gnm_func_lookup_or_add_placeholder ("INDEX");
- gnm_func_ref (fd_index);
+ gnm_func_inc_usage (fd_index);
fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET");
- gnm_func_ref (fd_offset);
+ gnm_func_inc_usage (fd_offset);
fd_count = gnm_func_lookup_or_add_placeholder ("COUNT");
- gnm_func_ref (fd_count);
+ gnm_func_inc_usage (fd_count);
fd_sum = gnm_func_lookup_or_add_placeholder ("SUM");
- gnm_func_ref (fd_sum);
+ gnm_func_inc_usage (fd_sum);
fd_sumsq = gnm_func_lookup_or_add_placeholder ("SUMSQ");
- gnm_func_ref (fd_sumsq);
+ gnm_func_inc_usage (fd_sumsq);
fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE");
- gnm_func_ref (fd_average);
+ gnm_func_inc_usage (fd_average);
fd_var = gnm_func_lookup_or_add_placeholder ("VAR");
- gnm_func_ref (fd_var);
+ gnm_func_inc_usage (fd_var);
fd_if = gnm_func_lookup_or_add_placeholder ("IF");
- gnm_func_ref (fd_if);
+ gnm_func_inc_usage (fd_if);
fd_fdist = gnm_func_lookup_or_add_placeholder ("FDIST");
- gnm_func_ref (fd_fdist);
+ gnm_func_inc_usage (fd_fdist);
fd_finv = gnm_func_lookup_or_add_placeholder ("FINV");
- gnm_func_ref (fd_finv);
+ gnm_func_inc_usage (fd_finv);
dao_set_merge (dao, 0, 0, 4, 0);
dao_set_italic (dao, 0, 0, 0, 0);
@@ -384,16 +384,16 @@ analysis_tool_anova_two_factor_no_rep_engine_run (data_analysis_output_t *dao,
} else
dao_set_cell (dao, 0, 0, _("Insufficient space available for ANOVA table."));
- gnm_func_unref (fd_index);
- gnm_func_unref (fd_count);
- gnm_func_unref (fd_offset);
- gnm_func_unref (fd_sum);
- gnm_func_unref (fd_sumsq);
- gnm_func_unref (fd_average);
- gnm_func_unref (fd_var);
- gnm_func_unref (fd_if);
- gnm_func_unref (fd_finv);
- gnm_func_unref (fd_fdist);
+ gnm_func_dec_usage (fd_index);
+ gnm_func_dec_usage (fd_count);
+ gnm_func_dec_usage (fd_offset);
+ gnm_func_dec_usage (fd_sum);
+ gnm_func_dec_usage (fd_sumsq);
+ gnm_func_dec_usage (fd_average);
+ gnm_func_dec_usage (fd_var);
+ gnm_func_dec_usage (fd_if);
+ gnm_func_dec_usage (fd_finv);
+ gnm_func_dec_usage (fd_fdist);
gnm_expr_free (expr_region);
@@ -433,25 +433,25 @@ analysis_tool_anova_two_factor_engine_run (data_analysis_output_t *dao,
GnmFunc *fd_finv;
fd_index = gnm_func_lookup_or_add_placeholder ("INDEX");
- gnm_func_ref (fd_index);
+ gnm_func_inc_usage (fd_index);
fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET");
- gnm_func_ref (fd_offset);
+ gnm_func_inc_usage (fd_offset);
fd_count = gnm_func_lookup_or_add_placeholder ("COUNT");
- gnm_func_ref (fd_count);
+ gnm_func_inc_usage (fd_count);
fd_sum = gnm_func_lookup_or_add_placeholder ("SUM");
- gnm_func_ref (fd_sum);
+ gnm_func_inc_usage (fd_sum);
fd_sumsq = gnm_func_lookup_or_add_placeholder ("SUMSQ");
- gnm_func_ref (fd_sumsq);
+ gnm_func_inc_usage (fd_sumsq);
fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE");
- gnm_func_ref (fd_average);
+ gnm_func_inc_usage (fd_average);
fd_var = gnm_func_lookup_or_add_placeholder ("VAR");
- gnm_func_ref (fd_var);
+ gnm_func_inc_usage (fd_var);
fd_if = gnm_func_lookup_or_add_placeholder ("IF");
- gnm_func_ref (fd_if);
+ gnm_func_inc_usage (fd_if);
fd_fdist = gnm_func_lookup_or_add_placeholder ("FDIST");
- gnm_func_ref (fd_fdist);
+ gnm_func_inc_usage (fd_fdist);
fd_finv = gnm_func_lookup_or_add_placeholder ("FINV");
- gnm_func_ref (fd_finv);
+ gnm_func_inc_usage (fd_finv);
dao_set_merge (dao, 0, 0, 4, 0);
dao_set_italic (dao, 0, 0, 0, 0);
@@ -790,16 +790,16 @@ analysis_tool_anova_two_factor_engine_run (data_analysis_output_t *dao,
} else
dao_set_cell (dao, 0, 0, _("Insufficient space available for ANOVA table."));
- gnm_func_unref (fd_index);
- gnm_func_unref (fd_count);
- gnm_func_unref (fd_offset);
- gnm_func_unref (fd_sum);
- gnm_func_unref (fd_sumsq);
- gnm_func_unref (fd_average);
- gnm_func_unref (fd_var);
- gnm_func_unref (fd_if);
- gnm_func_unref (fd_finv);
- gnm_func_unref (fd_fdist);
+ gnm_func_dec_usage (fd_index);
+ gnm_func_dec_usage (fd_count);
+ gnm_func_dec_usage (fd_offset);
+ gnm_func_dec_usage (fd_sum);
+ gnm_func_dec_usage (fd_sumsq);
+ gnm_func_dec_usage (fd_average);
+ gnm_func_dec_usage (fd_var);
+ gnm_func_dec_usage (fd_if);
+ gnm_func_dec_usage (fd_finv);
+ gnm_func_dec_usage (fd_fdist);
gnm_expr_free (expr_source);
gnm_expr_free (expr_total_count);
diff --git a/src/tools/analysis-auto-expression.c b/src/tools/analysis-auto-expression.c
index fa6b0343b..e6dd21045 100644
--- a/src/tools/analysis-auto-expression.c
+++ b/src/tools/analysis-auto-expression.c
@@ -78,7 +78,7 @@ analysis_tool_auto_expression_engine_clean (gpointer specs)
{
analysis_tools_data_auto_expression_t *info = specs;
- gnm_func_unref (info->func);
+ gnm_func_dec_usage (info->func);
info->func = NULL;
return analysis_tool_generic_clean (specs);
diff --git a/src/tools/analysis-chi-squared.c b/src/tools/analysis-chi-squared.c
index 55e6275be..ee4a69f6f 100644
--- a/src/tools/analysis-chi-squared.c
+++ b/src/tools/analysis-chi-squared.c
@@ -133,15 +133,15 @@ analysis_tool_chi_squared_engine_run (data_analysis_output_t *dao,
gnm_expr_new_constant (value_new_float (info->alpha)),
make_cellref (0,-2)));
- gnm_func_unref (fd_mmult);
- gnm_func_unref (fd_row);
- gnm_func_unref (fd_column);
- gnm_func_unref (fd_transpose);
- gnm_func_unref (fd_sum);
- gnm_func_unref (fd_min);
- gnm_func_unref (fd_offset);
- gnm_func_unref (fd_chiinv);
- gnm_func_unref (fd_chidist);
+ gnm_func_dec_usage (fd_mmult);
+ gnm_func_dec_usage (fd_row);
+ gnm_func_dec_usage (fd_column);
+ gnm_func_dec_usage (fd_transpose);
+ gnm_func_dec_usage (fd_sum);
+ gnm_func_dec_usage (fd_min);
+ gnm_func_dec_usage (fd_offset);
+ gnm_func_dec_usage (fd_chiinv);
+ gnm_func_dec_usage (fd_chidist);
gnm_expr_free (expr_expect);
gnm_expr_free (expr_region);
diff --git a/src/tools/analysis-exp-smoothing.c b/src/tools/analysis-exp-smoothing.c
index 44d87482a..86f389c22 100644
--- a/src/tools/analysis-exp-smoothing.c
+++ b/src/tools/analysis-exp-smoothing.c
@@ -94,15 +94,15 @@ analysis_tool_exponential_smoothing_engine_ses_h_run (data_analysis_output_t *da
if (info->std_error_flag) {
fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT");
- gnm_func_ref (fd_sqrt);
+ gnm_func_inc_usage (fd_sqrt);
fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2");
- gnm_func_ref (fd_sumxmy2);
+ gnm_func_inc_usage (fd_sumxmy2);
}
fd_index = gnm_func_lookup_or_add_placeholder ("INDEX");
- gnm_func_ref (fd_index);
+ gnm_func_inc_usage (fd_index);
fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET");
- gnm_func_ref (fd_offset);
+ gnm_func_inc_usage (fd_offset);
if (info->show_graph)
create_line_plot (&plot, &so);
@@ -243,11 +243,11 @@ analysis_tool_exponential_smoothing_engine_ses_h_run (data_analysis_output_t *da
gnm_expr_free (expr_alpha);
if (fd_sqrt != NULL)
- gnm_func_unref (fd_sqrt);
+ gnm_func_dec_usage (fd_sqrt);
if (fd_sumxmy2 != NULL)
- gnm_func_unref (fd_sumxmy2);
- gnm_func_unref (fd_offset);
- gnm_func_unref (fd_index);
+ gnm_func_dec_usage (fd_sumxmy2);
+ gnm_func_dec_usage (fd_offset);
+ gnm_func_dec_usage (fd_index);
dao_redraw_respan (dao);
@@ -272,16 +272,16 @@ analysis_tool_exponential_smoothing_engine_ses_r_run (data_analysis_output_t *da
if (info->std_error_flag) {
fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT");
- gnm_func_ref (fd_sqrt);
+ gnm_func_inc_usage (fd_sqrt);
fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2");
- gnm_func_ref (fd_sumxmy2);
+ gnm_func_inc_usage (fd_sumxmy2);
}
fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE");
- gnm_func_ref (fd_average);
+ gnm_func_inc_usage (fd_average);
fd_index = gnm_func_lookup_or_add_placeholder ("INDEX");
- gnm_func_ref (fd_index);
+ gnm_func_inc_usage (fd_index);
fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET");
- gnm_func_ref (fd_offset);
+ gnm_func_inc_usage (fd_offset);
if (info->show_graph)
create_line_plot (&plot, &so);
@@ -426,12 +426,12 @@ analysis_tool_exponential_smoothing_engine_ses_r_run (data_analysis_output_t *da
gnm_expr_free (expr_alpha);
if (fd_sqrt != NULL)
- gnm_func_unref (fd_sqrt);
+ gnm_func_dec_usage (fd_sqrt);
if (fd_sumxmy2 != NULL)
- gnm_func_unref (fd_sumxmy2);
- gnm_func_unref (fd_average);
- gnm_func_unref (fd_offset);
- gnm_func_unref (fd_index);
+ gnm_func_dec_usage (fd_sumxmy2);
+ gnm_func_dec_usage (fd_average);
+ gnm_func_dec_usage (fd_offset);
+ gnm_func_dec_usage (fd_index);
dao_redraw_respan (dao);
@@ -457,17 +457,17 @@ analysis_tool_exponential_smoothing_engine_des_run (data_analysis_output_t *dao,
if (info->std_error_flag) {
fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT");
- gnm_func_ref (fd_sqrt);
+ gnm_func_inc_usage (fd_sqrt);
fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2");
- gnm_func_ref (fd_sumxmy2);
+ gnm_func_inc_usage (fd_sumxmy2);
}
fd_linest = gnm_func_lookup_or_add_placeholder ("LINEST");
- gnm_func_ref (fd_linest);
+ gnm_func_inc_usage (fd_linest);
fd_index = gnm_func_lookup_or_add_placeholder ("INDEX");
- gnm_func_ref (fd_index);
+ gnm_func_inc_usage (fd_index);
fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET");
- gnm_func_ref (fd_offset);
+ gnm_func_inc_usage (fd_offset);
if (info->show_graph)
create_line_plot (&plot, &so);
@@ -659,12 +659,12 @@ analysis_tool_exponential_smoothing_engine_des_run (data_analysis_output_t *dao,
gnm_expr_free (expr_alpha);
gnm_expr_free (expr_gamma);
if (fd_sqrt != NULL)
- gnm_func_unref (fd_sqrt);
+ gnm_func_dec_usage (fd_sqrt);
if (fd_sumxmy2 != NULL)
- gnm_func_unref (fd_sumxmy2);
- gnm_func_unref (fd_linest);
- gnm_func_unref (fd_offset);
- gnm_func_unref (fd_index);
+ gnm_func_dec_usage (fd_sumxmy2);
+ gnm_func_dec_usage (fd_linest);
+ gnm_func_dec_usage (fd_offset);
+ gnm_func_dec_usage (fd_index);
dao_redraw_respan (dao);
@@ -695,23 +695,23 @@ analysis_tool_exponential_smoothing_engine_ates_run (data_analysis_output_t *dao
if (info->std_error_flag) {
fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT");
- gnm_func_ref (fd_sqrt);
+ gnm_func_inc_usage (fd_sqrt);
fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2");
- gnm_func_ref (fd_sumxmy2);
+ gnm_func_inc_usage (fd_sumxmy2);
}
fd_linest = gnm_func_lookup_or_add_placeholder ("LINEST");
- gnm_func_ref (fd_linest);
+ gnm_func_inc_usage (fd_linest);
fd_index = gnm_func_lookup_or_add_placeholder ("INDEX");
- gnm_func_ref (fd_index);
+ gnm_func_inc_usage (fd_index);
fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE");
- gnm_func_ref (fd_average);
+ gnm_func_inc_usage (fd_average);
fd_if = gnm_func_lookup_or_add_placeholder ("IF");
- gnm_func_ref (fd_if);
+ gnm_func_inc_usage (fd_if);
fd_mod = gnm_func_lookup_or_add_placeholder ("mod");
- gnm_func_ref (fd_mod);
+ gnm_func_inc_usage (fd_mod);
fd_row = gnm_func_lookup_or_add_placeholder ("row");
- gnm_func_ref (fd_row);
+ gnm_func_inc_usage (fd_row);
if (info->show_graph)
create_line_plot (&plot, &so);
@@ -977,15 +977,15 @@ analysis_tool_exponential_smoothing_engine_ates_run (data_analysis_output_t *dao
gnm_expr_free (expr_gamma);
gnm_expr_free (expr_delta);
if (fd_sqrt != NULL)
- gnm_func_unref (fd_sqrt);
+ gnm_func_dec_usage (fd_sqrt);
if (fd_sumxmy2 != NULL)
- gnm_func_unref (fd_sumxmy2);
- gnm_func_unref (fd_linest);
- gnm_func_unref (fd_index);
- gnm_func_unref (fd_average);
- gnm_func_unref (fd_if);
- gnm_func_unref (fd_mod);
- gnm_func_unref (fd_row);
+ gnm_func_dec_usage (fd_sumxmy2);
+ gnm_func_dec_usage (fd_linest);
+ gnm_func_dec_usage (fd_index);
+ gnm_func_dec_usage (fd_average);
+ gnm_func_dec_usage (fd_if);
+ gnm_func_dec_usage (fd_mod);
+ gnm_func_dec_usage (fd_row);
dao_redraw_respan (dao);
@@ -1016,25 +1016,25 @@ analysis_tool_exponential_smoothing_engine_mtes_run (data_analysis_output_t *dao
if (info->std_error_flag) {
fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT");
- gnm_func_ref (fd_sqrt);
+ gnm_func_inc_usage (fd_sqrt);
fd_sumsq = gnm_func_lookup_or_add_placeholder ("SUMSQ");
- gnm_func_ref (fd_sumsq);
+ gnm_func_inc_usage (fd_sumsq);
}
fd_linest = gnm_func_lookup_or_add_placeholder ("LINEST");
- gnm_func_ref (fd_linest);
+ gnm_func_inc_usage (fd_linest);
fd_index = gnm_func_lookup_or_add_placeholder ("INDEX");
- gnm_func_ref (fd_index);
+ gnm_func_inc_usage (fd_index);
fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET");
- gnm_func_ref (fd_offset);
+ gnm_func_inc_usage (fd_offset);
fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE");
- gnm_func_ref (fd_average);
+ gnm_func_inc_usage (fd_average);
fd_if = gnm_func_lookup_or_add_placeholder ("IF");
- gnm_func_ref (fd_if);
+ gnm_func_inc_usage (fd_if);
fd_mod = gnm_func_lookup_or_add_placeholder ("mod");
- gnm_func_ref (fd_mod);
+ gnm_func_inc_usage (fd_mod);
fd_row = gnm_func_lookup_or_add_placeholder ("row");
- gnm_func_ref (fd_row);
+ gnm_func_inc_usage (fd_row);
if (info->show_graph)
create_line_plot (&plot, &so);
@@ -1352,16 +1352,16 @@ analysis_tool_exponential_smoothing_engine_mtes_run (data_analysis_output_t *dao
gnm_expr_free (expr_gamma);
gnm_expr_free (expr_delta);
if (fd_sqrt != NULL)
- gnm_func_unref (fd_sqrt);
+ gnm_func_dec_usage (fd_sqrt);
if (fd_sumsq != NULL)
- gnm_func_unref (fd_sumsq);
- gnm_func_unref (fd_linest);
- gnm_func_unref (fd_offset);
- gnm_func_unref (fd_index);
- gnm_func_unref (fd_average);
- gnm_func_unref (fd_if);
- gnm_func_unref (fd_mod);
- gnm_func_unref (fd_row);
+ gnm_func_dec_usage (fd_sumsq);
+ gnm_func_dec_usage (fd_linest);
+ gnm_func_dec_usage (fd_offset);
+ gnm_func_dec_usage (fd_index);
+ gnm_func_dec_usage (fd_average);
+ gnm_func_dec_usage (fd_if);
+ gnm_func_dec_usage (fd_mod);
+ gnm_func_dec_usage (fd_row);
dao_redraw_respan (dao);
diff --git a/src/tools/analysis-frequency.c b/src/tools/analysis-frequency.c
index 8ac854db3..e96df17d9 100644
--- a/src/tools/analysis-frequency.c
+++ b/src/tools/analysis-frequency.c
@@ -51,23 +51,23 @@ analysis_tool_frequency_engine_run (data_analysis_output_t *dao,
GnmFunc *fd_exact = NULL;
fd_sum = gnm_func_lookup_or_add_placeholder ("SUM");
- gnm_func_ref (fd_sum);
+ gnm_func_inc_usage (fd_sum);
fd_if = gnm_func_lookup_or_add_placeholder ("IF");
- gnm_func_ref (fd_if);
+ gnm_func_inc_usage (fd_if);
fd_index = gnm_func_lookup_or_add_placeholder ("INDEX");
- gnm_func_ref (fd_index);
+ gnm_func_inc_usage (fd_index);
fd_isblank = gnm_func_lookup_or_add_placeholder ("ISBLANK");
- gnm_func_ref (fd_isblank);
+ gnm_func_inc_usage (fd_isblank);
if (info->exact) {
fd_exact = gnm_func_lookup_or_add_placeholder ("EXACT");
- gnm_func_ref (fd_exact);
+ gnm_func_inc_usage (fd_exact);
}
if (info->percentage) {
fd_rows = gnm_func_lookup_or_add_placeholder ("ROWS");
- gnm_func_ref (fd_rows);
+ gnm_func_inc_usage (fd_rows);
fd_columns = gnm_func_lookup_or_add_placeholder ("COLUMNS");
- gnm_func_ref (fd_columns);
+ gnm_func_inc_usage (fd_columns);
}
/* General Info */
@@ -190,16 +190,16 @@ analysis_tool_frequency_engine_run (data_analysis_output_t *dao,
gnm_expr_free (expr_count);
}
- gnm_func_unref (fd_if);
- gnm_func_unref (fd_sum);
- gnm_func_unref (fd_index);
- gnm_func_unref (fd_isblank);
+ gnm_func_dec_usage (fd_if);
+ gnm_func_dec_usage (fd_sum);
+ gnm_func_dec_usage (fd_index);
+ gnm_func_dec_usage (fd_isblank);
if (fd_rows != NULL)
- gnm_func_unref (fd_rows);
+ gnm_func_dec_usage (fd_rows);
if (fd_columns != NULL)
- gnm_func_unref (fd_columns);
+ gnm_func_dec_usage (fd_columns);
if (fd_exact != NULL)
- gnm_func_unref (fd_exact);
+ gnm_func_dec_usage (fd_exact);
/* Create Chart if requested */
if (info->chart != NO_CHART) {
diff --git a/src/tools/analysis-histogram.c b/src/tools/analysis-histogram.c
index d77c9779b..12f1b2d42 100644
--- a/src/tools/analysis-histogram.c
+++ b/src/tools/analysis-histogram.c
@@ -142,11 +142,11 @@ analysis_tool_histogram_engine_run (data_analysis_output_t *dao,
char const *format;
fd_small = gnm_func_lookup_or_add_placeholder ("SMALL");
- gnm_func_ref (fd_small);
+ gnm_func_inc_usage (fd_small);
if (info->base.labels) {
fd_index = gnm_func_lookup_or_add_placeholder ("INDEX");
- gnm_func_ref (fd_index);
+ gnm_func_inc_usage (fd_index);
}
@@ -212,12 +212,12 @@ analysis_tool_histogram_engine_run (data_analysis_output_t *dao,
GnmFunc *fd_min;
fd_min = gnm_func_lookup_or_add_placeholder ("MIN");
- gnm_func_ref (fd_min);
+ gnm_func_inc_usage (fd_min);
dao_set_cell_expr (dao, to_col, i_start,
gnm_expr_new_funcall1
(fd_min,
gnm_expr_new_constant (value_dup (val))));
- gnm_func_unref (fd_min);
+ gnm_func_dec_usage (fd_min);
}
if (info->max_given)
@@ -226,12 +226,12 @@ analysis_tool_histogram_engine_run (data_analysis_output_t *dao,
GnmFunc *fd_max;
fd_max = gnm_func_lookup_or_add_placeholder ("MAX");
- gnm_func_ref (fd_max);
+ gnm_func_inc_usage (fd_max);
dao_set_cell_expr (dao, to_col, i_start + i_limit - 1,
gnm_expr_new_funcall1
(fd_max,
gnm_expr_new_constant (value_dup (val))));
- gnm_func_unref (fd_max);
+ gnm_func_dec_usage (fd_max);
}
value_release (val);
@@ -347,9 +347,9 @@ analysis_tool_histogram_engine_run (data_analysis_output_t *dao,
if (expr_bin != NULL)
gnm_expr_free (expr_bin);
- gnm_func_unref (fd_small);
+ gnm_func_dec_usage (fd_small);
if (fd_index != NULL)
- gnm_func_unref (fd_index);
+ gnm_func_dec_usage (fd_index);
/* Create Chart if requested */
if (info->chart != NO_CHART) {
diff --git a/src/tools/analysis-kaplan-meier.c b/src/tools/analysis-kaplan-meier.c
index 1eabd5574..8d43c3469 100644
--- a/src/tools/analysis-kaplan-meier.c
+++ b/src/tools/analysis-kaplan-meier.c
@@ -76,21 +76,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");
- gnm_func_ref (fd_small);
+ gnm_func_inc_usage (fd_small);
fd_if = gnm_func_lookup_or_add_placeholder ("IF");
- gnm_func_ref (fd_if);
+ gnm_func_inc_usage (fd_if);
fd_iserror = gnm_func_lookup_or_add_placeholder ("ISERROR");
- gnm_func_ref (fd_iserror);
+ gnm_func_inc_usage (fd_iserror);
fd_sum = gnm_func_lookup_or_add_placeholder ("SUM");
- gnm_func_ref (fd_sum);
+ gnm_func_inc_usage (fd_sum);
if (info->std_err) {
fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT");
- gnm_func_ref (fd_sqrt);
+ gnm_func_inc_usage (fd_sqrt);
}
if (info->median) {
fd_min = gnm_func_lookup_or_add_placeholder ("MIN");
- gnm_func_ref (fd_min);
+ gnm_func_inc_usage (fd_min);
}
rows = info->base.range_1->v_range.cell.b.row
@@ -523,7 +523,7 @@ analysis_tool_kaplan_meier_engine_run (data_analysis_output_t *dao,
GnmExpr const *expr_death_total = gnm_expr_new_constant (value_new_int (0));
fd_chidist = gnm_func_lookup_or_add_placeholder ("CHIDIST");
- gnm_func_ref (fd_chidist);
+ gnm_func_inc_usage (fd_chidist);
dao_set_italic (dao, 1, logrank_test_y_offset, 1, logrank_test_y_offset+3);
set_cell_text_col (dao, 1, logrank_test_y_offset,
@@ -605,7 +605,7 @@ analysis_tool_kaplan_meier_engine_run (data_analysis_output_t *dao,
make_cellref (0,-1));
dao_set_cell_expr (dao, 2, logrank_test_y_offset + 3, expr_p);
- gnm_func_unref (fd_chidist);
+ gnm_func_dec_usage (fd_chidist);
}
@@ -616,14 +616,14 @@ analysis_tool_kaplan_meier_engine_run (data_analysis_output_t *dao,
if (expr_group_data != NULL)
gnm_expr_free (expr_group_data);
- gnm_func_unref (fd_small);
- gnm_func_unref (fd_if);
- gnm_func_unref (fd_iserror);
- gnm_func_unref (fd_sum);
+ gnm_func_dec_usage (fd_small);
+ gnm_func_dec_usage (fd_if);
+ gnm_func_dec_usage (fd_iserror);
+ gnm_func_dec_usage (fd_sum);
if (fd_sqrt != NULL)
- gnm_func_unref (fd_sqrt);
+ gnm_func_dec_usage (fd_sqrt);
if (fd_min != NULL)
- gnm_func_unref (fd_min);
+ gnm_func_dec_usage (fd_min);
dao_redraw_respan (dao);
diff --git a/src/tools/analysis-normality.c b/src/tools/analysis-normality.c
index b691f5bf5..12e15820e 100644
--- a/src/tools/analysis-normality.c
+++ b/src/tools/analysis-normality.c
@@ -88,9 +88,9 @@ analysis_tool_normality_engine_run (data_analysis_output_t *dao,
}
fd = gnm_func_lookup_or_add_placeholder (fdname);
- gnm_func_ref (fd);
+ gnm_func_inc_usage (fd);
fd_if = gnm_func_lookup_or_add_placeholder ("IF");
- gnm_func_ref (fd_if);
+ gnm_func_inc_usage (fd_if);
dao_set_italic (dao, 0, 0, 0, 5);
dao_set_cell (dao, 0, 0, _(testname));
@@ -172,8 +172,8 @@ analysis_tool_normality_engine_run (data_analysis_output_t *dao,
}
- gnm_func_unref (fd);
- gnm_func_unref (fd_if);
+ gnm_func_dec_usage (fd);
+ gnm_func_dec_usage (fd_if);
dao_redraw_respan (dao);
return 0;
diff --git a/src/tools/analysis-one-mean-test.c b/src/tools/analysis-one-mean-test.c
index 39c8bbb5a..b7fd17184 100644
--- a/src/tools/analysis-one-mean-test.c
+++ b/src/tools/analysis-one-mean-test.c
@@ -49,19 +49,19 @@ analysis_tool_one_mean_test_engine_run (data_analysis_output_t *dao,
GnmFunc *fd_count;
fd_count = gnm_func_lookup_or_add_placeholder ("COUNT");
- gnm_func_ref (fd_count);
+ gnm_func_inc_usage (fd_count);
fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE");
- gnm_func_ref (fd_mean);
+ gnm_func_inc_usage (fd_mean);
fd_var = gnm_func_lookup_or_add_placeholder ("VAR");
- gnm_func_ref (fd_var);
+ gnm_func_inc_usage (fd_var);
fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT");
- gnm_func_ref (fd_sqrt);
+ gnm_func_inc_usage (fd_sqrt);
fd_abs = gnm_func_lookup_or_add_placeholder ("ABS");
- gnm_func_ref (fd_abs);
+ gnm_func_inc_usage (fd_abs);
fd_tdist = gnm_func_lookup_or_add_placeholder ("TDIST");
- gnm_func_ref (fd_tdist);
+ gnm_func_inc_usage (fd_tdist);
fd_iferror = gnm_func_lookup_or_add_placeholder ("IFERROR");
- gnm_func_ref (fd_iferror);
+ gnm_func_inc_usage (fd_iferror);
dao_set_italic (dao, 0, 0, 0, 9);
set_cell_text_col (dao, 0, 0, _("/Student-t Test"
@@ -129,13 +129,13 @@ analysis_tool_one_mean_test_engine_run (data_analysis_output_t *dao,
gnm_expr_new_constant (value_new_int (2)));
dao_set_cell_expr (dao, col, 9, expr);
}
- gnm_func_unref (fd_count);
- gnm_func_unref (fd_mean);
- gnm_func_unref (fd_var);
- gnm_func_unref (fd_abs);
- gnm_func_unref (fd_sqrt);
- gnm_func_unref (fd_tdist);
- gnm_func_unref (fd_iferror);
+ gnm_func_dec_usage (fd_count);
+ gnm_func_dec_usage (fd_mean);
+ gnm_func_dec_usage (fd_var);
+ gnm_func_dec_usage (fd_abs);
+ gnm_func_dec_usage (fd_sqrt);
+ gnm_func_dec_usage (fd_tdist);
+ gnm_func_dec_usage (fd_iferror);
dao_redraw_respan (dao);
diff --git a/src/tools/analysis-principal-components.c b/src/tools/analysis-principal-components.c
index 81e76b864..b5ab82571 100644
--- a/src/tools/analysis-principal-components.c
+++ b/src/tools/analysis-principal-components.c
@@ -69,25 +69,25 @@ analysis_tool_principal_components_engine_run (data_analysis_output_t *dao,
}
fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE");
- gnm_func_ref (fd_mean);
+ gnm_func_inc_usage (fd_mean);
fd_var = gnm_func_lookup_or_add_placeholder ("VAR");
- gnm_func_ref (fd_var);
+ gnm_func_inc_usage (fd_var);
fd_eigen = gnm_func_lookup_or_add_placeholder ("EIGEN");
- gnm_func_ref (fd_eigen);
+ gnm_func_inc_usage (fd_eigen);
fd_mmult = gnm_func_lookup_or_add_placeholder ("MMULT");
- gnm_func_ref (fd_mmult);
+ gnm_func_inc_usage (fd_mmult);
fd_munit = gnm_func_lookup_or_add_placeholder ("MUNIT");
- gnm_func_ref (fd_munit);
+ gnm_func_inc_usage (fd_munit);
fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT");
- gnm_func_ref (fd_sqrt);
+ gnm_func_inc_usage (fd_sqrt);
fd_count = gnm_func_lookup_or_add_placeholder ("COUNT");
- gnm_func_ref (fd_count);
+ gnm_func_inc_usage (fd_count);
fd_sum = gnm_func_lookup_or_add_placeholder ("SUM");
- gnm_func_ref (fd_sum);
+ gnm_func_inc_usage (fd_sum);
fd_and = gnm_func_lookup_or_add_placeholder ("AND");
- gnm_func_ref (fd_and);
+ gnm_func_inc_usage (fd_and);
fd_if = gnm_func_lookup_or_add_placeholder ("IF");
- gnm_func_ref (fd_if);
+ gnm_func_inc_usage (fd_if);
dao_set_bold (dao, 0, 0, 0, 0);
dao_set_italic (dao, 0, 0, 0, 11 + 3 * l);
@@ -186,16 +186,16 @@ analysis_tool_principal_components_engine_run (data_analysis_output_t *dao,
expr_munit));
dao_set_array_expr (dao, 1, 10 + 2 * l, l, l, expr);
- gnm_func_unref (fd_mean);
- gnm_func_unref (fd_var);
- gnm_func_unref (fd_eigen);
- gnm_func_unref (fd_mmult);
- gnm_func_unref (fd_munit);
- gnm_func_unref (fd_sqrt);
- gnm_func_unref (fd_count);
- gnm_func_unref (fd_sum);
- gnm_func_unref (fd_and);
- gnm_func_unref (fd_if);
+ gnm_func_dec_usage (fd_mean);
+ gnm_func_dec_usage (fd_var);
+ gnm_func_dec_usage (fd_eigen);
+ gnm_func_dec_usage (fd_mmult);
+ gnm_func_dec_usage (fd_munit);
+ gnm_func_dec_usage (fd_sqrt);
+ gnm_func_dec_usage (fd_count);
+ gnm_func_dec_usage (fd_sum);
+ gnm_func_dec_usage (fd_and);
+ gnm_func_dec_usage (fd_if);
dao_redraw_respan (dao);
return 0;
diff --git a/src/tools/analysis-sign-test.c b/src/tools/analysis-sign-test.c
index e02be4691..604ef5831 100644
--- a/src/tools/analysis-sign-test.c
+++ b/src/tools/analysis-sign-test.c
@@ -54,19 +54,19 @@ analysis_tool_sign_test_engine_run (data_analysis_output_t *dao,
GnmFunc *fd_iferror;
fd_median = gnm_func_lookup_or_add_placeholder ("MEDIAN");
- gnm_func_ref (fd_median);
+ gnm_func_inc_usage (fd_median);
fd_if = gnm_func_lookup_or_add_placeholder ("IF");
- gnm_func_ref (fd_if);
+ gnm_func_inc_usage (fd_if);
fd_sum = gnm_func_lookup_or_add_placeholder ("SUM");
- gnm_func_ref (fd_sum);
+ gnm_func_inc_usage (fd_sum);
fd_min = gnm_func_lookup_or_add_placeholder ("MIN");
- gnm_func_ref (fd_min);
+ gnm_func_inc_usage (fd_min);
fd_binomdist = gnm_func_lookup_or_add_placeholder ("BINOMDIST");
- gnm_func_ref (fd_binomdist);
+ gnm_func_inc_usage (fd_binomdist);
fd_isnumber = gnm_func_lookup_or_add_placeholder ("ISNUMBER");
- gnm_func_ref (fd_isnumber);
+ gnm_func_inc_usage (fd_isnumber);
fd_iferror = gnm_func_lookup_or_add_placeholder ("IFERROR");
- gnm_func_ref (fd_iferror);
+ gnm_func_inc_usage (fd_iferror);
dao_set_italic (dao, 0, 0, 0, 9);
set_cell_text_col (dao, 0, 0, _("/Sign Test"
@@ -157,13 +157,13 @@ analysis_tool_sign_test_engine_run (data_analysis_output_t *dao,
dao_set_cell_array_expr (dao, col + 1, 7, expr);
}
- gnm_func_unref (fd_median);
- gnm_func_unref (fd_if);
- gnm_func_unref (fd_min);
- gnm_func_unref (fd_sum);
- gnm_func_unref (fd_binomdist);
- gnm_func_unref (fd_isnumber);
- gnm_func_unref (fd_iferror);
+ gnm_func_dec_usage (fd_median);
+ gnm_func_dec_usage (fd_if);
+ gnm_func_dec_usage (fd_min);
+ gnm_func_dec_usage (fd_sum);
+ gnm_func_dec_usage (fd_binomdist);
+ gnm_func_dec_usage (fd_isnumber);
+ gnm_func_dec_usage (fd_iferror);
dao_redraw_respan (dao);
@@ -196,19 +196,19 @@ analysis_tool_sign_test_two_engine_run (data_analysis_output_t *dao,
GnmFunc *fd_iferror;
fd_median = gnm_func_lookup_or_add_placeholder ("MEDIAN");
- gnm_func_ref (fd_median);
+ gnm_func_inc_usage (fd_median);
fd_if = gnm_func_lookup_or_add_placeholder ("IF");
- gnm_func_ref (fd_if);
+ gnm_func_inc_usage (fd_if);
fd_sum = gnm_func_lookup_or_add_placeholder ("SUM");
- gnm_func_ref (fd_sum);
+ gnm_func_inc_usage (fd_sum);
fd_min = gnm_func_lookup_or_add_placeholder ("MIN");
- gnm_func_ref (fd_min);
+ gnm_func_inc_usage (fd_min);
fd_binomdist = gnm_func_lookup_or_add_placeholder ("BINOMDIST");
- gnm_func_ref (fd_binomdist);
+ gnm_func_inc_usage (fd_binomdist);
fd_isnumber = gnm_func_lookup_or_add_placeholder ("ISNUMBER");
- gnm_func_ref (fd_isnumber);
+ gnm_func_inc_usage (fd_isnumber);
fd_iferror = gnm_func_lookup_or_add_placeholder ("IFERROR");
- gnm_func_ref (fd_iferror);
+ gnm_func_inc_usage (fd_iferror);
dao_set_italic (dao, 0, 0, 0, 9);
set_cell_text_col (dao, 0, 0, _("/Sign Test"
@@ -323,13 +323,13 @@ analysis_tool_sign_test_two_engine_run (data_analysis_output_t *dao,
GNM_EXPR_OP_MULT, make_cellref (0,-1));
dao_set_cell_array_expr (dao, 1, 7, expr);
- gnm_func_unref (fd_median);
- gnm_func_unref (fd_if);
- gnm_func_unref (fd_min);
- gnm_func_unref (fd_sum);
- gnm_func_unref (fd_binomdist);
- gnm_func_unref (fd_isnumber);
- gnm_func_unref (fd_iferror);
+ gnm_func_dec_usage (fd_median);
+ gnm_func_dec_usage (fd_if);
+ gnm_func_dec_usage (fd_min);
+ gnm_func_dec_usage (fd_sum);
+ gnm_func_dec_usage (fd_binomdist);
+ gnm_func_dec_usage (fd_isnumber);
+ gnm_func_dec_usage (fd_iferror);
value_release (val_1);
value_release (val_2);
diff --git a/src/tools/analysis-signed-rank-test.c b/src/tools/analysis-signed-rank-test.c
index dd41acd31..48ed5c3e1 100644
--- a/src/tools/analysis-signed-rank-test.c
+++ b/src/tools/analysis-signed-rank-test.c
@@ -238,17 +238,17 @@ analysis_tool_signed_rank_test_engine_run (data_analysis_output_t *dao,
dao_set_cell_expr (dao, col + 1, 9, expr);
}
- gnm_func_unref (fd_median);
- gnm_func_unref (fd_if);
- gnm_func_unref (fd_min);
- gnm_func_unref (fd_sum);
- gnm_func_unref (fd_normdist);
- gnm_func_unref (fd_isnumber);
- gnm_func_unref (fd_iferror);
- gnm_func_unref (fd_rank);
- gnm_func_unref (fd_abs);
- gnm_func_unref (fd_sqrt);
- gnm_func_unref (fd_max);
+ gnm_func_dec_usage (fd_median);
+ gnm_func_dec_usage (fd_if);
+ gnm_func_dec_usage (fd_min);
+ gnm_func_dec_usage (fd_sum);
+ gnm_func_dec_usage (fd_normdist);
+ gnm_func_dec_usage (fd_isnumber);
+ gnm_func_dec_usage (fd_iferror);
+ gnm_func_dec_usage (fd_rank);
+ gnm_func_dec_usage (fd_abs);
+ gnm_func_dec_usage (fd_sqrt);
+ gnm_func_dec_usage (fd_max);
dao_redraw_respan (dao);
@@ -505,17 +505,17 @@ analysis_tool_signed_rank_test_two_engine_run (data_analysis_output_t *dao,
GNM_EXPR_OP_MULT, make_cellref (0,-1));
dao_set_cell_array_expr (dao, 1, 10, expr);
- gnm_func_unref (fd_median);
- gnm_func_unref (fd_if);
- gnm_func_unref (fd_min);
- gnm_func_unref (fd_sum);
- gnm_func_unref (fd_normdist);
- gnm_func_unref (fd_isnumber);
- gnm_func_unref (fd_iferror);
- gnm_func_unref (fd_rank);
- gnm_func_unref (fd_abs);
- gnm_func_unref (fd_sqrt);
- gnm_func_unref (fd_max);
+ gnm_func_dec_usage (fd_median);
+ gnm_func_dec_usage (fd_if);
+ gnm_func_dec_usage (fd_min);
+ gnm_func_dec_usage (fd_sum);
+ gnm_func_dec_usage (fd_normdist);
+ gnm_func_dec_usage (fd_isnumber);
+ gnm_func_dec_usage (fd_iferror);
+ gnm_func_dec_usage (fd_rank);
+ gnm_func_dec_usage (fd_abs);
+ gnm_func_dec_usage (fd_sqrt);
+ gnm_func_dec_usage (fd_max);
value_release (val_1);
value_release (val_2);
diff --git a/src/tools/analysis-tools.c b/src/tools/analysis-tools.c
index d09887b46..59ee76897 100644
--- a/src/tools/analysis-tools.c
+++ b/src/tools/analysis-tools.c
@@ -223,9 +223,9 @@ analysis_tools_write_a_label (GnmValue *val, data_analysis_output_t *dao,
GnmFunc *fd_cell;
fd_concatenate = gnm_func_lookup_or_add_placeholder ("CONCATENATE");
- gnm_func_ref (fd_concatenate);
+ gnm_func_inc_usage (fd_concatenate);
fd_cell = gnm_func_lookup_or_add_placeholder ("CELL");
- gnm_func_ref (fd_cell);
+ gnm_func_inc_usage (fd_cell);
dao_set_cell_expr (dao, x, y, gnm_expr_new_funcall3
(fd_concatenate, gnm_expr_new_constant (value_new_string (label)),
@@ -234,8 +234,8 @@ analysis_tools_write_a_label (GnmValue *val, data_analysis_output_t *dao,
gnm_expr_new_constant (value_new_string (str)),
gnm_expr_new_constant (value_dup (val)))));
- gnm_func_unref (fd_concatenate);
- gnm_func_unref (fd_cell);
+ gnm_func_dec_usage (fd_concatenate);
+ gnm_func_dec_usage (fd_cell);
}
}
@@ -566,6 +566,14 @@ int analysis_tool_calc_length (analysis_tools_data_generic_t *info)
return result;
}
+/**
+ * analysis_tool_get_function:
+ * @name: name of function
+ * @dao:
+ *
+ * Returns: (transfer full): the function named @name or a placeholder.
+ * The usage count of the function is incremented.
+ */
GnmFunc *
analysis_tool_get_function (char const *name,
data_analysis_output_t *dao)
@@ -573,7 +581,7 @@ analysis_tool_get_function (char const *name,
GnmFunc *fd;
fd = gnm_func_lookup_or_add_placeholder (name);
- gnm_func_ref (fd);
+ gnm_func_inc_usage (fd);
return fd;
}
@@ -603,7 +611,7 @@ analysis_tool_table (data_analysis_output_t *dao,
dao_set_cell_printf (dao, 0, 0, "%s", title);
fd = gnm_func_lookup_or_add_placeholder (functionname);
- gnm_func_ref (fd);
+ gnm_func_inc_usage (fd);
for (col = 1, inputdata = info->input; inputdata != NULL;
inputdata = inputdata->next, col++) {
@@ -650,7 +658,7 @@ analysis_tool_table (data_analysis_output_t *dao,
}
g_slist_free_full (inputexpr, (GDestroyNotify)gnm_expr_free);
- if (fd) gnm_func_unref (fd);
+ if (fd) gnm_func_dec_usage (fd);
dao_redraw_respan (dao);
return FALSE;
@@ -795,29 +803,29 @@ summary_statistics (data_analysis_output_t *dao,
GnmFunc *fd_sqrt;
fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE");
- gnm_func_ref (fd_mean);
+ gnm_func_inc_usage (fd_mean);
fd_median = gnm_func_lookup_or_add_placeholder (info->use_ssmedian ? "SSMEDIAN" : "MEDIAN");
- gnm_func_ref (fd_median);
+ gnm_func_inc_usage (fd_median);
fd_mode = gnm_func_lookup_or_add_placeholder ("MODE");
- gnm_func_ref (fd_mode);
+ gnm_func_inc_usage (fd_mode);
fd_stdev = gnm_func_lookup_or_add_placeholder ("STDEV");
- gnm_func_ref (fd_stdev);
+ gnm_func_inc_usage (fd_stdev);
fd_var = gnm_func_lookup_or_add_placeholder ("VAR");
- gnm_func_ref (fd_var);
+ gnm_func_inc_usage (fd_var);
fd_kurt = gnm_func_lookup_or_add_placeholder ("KURT");
- gnm_func_ref (fd_kurt);
+ gnm_func_inc_usage (fd_kurt);
fd_skew = gnm_func_lookup_or_add_placeholder ("SKEW");
- gnm_func_ref (fd_skew);
+ gnm_func_inc_usage (fd_skew);
fd_min = gnm_func_lookup_or_add_placeholder ("MIN");
- gnm_func_ref (fd_min);
+ gnm_func_inc_usage (fd_min);
fd_max = gnm_func_lookup_or_add_placeholder ("MAX");
- gnm_func_ref (fd_max);
+ gnm_func_inc_usage (fd_max);
fd_sum = gnm_func_lookup_or_add_placeholder ("SUM");
- gnm_func_ref (fd_sum);
+ gnm_func_inc_usage (fd_sum);
fd_count = gnm_func_lookup_or_add_placeholder ("COUNT");
- gnm_func_ref (fd_count);
+ gnm_func_inc_usage (fd_count);
fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT");
- gnm_func_ref (fd_sqrt);
+ gnm_func_inc_usage (fd_sqrt);
dao_set_cell (dao, 0, 0, NULL);
@@ -935,18 +943,18 @@ summary_statistics (data_analysis_output_t *dao,
dao_set_cell_expr (dao, col + 1, 2, expr);
}
- gnm_func_unref (fd_mean);
- gnm_func_unref (fd_median);
- gnm_func_unref (fd_mode);
- gnm_func_unref (fd_stdev);
- gnm_func_unref (fd_var);
- gnm_func_unref (fd_kurt);
- gnm_func_unref (fd_skew);
- gnm_func_unref (fd_min);
- gnm_func_unref (fd_max);
- gnm_func_unref (fd_sum);
- gnm_func_unref (fd_count);
- gnm_func_unref (fd_sqrt);
+ gnm_func_dec_usage (fd_mean);
+ gnm_func_dec_usage (fd_median);
+ gnm_func_dec_usage (fd_mode);
+ gnm_func_dec_usage (fd_stdev);
+ gnm_func_dec_usage (fd_var);
+ gnm_func_dec_usage (fd_kurt);
+ gnm_func_dec_usage (fd_skew);
+ gnm_func_dec_usage (fd_min);
+ gnm_func_dec_usage (fd_max);
+ gnm_func_dec_usage (fd_sum);
+ gnm_func_dec_usage (fd_count);
+ gnm_func_dec_usage (fd_sqrt);
}
static void
@@ -974,15 +982,15 @@ confidence_level (data_analysis_output_t *dao,
dao_set_cell (dao, 0, 0, NULL);
fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE");
- gnm_func_ref (fd_mean);
+ gnm_func_inc_usage (fd_mean);
fd_var = gnm_func_lookup_or_add_placeholder ("VAR");
- gnm_func_ref (fd_var);
+ gnm_func_inc_usage (fd_var);
fd_count = gnm_func_lookup_or_add_placeholder ("COUNT");
- gnm_func_ref (fd_count);
+ gnm_func_inc_usage (fd_count);
fd_tinv = gnm_func_lookup_or_add_placeholder ("TINV");
- gnm_func_ref (fd_tinv);
+ gnm_func_inc_usage (fd_tinv);
fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT");
- gnm_func_ref (fd_sqrt);
+ gnm_func_inc_usage (fd_sqrt);
for (col = 0; data != NULL; data = data->next, col++) {
@@ -1034,11 +1042,11 @@ confidence_level (data_analysis_output_t *dao,
expr));
}
- gnm_func_unref (fd_mean);
- gnm_func_unref (fd_var);
- gnm_func_unref (fd_count);
- gnm_func_unref (fd_tinv);
- gnm_func_unref (fd_sqrt);
+ gnm_func_dec_usage (fd_mean);
+ gnm_func_dec_usage (fd_var);
+ gnm_func_dec_usage (fd_count);
+ gnm_func_dec_usage (fd_tinv);
+ gnm_func_dec_usage (fd_sqrt);
}
static void
@@ -1049,7 +1057,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);
- gnm_func_ref (fd);
+ gnm_func_inc_usage (fd);
dao_set_italic (dao, 0, 1, 0, 1);
dao_set_cell_printf (dao, 0, 1, label, k);
@@ -1072,7 +1080,7 @@ kth_smallest_largest (data_analysis_output_t *dao,
dao_set_cell_expr (dao, col + 1, 1, expr);
}
- gnm_func_unref (fd);
+ gnm_func_dec_usage (fd);
}
/* Descriptive Statistics
@@ -1172,11 +1180,11 @@ analysis_tool_sampling_engine_run (data_analysis_output_t *dao,
if (info->base.labels || info->periodic) {
fd_index = gnm_func_lookup_or_add_placeholder ("INDEX");
- gnm_func_ref (fd_index);
+ gnm_func_inc_usage (fd_index);
}
if (!info->periodic) {
fd_randdiscrete = gnm_func_lookup_or_add_placeholder ("RANDDISCRETE");
- gnm_func_ref (fd_randdiscrete);
+ gnm_func_inc_usage (fd_randdiscrete);
}
for (l = info->base.input, source = 1; l; l = l->next, source++) {
@@ -1299,9 +1307,9 @@ analysis_tool_sampling_engine_run (data_analysis_output_t *dao,
}
if (fd_index != NULL)
- gnm_func_unref (fd_index);
+ gnm_func_dec_usage (fd_index);
if (fd_randdiscrete != NULL)
- gnm_func_unref (fd_randdiscrete);
+ gnm_func_dec_usage (fd_randdiscrete);
dao_redraw_respan (dao);
@@ -1410,17 +1418,17 @@ analysis_tool_ztest_engine_run (data_analysis_output_t *dao,
"/z Critical two-tail"));
fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE");
- gnm_func_ref (fd_mean);
+ gnm_func_inc_usage (fd_mean);
fd_normsdist = gnm_func_lookup_or_add_placeholder ("NORMSDIST");
- gnm_func_ref (fd_normsdist);
+ gnm_func_inc_usage (fd_normsdist);
fd_abs = gnm_func_lookup_or_add_placeholder ("ABS");
- gnm_func_ref (fd_abs);
+ gnm_func_inc_usage (fd_abs);
fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT");
- gnm_func_ref (fd_sqrt);
+ gnm_func_inc_usage (fd_sqrt);
fd_count = gnm_func_lookup_or_add_placeholder ("COUNT");
- gnm_func_ref (fd_count);
+ gnm_func_inc_usage (fd_count);
fd_normsinv = gnm_func_lookup_or_add_placeholder ("NORMSINV");
- gnm_func_ref (fd_normsinv);
+ gnm_func_inc_usage (fd_normsinv);
val_1 = value_dup (info->base.range_1);
expr_1 = gnm_expr_new_constant (value_dup (val_1));
@@ -1561,12 +1569,12 @@ analysis_tool_ztest_engine_run (data_analysis_output_t *dao,
GNM_EXPR_OP_DIV,
gnm_expr_new_constant (value_new_int (2))))));
- gnm_func_unref (fd_mean);
- gnm_func_unref (fd_normsdist);
- gnm_func_unref (fd_abs);
- gnm_func_unref (fd_sqrt);
- gnm_func_unref (fd_count);
- gnm_func_unref (fd_normsinv);
+ gnm_func_dec_usage (fd_mean);
+ gnm_func_dec_usage (fd_normsdist);
+ gnm_func_dec_usage (fd_abs);
+ gnm_func_dec_usage (fd_sqrt);
+ gnm_func_dec_usage (fd_count);
+ gnm_func_dec_usage (fd_normsinv);
/* And finish up */
@@ -1664,27 +1672,27 @@ analysis_tool_ttest_paired_engine_run (data_analysis_output_t *dao,
"/t Critical two-tail"));
fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE");
- gnm_func_ref (fd_mean);
+ gnm_func_inc_usage (fd_mean);
fd_var = gnm_func_lookup_or_add_placeholder ("VAR");
- gnm_func_ref (fd_var);
+ gnm_func_inc_usage (fd_var);
fd_count = gnm_func_lookup_or_add_placeholder ("COUNT");
- gnm_func_ref (fd_count);
+ gnm_func_inc_usage (fd_count);
fd_correl = gnm_func_lookup_or_add_placeholder ("CORREL");
- gnm_func_ref (fd_correl);
+ gnm_func_inc_usage (fd_correl);
fd_tinv = gnm_func_lookup_or_add_placeholder ("TINV");
- gnm_func_ref (fd_tinv);
+ gnm_func_inc_usage (fd_tinv);
fd_tdist = gnm_func_lookup_or_add_placeholder ("TDIST");
- gnm_func_ref (fd_tdist);
+ gnm_func_inc_usage (fd_tdist);
fd_abs = gnm_func_lookup_or_add_placeholder ("ABS");
- gnm_func_ref (fd_abs);
+ gnm_func_inc_usage (fd_abs);
fd_isodd = gnm_func_lookup_or_add_placeholder ("ISODD");
- gnm_func_ref (fd_isodd);
+ gnm_func_inc_usage (fd_isodd);
fd_isnumber = gnm_func_lookup_or_add_placeholder ("ISNUMBER");
- gnm_func_ref (fd_isnumber);
+ gnm_func_inc_usage (fd_isnumber);
fd_if = gnm_func_lookup_or_add_placeholder ("IF");
- gnm_func_ref (fd_if);
+ gnm_func_inc_usage (fd_if);
fd_sum = gnm_func_lookup_or_add_placeholder ("SUM");
- gnm_func_ref (fd_sum);
+ gnm_func_inc_usage (fd_sum);
val_1 = value_dup (info->base.range_1);
val_2 = value_dup (info->base.range_2);
@@ -1853,17 +1861,17 @@ analysis_tool_ttest_paired_engine_run (data_analysis_output_t *dao,
value_release (val_1);
value_release (val_2);
- gnm_func_unref (fd_count);
- gnm_func_unref (fd_correl);
- gnm_func_unref (fd_mean);
- gnm_func_unref (fd_var);
- gnm_func_unref (fd_tinv);
- gnm_func_unref (fd_tdist);
- gnm_func_unref (fd_abs);
- gnm_func_unref (fd_isodd);
- gnm_func_unref (fd_isnumber);
- gnm_func_unref (fd_if);
- gnm_func_unref (fd_sum);
+ gnm_func_dec_usage (fd_count);
+ gnm_func_dec_usage (fd_correl);
+ gnm_func_dec_usage (fd_mean);
+ gnm_func_dec_usage (fd_var);
+ gnm_func_dec_usage (fd_tinv);
+ gnm_func_dec_usage (fd_tdist);
+ gnm_func_dec_usage (fd_abs);
+ gnm_func_dec_usage (fd_isodd);
+ gnm_func_dec_usage (fd_isnumber);
+ gnm_func_dec_usage (fd_if);
+ gnm_func_dec_usage (fd_sum);
dao_redraw_respan (dao);
@@ -1946,17 +1954,17 @@ analysis_tool_ttest_eqvar_engine_run (data_analysis_output_t *dao,
val_2 = value_dup (info->base.range_2);
fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE");
- gnm_func_ref (fd_mean);
+ gnm_func_inc_usage (fd_mean);
fd_count = gnm_func_lookup_or_add_placeholder ("COUNT");
- gnm_func_ref (fd_count);
+ gnm_func_inc_usage (fd_count);
fd_var = gnm_func_lookup_or_add_placeholder ("VAR");
- gnm_func_ref (fd_var);
+ gnm_func_inc_usage (fd_var);
fd_tdist = gnm_func_lookup_or_add_placeholder ("TDIST");
- gnm_func_ref (fd_tdist);
+ gnm_func_inc_usage (fd_tdist);
fd_abs = gnm_func_lookup_or_add_placeholder ("ABS");
- gnm_func_ref (fd_abs);
+ gnm_func_inc_usage (fd_abs);
fd_tinv = gnm_func_lookup_or_add_placeholder ("TINV");
- gnm_func_ref (fd_tinv);
+ gnm_func_inc_usage (fd_tinv);
/* Labels */
analysis_tools_write_label_ftest (val_1, dao, 1, 0,
@@ -2159,12 +2167,12 @@ analysis_tool_ttest_eqvar_engine_run (data_analysis_output_t *dao,
value_release (val_1);
value_release (val_2);
- gnm_func_unref (fd_mean);
- gnm_func_unref (fd_var);
- gnm_func_unref (fd_count);
- gnm_func_unref (fd_tdist);
- gnm_func_unref (fd_abs);
- gnm_func_unref (fd_tinv);
+ gnm_func_dec_usage (fd_mean);
+ gnm_func_dec_usage (fd_var);
+ gnm_func_dec_usage (fd_count);
+ gnm_func_dec_usage (fd_tdist);
+ gnm_func_dec_usage (fd_abs);
+ gnm_func_dec_usage (fd_tinv);
dao_redraw_respan (dao);
@@ -2242,17 +2250,17 @@ analysis_tool_ttest_neqvar_engine_run (data_analysis_output_t *dao,
val_2 = value_dup (info->base.range_2);
fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE");
- gnm_func_ref (fd_mean);
+ gnm_func_inc_usage (fd_mean);
fd_var = gnm_func_lookup_or_add_placeholder ("VAR");
- gnm_func_ref (fd_var);
+ gnm_func_inc_usage (fd_var);
fd_count = gnm_func_lookup_or_add_placeholder ("COUNT");
- gnm_func_ref (fd_count);
+ gnm_func_inc_usage (fd_count);
fd_tdist = gnm_func_lookup_or_add_placeholder ("TDIST");
- gnm_func_ref (fd_tdist);
+ gnm_func_inc_usage (fd_tdist);
fd_abs = gnm_func_lookup_or_add_placeholder ("ABS");
- gnm_func_ref (fd_abs);
+ gnm_func_inc_usage (fd_abs);
fd_tinv = gnm_func_lookup_or_add_placeholder ("TINV");
- gnm_func_ref (fd_tinv);
+ gnm_func_inc_usage (fd_tinv);
/* Labels */
analysis_tools_write_label_ftest (val_1, dao, 1, 0,
@@ -2450,12 +2458,12 @@ analysis_tool_ttest_neqvar_engine_run (data_analysis_output_t *dao,
/* And finish up */
- gnm_func_unref (fd_mean);
- gnm_func_unref (fd_var);
- gnm_func_unref (fd_count);
- gnm_func_unref (fd_tdist);
- gnm_func_unref (fd_abs);
- gnm_func_unref (fd_tinv);
+ gnm_func_dec_usage (fd_mean);
+ gnm_func_dec_usage (fd_var);
+ gnm_func_dec_usage (fd_count);
+ gnm_func_dec_usage (fd_tdist);
+ gnm_func_dec_usage (fd_abs);
+ gnm_func_dec_usage (fd_tinv);
value_release (val_1);
value_release (val_2);
@@ -2516,7 +2524,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
GnmFunc *fd_finv;
fd_finv = gnm_func_lookup_or_add_placeholder ("FINV");
- gnm_func_ref (fd_finv);
+ gnm_func_inc_usage (fd_finv);
dao_set_italic (dao, 0, 0, 0, 11);
dao_set_cell (dao, 0, 0, _("F-Test"));
@@ -2540,7 +2548,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
/* Mean */
{
GnmFunc *fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE");
- gnm_func_ref (fd_mean);
+ gnm_func_inc_usage (fd_mean);
dao_set_cell_expr
(dao, 1, 1,
@@ -2554,13 +2562,13 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
(fd_mean,
gnm_expr_new_constant (value_dup (val_2))));
- gnm_func_unref (fd_mean);
+ gnm_func_dec_usage (fd_mean);
}
/* Variance */
{
GnmFunc *fd_var = gnm_func_lookup_or_add_placeholder ("VAR");
- gnm_func_ref (fd_var);
+ gnm_func_inc_usage (fd_var);
dao_set_cell_expr
(dao, 1, 2,
@@ -2573,13 +2581,13 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
gnm_expr_new_constant (value_dup (val_2)));
dao_set_cell_expr (dao, 2, 2, gnm_expr_copy (expr_var_denum));
- gnm_func_unref (fd_var);
+ gnm_func_dec_usage (fd_var);
}
/* Count */
{
GnmFunc *fd_count = gnm_func_lookup_or_add_placeholder ("COUNT");
- gnm_func_ref (fd_count);
+ gnm_func_inc_usage (fd_count);
dao_set_cell_expr
(dao, 1, 3,
@@ -2592,7 +2600,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
gnm_expr_new_constant (value_dup (val_2)));
dao_set_cell_expr (dao, 2, 3, gnm_expr_copy (expr_count_denum));
- gnm_func_unref (fd_count);
+ gnm_func_dec_usage (fd_count);
}
/* df */
@@ -2625,7 +2633,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
GnmFunc *fd_fdist = gnm_func_lookup_or_add_placeholder ("FDIST");
const GnmExpr *arg3;
- gnm_func_ref (fd_fdist);
+ gnm_func_inc_usage (fd_fdist);
if (dao_cell_is_visible (dao, 2, 2)) {
arg3 = make_cellref (1, -2);
@@ -2646,7 +2654,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
make_cellref (0, -2),
arg3));
- gnm_func_unref (fd_fdist);
+ gnm_func_dec_usage (fd_fdist);
}
/* F critical right-tail */
@@ -2699,7 +2707,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
{
GnmFunc *fd_min = gnm_func_lookup_or_add_placeholder ("MIN");
- gnm_func_ref (fd_min);
+ gnm_func_inc_usage (fd_min);
dao_set_cell_expr
(dao, 1, 10,
@@ -2710,7 +2718,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
(fd_min,
make_cellref (0, -4),
make_cellref (0, -2))));
- gnm_func_unref (fd_min);
+ gnm_func_dec_usage (fd_min);
}
/* F critical two-tail (left) */
@@ -2746,7 +2754,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
value_release (val_1);
value_release (val_2);
- gnm_func_unref (fd_finv);
+ gnm_func_dec_usage (fd_finv);
dao_redraw_respan (dao);
return FALSE;
@@ -3415,25 +3423,25 @@ analysis_tool_regression_engine_run (data_analysis_output_t *dao,
value_release (val_2);
}
- gnm_func_unref (fd_linest);
- gnm_func_unref (fd_index);
- gnm_func_unref (fd_fdist);
- gnm_func_unref (fd_sum);
- gnm_func_unref (fd_sqrt);
- gnm_func_unref (fd_tdist);
- gnm_func_unref (fd_abs);
- gnm_func_unref (fd_tinv);
- gnm_func_unref (fd_transpose);
+ gnm_func_dec_usage (fd_linest);
+ gnm_func_dec_usage (fd_index);
+ gnm_func_dec_usage (fd_fdist);
+ gnm_func_dec_usage (fd_sum);
+ gnm_func_dec_usage (fd_sqrt);
+ gnm_func_dec_usage (fd_tdist);
+ gnm_func_dec_usage (fd_abs);
+ gnm_func_dec_usage (fd_tinv);
+ gnm_func_dec_usage (fd_transpose);
if (fd_concatenate != NULL)
- gnm_func_unref (fd_concatenate);
+ gnm_func_dec_usage (fd_concatenate);
if (fd_cell != NULL)
- gnm_func_unref (fd_cell);
+ gnm_func_dec_usage (fd_cell);
if (fd_offset != NULL)
- gnm_func_unref (fd_offset);
+ gnm_func_dec_usage (fd_offset);
if (fd_sumproduct != NULL)
- gnm_func_unref (fd_sumproduct);
+ gnm_func_dec_usage (fd_sumproduct);
if (fd_leverage != NULL)
- gnm_func_unref (fd_leverage);
+ gnm_func_dec_usage (fd_leverage);
dao_redraw_respan (dao);
@@ -3541,11 +3549,11 @@ analysis_tool_regression_simple_engine_run (data_analysis_output_t *dao,
gnm_expr_free (expr_observ);
gnm_expr_free (expr_val_dep);
- gnm_func_unref (fd_fdist);
- gnm_func_unref (fd_linest);
- gnm_func_unref (fd_index);
- gnm_func_unref (fd_rows);
- gnm_func_unref (fd_columns);
+ gnm_func_dec_usage (fd_fdist);
+ gnm_func_dec_usage (fd_linest);
+ gnm_func_dec_usage (fd_index);
+ gnm_func_dec_usage (fd_rows);
+ gnm_func_dec_usage (fd_columns);
dao_redraw_respan (dao);
@@ -3676,22 +3684,22 @@ analysis_tool_moving_average_engine_run (data_analysis_output_t *dao,
if (info->base.labels || info->ma_type == moving_average_type_wma
|| info->ma_type== moving_average_type_spencer_ma) {
fd_index = gnm_func_lookup_or_add_placeholder ("INDEX");
- gnm_func_ref (fd_index);
+ gnm_func_inc_usage (fd_index);
}
if (info->std_error_flag) {
fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT");
- gnm_func_ref (fd_sqrt);
+ gnm_func_inc_usage (fd_sqrt);
fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2");
- gnm_func_ref (fd_sumxmy2);
+ gnm_func_inc_usage (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");
- gnm_func_ref (fd_sum);
+ gnm_func_inc_usage (fd_sum);
}
fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE");
- gnm_func_ref (fd_average);
+ gnm_func_inc_usage (fd_average);
fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET");
- gnm_func_ref (fd_offset);
+ gnm_func_inc_usage (fd_offset);
if (info->show_graph) {
GogGraph *graph;
@@ -3954,15 +3962,15 @@ analysis_tool_moving_average_engine_run (data_analysis_output_t *dao,
dao_set_sheet_object (dao, 0, 1, so);
if (fd_index != NULL)
- gnm_func_unref (fd_index);
+ gnm_func_dec_usage (fd_index);
if (fd_sqrt != NULL)
- gnm_func_unref (fd_sqrt);
+ gnm_func_dec_usage (fd_sqrt);
if (fd_sumxmy2 != NULL)
- gnm_func_unref (fd_sumxmy2);
+ gnm_func_dec_usage (fd_sumxmy2);
if (fd_sum != NULL)
- gnm_func_unref (fd_sum);
- gnm_func_unref (fd_average);
- gnm_func_unref (fd_offset);
+ gnm_func_dec_usage (fd_sum);
+ gnm_func_dec_usage (fd_average);
+ gnm_func_dec_usage (fd_offset);
dao_redraw_respan (dao);
@@ -4024,15 +4032,15 @@ analysis_tool_ranking_engine_run (data_analysis_output_t *dao,
GnmFunc *fd_percentrank;
fd_large = gnm_func_lookup_or_add_placeholder ("LARGE");
- gnm_func_ref (fd_large);
+ gnm_func_inc_usage (fd_large);
fd_row = gnm_func_lookup_or_add_placeholder ("ROW");
- gnm_func_ref (fd_row);
+ gnm_func_inc_usage (fd_row);
fd_rank = gnm_func_lookup_or_add_placeholder ("RANK");
- gnm_func_ref (fd_rank);
+ gnm_func_inc_usage (fd_rank);
fd_match = gnm_func_lookup_or_add_placeholder ("MATCH");
- gnm_func_ref (fd_match);
+ gnm_func_inc_usage (fd_match);
fd_percentrank = gnm_func_lookup_or_add_placeholder ("PERCENTRANK");
- gnm_func_ref (fd_percentrank);
+ gnm_func_inc_usage (fd_percentrank);
dao_set_merge (dao, 0, 0, 1, 0);
dao_set_italic (dao, 0, 0, 0, 0);
@@ -4082,7 +4090,7 @@ analysis_tool_ranking_engine_run (data_analysis_output_t *dao,
GnmExpr const *expr_rows;
GnmFunc *fd_count;
fd_count = gnm_func_lookup_or_add_placeholder ("COUNT");
- gnm_func_ref (fd_count);
+ gnm_func_inc_usage (fd_count);
expr_rows = gnm_expr_new_funcall1
(fd_count, gnm_expr_new_constant (value_dup (val_org)));
@@ -4102,7 +4110,7 @@ analysis_tool_ranking_engine_run (data_analysis_output_t *dao,
GNM_EXPR_OP_DIV,
gnm_expr_new_constant (value_new_int (2)));
- gnm_func_unref (fd_count);
+ gnm_func_dec_usage (fd_count);
}
expr_percentile = gnm_expr_new_funcall3 (fd_percentrank,
gnm_expr_new_constant (value_dup (val_org)),
@@ -4122,11 +4130,11 @@ analysis_tool_ranking_engine_run (data_analysis_output_t *dao,
gnm_expr_free (expr_percentile);
}
- gnm_func_unref (fd_large);
- gnm_func_unref (fd_row);
- gnm_func_unref (fd_rank);
- gnm_func_unref (fd_match);
- gnm_func_unref (fd_percentrank);
+ gnm_func_dec_usage (fd_large);
+ gnm_func_dec_usage (fd_row);
+ gnm_func_dec_usage (fd_rank);
+ gnm_func_dec_usage (fd_match);
+ gnm_func_dec_usage (fd_percentrank);
dao_redraw_respan (dao);
@@ -4199,15 +4207,15 @@ analysis_tool_anova_single_engine_run (data_analysis_output_t *dao, gpointer spe
"/Variance"));
fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE");
- gnm_func_ref (fd_mean);
+ gnm_func_inc_usage (fd_mean);
fd_var = gnm_func_lookup_or_add_placeholder ("VAR");
- gnm_func_ref (fd_var);
+ gnm_func_inc_usage (fd_var);
fd_sum = gnm_func_lookup_or_add_placeholder ("SUM");
- gnm_func_ref (fd_sum);
+ gnm_func_inc_usage (fd_sum);
fd_count = gnm_func_lookup_or_add_placeholder ("COUNT");
- gnm_func_ref (fd_count);
+ gnm_func_inc_usage (fd_count);
fd_devsq = gnm_func_lookup_or_add_placeholder ("DEVSQ");
- gnm_func_ref (fd_devsq);
+ gnm_func_inc_usage (fd_devsq);
dao->offset_row += 4;
if (dao->rows <= dao->offset_row)
@@ -4417,7 +4425,7 @@ analysis_tool_anova_single_engine_run (data_analysis_output_t *dao, gpointer spe
}
fd_fdist = gnm_func_lookup_or_add_placeholder ("FDIST");
- gnm_func_ref (fd_fdist);
+ gnm_func_inc_usage (fd_fdist);
dao_set_cell_expr
(dao, 5, 2,
@@ -4425,7 +4433,7 @@ analysis_tool_anova_single_engine_run (data_analysis_output_t *dao, gpointer spe
(fd_fdist,
arg1, arg2, arg3));
if (fd_fdist)
- gnm_func_unref (fd_fdist);
+ gnm_func_dec_usage (fd_fdist);
}
{
/* Critical F*/
@@ -4439,7 +4447,7 @@ analysis_tool_anova_single_engine_run (data_analysis_output_t *dao, gpointer spe
arg3 = expr_wdof;
fd_finv = gnm_func_lookup_or_add_placeholder ("FINV");
- gnm_func_ref (fd_finv);
+ gnm_func_inc_usage (fd_finv);
dao_set_cell_expr
(dao, 6, 2,
@@ -4449,17 +4457,17 @@ analysis_tool_anova_single_engine_run (data_analysis_output_t *dao, gpointer spe
(value_new_float (info->alpha)),
make_cellref (-4, 0),
arg3));
- gnm_func_unref (fd_finv);
+ gnm_func_dec_usage (fd_finv);
}
}
finish_anova_single_factor_tool:
- gnm_func_unref (fd_mean);
- gnm_func_unref (fd_var);
- gnm_func_unref (fd_sum);
- gnm_func_unref (fd_count);
- gnm_func_unref (fd_devsq);
+ gnm_func_dec_usage (fd_mean);
+ gnm_func_dec_usage (fd_var);
+ gnm_func_dec_usage (fd_sum);
+ gnm_func_dec_usage (fd_count);
+ gnm_func_dec_usage (fd_devsq);
dao->offset_row = 0;
dao->offset_col = 0;
@@ -4520,7 +4528,7 @@ analysis_tool_fourier_engine_run (data_analysis_output_t *dao,
GnmFunc *fd_fourier;
fd_fourier = gnm_func_lookup_or_add_placeholder ("FOURIER");
- gnm_func_ref (fd_fourier);
+ gnm_func_inc_usage (fd_fourier);
dao_set_merge (dao, 0, 0, 1, 0);
dao_set_italic (dao, 0, 0, 0, 0);
@@ -4555,7 +4563,7 @@ analysis_tool_fourier_engine_run (data_analysis_output_t *dao,
dao->offset_col += 2;
}
- gnm_func_unref (fd_fourier);
+ gnm_func_dec_usage (fd_fourier);
dao_redraw_respan (dao);
diff --git a/src/tools/analysis-wilcoxon-mann-whitney.c b/src/tools/analysis-wilcoxon-mann-whitney.c
index f893f78ce..1e615db41 100644
--- a/src/tools/analysis-wilcoxon-mann-whitney.c
+++ b/src/tools/analysis-wilcoxon-mann-whitney.c
@@ -73,13 +73,13 @@ GnmExpr const *analysis_tool_combine_area (GnmValue *val_1, GnmValue *val_2, Wor
}
fd_array = gnm_func_lookup_or_add_placeholder ("ARRAY");
- gnm_func_ref (fd_array);
+ gnm_func_inc_usage (fd_array);
expr = gnm_expr_new_funcall2 (fd_array,
gnm_expr_new_constant (value_dup (val_1)),
gnm_expr_new_constant (value_dup (val_2)));
- gnm_func_unref (fd_array);
+ gnm_func_dec_usage (fd_array);
return expr;
}
@@ -110,25 +110,25 @@ analysis_tool_wilcoxon_mann_whitney_engine_run (data_analysis_output_t *dao,
Workbook *wb = dao->sheet ? dao->sheet->workbook : NULL;
fd_count = gnm_func_lookup_or_add_placeholder ("COUNT");
- gnm_func_ref (fd_count);
+ gnm_func_inc_usage (fd_count);
fd_sum = gnm_func_lookup_or_add_placeholder ("SUM");
- gnm_func_ref (fd_sum);
+ gnm_func_inc_usage (fd_sum);
fd_rows = gnm_func_lookup_or_add_placeholder ("ROWS");
- gnm_func_ref (fd_rows);
+ gnm_func_inc_usage (fd_rows);
fd_rank_avg = gnm_func_lookup_or_add_placeholder ("RANK.AVG");
- gnm_func_ref (fd_rank_avg);
+ gnm_func_inc_usage (fd_rank_avg);
fd_rank = gnm_func_lookup_or_add_placeholder ("RANK");
- gnm_func_ref (fd_rank);
+ gnm_func_inc_usage (fd_rank);
fd_min = gnm_func_lookup_or_add_placeholder ("MIN");
- gnm_func_ref (fd_min);
+ gnm_func_inc_usage (fd_min);
fd_normdist = gnm_func_lookup_or_add_placeholder ("NORMDIST");
- gnm_func_ref (fd_normdist);
+ gnm_func_inc_usage (fd_normdist);
fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT");
- gnm_func_ref (fd_sqrt);
+ gnm_func_inc_usage (fd_sqrt);
fd_if = gnm_func_lookup_or_add_placeholder ("IF");
- gnm_func_ref (fd_if);
+ gnm_func_inc_usage (fd_if);
fd_isblank = gnm_func_lookup_or_add_placeholder ("ISBLANK");
- gnm_func_ref (fd_isblank);
+ gnm_func_inc_usage (fd_isblank);
dao_set_italic (dao, 0, 0, 0, 8);
dao_set_italic (dao, 0, 1, 3, 1);
@@ -323,16 +323,16 @@ analysis_tool_wilcoxon_mann_whitney_engine_run (data_analysis_output_t *dao,
gnm_expr_free (expr_total);
- gnm_func_unref (fd_count);
- gnm_func_unref (fd_sum);
- gnm_func_unref (fd_rows);
- gnm_func_unref (fd_rank_avg);
- gnm_func_unref (fd_rank);
- gnm_func_unref (fd_min);
- gnm_func_unref (fd_normdist);
- gnm_func_unref (fd_sqrt);
- gnm_func_unref (fd_if);
- gnm_func_unref (fd_isblank);
+ gnm_func_dec_usage (fd_count);
+ gnm_func_dec_usage (fd_sum);
+ gnm_func_dec_usage (fd_rows);
+ gnm_func_dec_usage (fd_rank_avg);
+ gnm_func_dec_usage (fd_rank);
+ gnm_func_dec_usage (fd_min);
+ gnm_func_dec_usage (fd_normdist);
+ gnm_func_dec_usage (fd_sqrt);
+ gnm_func_dec_usage (fd_if);
+ gnm_func_dec_usage (fd_isblank);
dao_redraw_respan (dao);
return 0;
diff --git a/src/tools/random-generator-cor.c b/src/tools/random-generator-cor.c
index b621fb418..6297b55b0 100644
--- a/src/tools/random-generator-cor.c
+++ b/src/tools/random-generator-cor.c
@@ -52,7 +52,7 @@ tool_random_cor_engine_run (data_analysis_output_t *dao,
GnmExpr const *expr_cholesky;
fd_cholesky = gnm_func_lookup_or_add_placeholder ("CHOLESKY");
- gnm_func_ref (fd_cholesky);
+ gnm_func_inc_usage (fd_cholesky);
expr_cholesky = gnm_expr_new_funcall1
(fd_cholesky, expr_matrix);
@@ -62,7 +62,7 @@ tool_random_cor_engine_run (data_analysis_output_t *dao,
dao_set_array_expr (dao, 0, 1, info->variables, info->variables,
expr_cholesky);
- gnm_func_unref (fd_cholesky);
+ gnm_func_dec_usage (fd_cholesky);
expr_matrix = dao_get_rangeref (dao, 0, 1, info->variables - 1, info->variables);
dao->offset_row += info->variables + 2;
@@ -73,7 +73,7 @@ tool_random_cor_engine_run (data_analysis_output_t *dao,
dao_set_cell (dao, 0, 0, _("Uncorrelated Random Variables"));
fd_rand = gnm_func_lookup_or_add_placeholder ("RANDNORM");
- gnm_func_ref (fd_rand);
+ gnm_func_inc_usage (fd_rand);
expr_rand = gnm_expr_new_funcall2 (fd_rand,
gnm_expr_new_constant (value_new_int (0)),
gnm_expr_new_constant (value_new_int (1)));
@@ -81,14 +81,14 @@ tool_random_cor_engine_run (data_analysis_output_t *dao,
for (j = 1; j <= info->count; j++)
dao_set_cell_expr (dao, i, j, gnm_expr_copy (expr_rand));
gnm_expr_free (expr_rand);
- gnm_func_unref (fd_rand);
+ gnm_func_dec_usage (fd_rand);
dao->offset_col += info->variables + 1;
fd_mmult = gnm_func_lookup_or_add_placeholder ("MMULT");
- gnm_func_ref (fd_mmult);
+ gnm_func_inc_usage (fd_mmult);
fd_transpose = gnm_func_lookup_or_add_placeholder ("TRANSPOSE");
- gnm_func_ref (fd_transpose);
+ gnm_func_inc_usage (fd_transpose);
dao_set_merge (dao, 0, 0, info->variables - 1, 0);
dao_set_italic (dao, 0, 0, 0, 0);
@@ -106,8 +106,8 @@ tool_random_cor_engine_run (data_analysis_output_t *dao,
gnm_expr_free (expr_rand);
- gnm_func_unref (fd_mmult);
- gnm_func_unref (fd_transpose);
+ gnm_func_dec_usage (fd_mmult);
+ gnm_func_dec_usage (fd_transpose);
dao_redraw_respan (dao);
return FALSE;
diff --git a/src/wbc-gtk.c b/src/wbc-gtk.c
index 528851166..14bbaa7cd 100644
--- a/src/wbc-gtk.c
+++ b/src/wbc-gtk.c
@@ -4012,7 +4012,7 @@ cb_auto_expr_insert_formula (WBCGtk *wbcg, gboolean below)
"auto-expr-func", &(specs->func), NULL);
if (specs->func == NULL) {
specs->func = gnm_func_lookup_or_add_placeholder ("sum");
- gnm_func_ref (specs->func);
+ gnm_func_inc_usage (specs->func);
}
cmd_analysis_tool (GNM_WBC (wbcg), scg_sheet (scg),
diff --git a/src/widgets/gnm-expr-entry.c b/src/widgets/gnm-expr-entry.c
index fb0882a4e..5a3cf927f 100644
--- a/src/widgets/gnm-expr-entry.c
+++ b/src/widgets/gnm-expr-entry.c
@@ -722,7 +722,7 @@ gee_delete_tooltip (GnmExprEntry *gee, gboolean remove_completion)
gee->tooltip.tooltip = NULL;
}
if (gee->tooltip.fd) {
- gnm_func_unref (gee->tooltip.fd);
+ gnm_func_dec_usage (gee->tooltip.fd);
gee->tooltip.fd = NULL;
}
if (gee->tooltip.handlerid != 0 && gee->entry != NULL) {
@@ -863,7 +863,7 @@ gee_set_tooltip (GnmExprEntry *gee, GnmFunc *fd, gint args, gboolean had_stuff)
gee_delete_tooltip (gee, FALSE);
gee->tooltip.fd = fd;
- gnm_func_ref (gee->tooltip.fd);
+ gnm_func_inc_usage (gee->tooltip.fd);
fdname = gnm_func_get_name (fd, localized_function_names);
@@ -987,7 +987,7 @@ gee_set_tooltip_completion (GnmExprEntry *gee, GSList *list, guint start, guint
}
g_string_free (str, TRUE);
g_string_free (str_marked, TRUE);
- g_slist_free_full (list, (GDestroyNotify) gnm_func_unref);
+ g_slist_free_full (list, (GDestroyNotify) gnm_func_dec_usage);
return show_tool_tip;
}
diff --git a/src/workbook-view.c b/src/workbook-view.c
index b83020181..57e6ed5fe 100644
--- a/src/workbook-view.c
+++ b/src/workbook-view.c
@@ -614,10 +614,10 @@ wb_view_auto_expr_func (WorkbookView *wbv, GnmFunc *func)
return;
if (wbv->auto_expr.func)
- gnm_func_unref (wbv->auto_expr.func);
+ gnm_func_dec_usage (wbv->auto_expr.func);
if (func)
- gnm_func_ref (func);
+ gnm_func_inc_usage (func);
wbv->auto_expr.func = func;
wb_view_auto_expr_recalc (wbv);
@@ -905,16 +905,15 @@ workbook_view_class_init (GObjectClass *gobject_class)
gobject_class->get_property = wb_view_get_property;
gobject_class->dispose = wb_view_dispose;
- /* FIXME? Make a boxed type. */
g_object_class_install_property
(gobject_class,
PROP_AUTO_EXPR_FUNC,
- g_param_spec_boxed ("auto-expr-func",
- P_("Auto-expression function"),
- P_("The automatically computed sheet function."),
- gnm_func_get_type (),
- GSF_PARAM_STATIC |
- G_PARAM_READWRITE));
+ g_param_spec_object ("auto-expr-func",
+ P_("Auto-expression function"),
+ P_("The automatically computed sheet function."),
+ GNM_FUNC_TYPE,
+ GSF_PARAM_STATIC |
+ G_PARAM_READWRITE));
g_object_class_install_property
(gobject_class,
PROP_AUTO_EXPR_DESCR,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]