/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2009 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2009, 2010 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 published by
int n_values;
int width;
- lex_match (lexer, '=');
+ lex_match (lexer, T_EQUALS);
proc->indep_var = parse_variable (lexer, dataset_dict (ds));
if (proc->indep_var == NULL)
value_init (&proc->g_value[0], width);
value_init (&proc->g_value[1], width);
- if (!lex_match (lexer, '('))
+ if (!lex_match (lexer, T_LPAREN))
n_values = 0;
else
{
if (!parse_value (lexer, &proc->g_value[0], width))
return 0;
- lex_match (lexer, ',');
- if (lex_match (lexer, ')'))
+ lex_match (lexer, T_COMMA);
+ if (lex_match (lexer, T_RPAREN))
n_values = 1;
else
{
if (!parse_value (lexer, &proc->g_value[1], width)
- || !lex_force_match (lexer, ')'))
+ || !lex_force_match (lexer, T_RPAREN))
return 0;
n_values = 2;
}
size_t n_total_pairs;
size_t i, j;
- lex_match (lexer, '=');
+ lex_match (lexer, T_EQUALS);
if (!parse_variables_const (lexer, dataset_dict (ds), &vars1, &n_vars1,
PV_DUPLICATE | PV_NUMERIC | PV_NO_SCRATCH))
return 0;
}
- if (lex_match (lexer, '(')
+ if (lex_match (lexer, T_LPAREN)
&& lex_match_id (lexer, "PAIRED")
- && lex_match (lexer, ')'))
+ && lex_match (lexer, T_RPAREN))
{
paired = true;
if (n_vars1 != n_vars2)
return 0;
}
+
+static bool
+is_criteria_value (const struct ccase *c, void *aux)
+{
+ const struct t_test_proc *proc = aux;
+ const union value *val = case_data (c, proc->indep_var);
+ int width = var_get_width (proc->indep_var);
+
+ if ( value_equal (val, &proc->g_value[0], width))
+ return true;
+
+ if ( value_equal (val, &proc->g_value[1], width))
+ return true;
+
+ return false;
+}
+
static void
calculate (struct t_test_proc *proc,
struct casereader *input, const struct dataset *ds)
struct trbox test_results_box;
struct taint *taint;
struct ccase *c;
-
+ int i;
c = casereader_peek (input, 0);
if (c == NULL)
{
break;
case T_IND_SAMPLES:
group_calc (dict, proc, casereader_clone (input));
- int i;
+
for (i = 0; i < proc->n_vars; ++i)
{
struct group_proc *grp_data = group_proc_get (proc->vars[i]);
+ if ( proc->criterion == CMP_EQ )
+ {
+ input = casereader_create_filter_func (input, is_criteria_value, NULL,
+ proc,
+ NULL);
+ }
+
grp_data->levene = levene ( input, proc->indep_var, proc->vars[i], dict_get_weight (dict), proc->exclude);
}
break;