/* PSPP - computes sample statistics. -*-c-*-
Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
- Written by John Williams <johnr.williams@stonebow.otago.ac.nz>.
- Almost completly re-written by John Darrington 2004
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 pair *pairs=0;
-static int parse_value (union value * v, int type) ;
+static int parse_value (struct lexer *lexer, union value * v, enum var_type);
/* Structures and Functions for the Statistics Summary Box */
struct ssbox;
int
-cmd_t_test (struct dataset *ds)
+cmd_t_test (struct lexer *lexer, struct dataset *ds)
{
bool ok;
- if ( !parse_t_test (ds, &cmd, NULL) )
+ if ( !parse_t_test (lexer, ds, &cmd, NULL) )
return CMD_FAILURE;
if (! cmd.sbc_criteria)
struct hsh_table *hash;
struct variable *v;
- hash = hsh_create (n_pairs, compare_var_names, hash_var_name, 0, 0);
+ hash = hsh_create (n_pairs, compare_vars_by_name, hash_var_by_name,
+ 0, 0);
for (i=0; i < n_pairs; ++i)
{
}
static int
-tts_custom_groups (struct dataset *ds, struct cmd_t_test *cmd UNUSED, void *aux UNUSED)
+tts_custom_groups (struct lexer *lexer, struct dataset *ds, struct cmd_t_test *cmd UNUSED, void *aux UNUSED)
{
int n_group_values=0;
- lex_match('=');
+ lex_match (lexer, '=');
- indep_var = parse_variable (dataset_dict (ds));
+ indep_var = parse_variable (lexer, dataset_dict (ds));
if (!indep_var)
{
- lex_error ("expecting variable name in GROUPS subcommand");
+ lex_error (lexer, "expecting variable name in GROUPS subcommand");
return 0;
}
- if (indep_var->type == T_STRING && indep_var->width > MAX_SHORT_STRING)
+ if (var_is_long_string (indep_var))
{
msg (SE, _("Long string variable %s is not valid here."),
- indep_var->name);
+ var_get_name (indep_var));
return 0;
}
- if (!lex_match ('('))
+ if (!lex_match (lexer, '('))
{
- if (indep_var->type == NUMERIC)
+ if (var_is_numeric (indep_var))
{
gp.v.g_value[0].f = 1;
gp.v.g_value[1].f = 2;
}
}
- if (!parse_value (&gp.v.g_value[0], indep_var->type))
+ if (!parse_value (lexer, &gp.v.g_value[0], var_get_type (indep_var)))
return 0;
- lex_match (',');
- if (lex_match (')'))
+ lex_match (lexer, ',');
+ if (lex_match (lexer, ')'))
{
- if (indep_var->type != NUMERIC)
+ if (var_is_alpha (indep_var))
{
-
msg (SE, _("When applying GROUPS to a string variable, two "
"values must be specified."));
return 0;
return 1;
}
- if (!parse_value (&gp.v.g_value[1], indep_var->type))
+ if (!parse_value (lexer, &gp.v.g_value[1], var_get_type (indep_var)))
return 0;
n_group_values = 2;
- if (!lex_force_match (')'))
+ if (!lex_force_match (lexer, ')'))
return 0;
if ( n_group_values == 2 )
static int
-tts_custom_pairs (struct dataset *ds, struct cmd_t_test *cmd UNUSED, void *aux UNUSED)
+tts_custom_pairs (struct lexer *lexer, struct dataset *ds, struct cmd_t_test *cmd UNUSED, void *aux UNUSED)
{
struct variable **vars;
size_t n_vars;
size_t n_after_WITH = SIZE_MAX;
int paired ; /* Was the PAIRED keyword given ? */
- lex_match('=');
+ lex_match (lexer, '=');
n_vars=0;
- if (!parse_variables (dataset_dict (ds), &vars, &n_vars,
+ if (!parse_variables (lexer, dataset_dict (ds), &vars, &n_vars,
PV_DUPLICATE | PV_NUMERIC | PV_NO_SCRATCH))
{
free (vars);
assert (n_vars);
n_before_WITH = 0;
- if (lex_match (T_WITH))
+ if (lex_match (lexer, T_WITH))
{
n_before_WITH = n_vars;
- if (!parse_variables (dataset_dict (ds), &vars, &n_vars,
+ if (!parse_variables (lexer, dataset_dict (ds), &vars, &n_vars,
PV_DUPLICATE | PV_APPEND
| PV_NUMERIC | PV_NO_SCRATCH))
{
n_after_WITH = n_vars - n_before_WITH;
}
- paired = (lex_match ('(') && lex_match_id ("PAIRED") && lex_match (')'));
+ paired = (lex_match (lexer, '(') && lex_match_id (lexer, "PAIRED") && lex_match (lexer, ')'));
/* Determine the number of pairs needed */
if (paired)
/* Parses the current token (numeric or string, depending on type)
value v and returns success. */
static int
-parse_value (union value * v, int type )
+parse_value (struct lexer *lexer, union value * v, enum var_type type)
{
- if (type == NUMERIC)
+ if (type == VAR_NUMERIC)
{
- if (!lex_force_num ())
+ if (!lex_force_num (lexer))
return 0;
- v->f = tokval;
+ v->f = lex_tokval (lexer);
}
else
{
- if (!lex_force_string ())
+ if (!lex_force_string (lexer))
return 0;
- strncpy (v->s, ds_cstr (&tokstr), ds_length (&tokstr));
+ strncpy (v->s, ds_cstr (lex_tokstr (lexer)), ds_length (lex_tokstr (lexer)));
}
- lex_get ();
+ lex_get (lexer);
return 1;
}
ssbox_base_init(this, hsize,vsize);
tab_vline (this->t, TAL_GAP, 1, 0,vsize - 1);
tab_title (this->t, _("Group Statistics"));
- tab_text (this->t, 1, 0, TAB_CENTER | TAT_TITLE, indep_var->name);
+ tab_text (this->t, 1, 0, TAB_CENTER | TAT_TITLE, var_get_name (indep_var));
tab_text (this->t, 2, 0, TAB_CENTER | TAT_TITLE, _("N"));
tab_text (this->t, 3, 0, TAB_CENTER | TAT_TITLE, _("Mean"));
tab_text (this->t, 4, 0, TAB_CENTER | TAT_TITLE, _("Std. Deviation"));
{
int i;
- char *val_lab0=0;
- char *val_lab1=0;
+ const char *val_lab0;
+ const char *val_lab1;
double indep_value[2];
char prefix[2][3]={"",""};
- if ( indep_var->type == NUMERIC )
+ if ( var_is_numeric (indep_var) )
{
- val_lab0 = val_labs_find( indep_var->val_labs,gp.v.g_value[0]);
- val_lab1 = val_labs_find( indep_var->val_labs,gp.v.g_value[1]);
+ val_lab0 = var_lookup_value_label (indep_var, &gp.v.g_value[0]);
+ val_lab1 = var_lookup_value_label (indep_var, &gp.v.g_value[1]);
}
else
{
struct hsh_table *grp_hash = group_proc_get (var)->group_hash;
int count=0;
- tab_text (ssb->t, 0, i*2+1, TAB_LEFT, cmd->v_variables[i]->name);
+ tab_text (ssb->t, 0, i*2+1, TAB_LEFT,
+ var_get_name (cmd->v_variables[i]));
if (val_lab0)
tab_text (ssb->t, 1, i*2+1, TAB_LEFT | TAT_PRINTF,
/* Titles */
- tab_text (ssb->t, 1, i*2+j+1, TAB_LEFT, pairs[i].v[j]->name);
+ tab_text (ssb->t, 1, i*2+j+1, TAB_LEFT,
+ var_get_name (pairs[i].v[j]));
/* Values */
tab_float (ssb->t,2, i*2+j+1, TAB_RIGHT, pairs[i].mean[j], 8, 2);
{
struct group_statistics *gs = &group_proc_get (cmd->v_variables[i])->ugs;
- tab_text (ssb->t, 0, i+1, TAB_LEFT, cmd->v_variables[i]->name);
+ tab_text (ssb->t, 0, i+1, TAB_LEFT, var_get_name (cmd->v_variables[i]));
tab_float (ssb->t,1, i+1, TAB_RIGHT, gs->n, 2, 0);
tab_float (ssb->t,2, i+1, TAB_RIGHT, gs->mean, 8, 2);
tab_float (ssb->t,3, i+1, TAB_RIGHT, gs->std_dev, 8, 2);
assert(gs1);
- tab_text (self->t, 0, i*2+3, TAB_LEFT, cmd->v_variables[i]->name);
+ tab_text (self->t, 0, i*2+3, TAB_LEFT, var_get_name (cmd->v_variables[i]));
tab_text (self->t, 1, i*2+3, TAB_LEFT, _("Equal variances assumed"));
tab_text (trb->t, 0, i+3, TAB_LEFT | TAT_PRINTF, _("Pair %d"),i);
tab_text (trb->t, 1, i+3, TAB_LEFT | TAT_PRINTF, "%s - %s",
- pairs[i].v[0]->name, pairs[i].v[1]->name);
+ var_get_name (pairs[i].v[0]),
+ var_get_name (pairs[i].v[1]));
tab_float(trb->t, 2, i+3, TAB_RIGHT, pairs[i].mean_diff, 8, 4);
struct group_statistics *gs = &group_proc_get (cmd->v_variables[i])->ugs;
- tab_text (trb->t, 0, i+3, TAB_LEFT, cmd->v_variables[i]->name);
+ tab_text (trb->t, 0, i+3, TAB_LEFT, var_get_name (cmd->v_variables[i]));
t = (gs->mean - cmd->n_testval[0] ) * sqrt(gs->n) / gs->std_dev ;
_("Pair %d"), i);
tab_text(table, 1,i+1, TAB_LEFT | TAT_TITLE | TAT_PRINTF,
- _("%s & %s"), pairs[i].v[0]->name, pairs[i].v[1]->name);
+ _("%s & %s"),
+ var_get_name (pairs[i].v[0]),
+ var_get_name (pairs[i].v[1]));
/* row data */
if (! casefilter_variable_missing (filter, c, v) )
{
struct group_statistics *gs;
- const union value *val = case_data (c, v->fv);
+ const union value *val = case_data (c, v);
gs = &group_proc_get (cmd->v_variables[i])->ugs;
gs->n += weight;
{
struct group_statistics *gs;
struct variable *v = cmd->v_variables[i];
- const union value *val = case_data (c, v->fv);
+ const union value *val = case_data (c, v);
gs= &group_proc_get (cmd->v_variables[i])->ugs;
struct variable *v0 = pairs[i].v[0];
struct variable *v1 = pairs[i].v[1];
- const union value *val0 = case_data (c, v0->fv);
- const union value *val1 = case_data (c, v1->fv);
+ const union value *val0 = case_data (c, v0);
+ const union value *val1 = case_data (c, v1);
if ( ! casefilter_variable_missing (filter, c, v0) &&
! casefilter_variable_missing (filter, c, v1) )
/* There's always 2 groups for a T - TEST */
ttpr->n_groups = 2;
- gp.indep_width = indep_var->width;
+ gp.indep_width = var_get_width (indep_var);
ttpr->group_hash = hsh_create(2,
(hsh_compare_func *) compare_group_binary,
if ( casefilter_variable_missing (filter, c, indep_var))
return 0;
- gv = case_data (c, indep_var->fv);
+ gv = case_data (c, indep_var);
for(i=0; i< cmd->n_variables ; ++i)
{
struct variable *var = cmd->v_variables[i];
- const union value *val = case_data (c, var->fv);
+ const union value *val = case_data (c, var);
struct hsh_table *grp_hash = group_proc_get (var)->group_hash;
struct group_statistics *gs;