/* PSPP - One way ANOVA. -*-c-*-
-Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
+Copyright (C) 1997-9, 2000, 2007 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
static struct cmd_oneway cmd;
/* The independent variable */
-static struct variable *indep_var;
+static const struct variable *indep_var;
/* Number of dependent variables */
static size_t n_vars;
/* The dependent variables */
-static struct variable **vars;
+static const struct variable **vars;
/* A hash table containing all the distinct values of the independent
sum += subc_list_double_at(&cmd.dl_contrast[i],j);
if ( sum != 0.0 )
- msg(SW,_("Coefficients for contrast %d do not total zero"),i + 1);
+ msg(SW,_("Coefficients for contrast %d do not total zero"),
+ (int) i + 1);
}
if ( stat_tables & STAT_DESC )
&& lex_token (lexer) != T_ALL)
return 2;
- if (!parse_variables (lexer, dict, &vars, &n_vars,
+ if (!parse_variables_const (lexer, dict, &vars, &n_vars,
PV_DUPLICATE
| PV_NUMERIC | PV_NO_SCRATCH) )
{
}
}
+static void
+free_value (void *value_, const void *aux UNUSED)
+{
+ union value *value = value_;
+ free (value);
+}
static bool
run_oneway(const struct ccase *first, const struct casefile *cf,
global_group_hash = hsh_create(4,
(hsh_compare_func *) compare_values,
(hsh_hash_func *) hash_value,
- 0,
+ free_value,
(void *) var_get_width (indep_var) );
precalc(cmd);
const double weight =
dict_get_case_weight (dataset_dict (ds), &c, &bad_weight_warn);
-
- const union value *indep_val;
+ const union value *indep_val;
+ void **p;
+
if ( casefilter_variable_missing (filter, &c, indep_var))
continue;
indep_val = case_data (&c, indep_var);
+ p = hsh_probe (global_group_hash, indep_val);
+ if (*p == NULL)
+ *p = value_dup (indep_val, var_get_width (indep_var));
hsh_insert ( global_group_hash, (void *) indep_val );