/* PSPP - computes sample statistics.
Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
- Written by Ben Pfaff <blp@gnu.org>.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
/* Ensure that all the output strings are at least as wide
as the widest destination variable. */
- if (trns->dst_type == ALPHA)
+ if (trns->dst_type == VAR_STRING)
enlarge_dst_widths (trns);
/* Create destination variables, if needed.
PV_SAME_TYPE))
return false;
pool_register (trns->pool, free, trns->src_vars);
- trns->src_type = trns->src_vars[0]->type;
+ trns->src_type = var_get_type (trns->src_vars[0]);
return true;
}
size_t i;
/* Find length of longest source variable. */
- max_src_width = trns->src_vars[0]->width;
+ max_src_width = var_get_width (trns->src_vars[0]);
for (i = 1; i < trns->var_cnt; i++)
{
- size_t var_width = trns->src_vars[i]->width;
+ size_t var_width = var_get_width (trns->src_vars[i]);
if (var_width > max_src_width)
max_src_width = var_width;
}
if (!parse_map_out (lexer, trns->pool, &out))
return false;
- dst_type = out.width == 0 ? NUMERIC : ALPHA;
+ dst_type = var_type_from_width (out.width);
if (have_dst_type && dst_type != trns->dst_type)
{
msg (SE, _("Inconsistent target variable types. "
set_map_in_generic (&in, MAP_CONVERT);
add_mapping (trns, &map_allocated, &in);
- dst_type = NUMERIC;
- if (trns->src_type != ALPHA
- || (have_dst_type && trns->dst_type != NUMERIC))
+ dst_type = VAR_NUMERIC;
+ if (trns->src_type != VAR_STRING
+ || (have_dst_type && trns->dst_type != VAR_NUMERIC))
{
msg (SE, _("CONVERT requires string input values and "
"numeric output values."));
{
if (lex_match_id (lexer, "ELSE"))
set_map_in_generic (in, MAP_ELSE);
- else if (src_type == NUMERIC)
+ else if (src_type == VAR_NUMERIC)
{
if (lex_match_id (lexer, "MISSING"))
set_map_in_generic (in, MAP_MISSING);
{
struct variable *v;
v = trns->dst_vars[i] = dict_lookup_var (dict, trns->dst_names[i]);
- if (v == NULL && trns->dst_type == ALPHA)
+ if (v == NULL && trns->dst_type == VAR_STRING)
{
msg (SE, _("There is no variable named "
"%s. (All string variables specified "
{
msg (SE, _("INTO is required with %s input values "
"and %s output values."),
- var_type_adj (trns->src_type),
- var_type_adj (trns->dst_type));
+ trns->src_type == VAR_NUMERIC ? _("numeric") : _("string"),
+ trns->dst_type == VAR_NUMERIC ? _("numeric") : _("string"));
return false;
}
}
for (i = 0; i < trns->var_cnt; i++)
{
struct variable *v = trns->dst_vars[i];
- if (v != NULL && v->type != trns->dst_type)
+ if (v != NULL && var_get_type (v) != trns->dst_type)
{
msg (SE, _("Type mismatch. Cannot store %s data in "
"%s variable %s."),
- trns->dst_type == ALPHA ? _("string") : _("numeric"),
- v->type == ALPHA ? _("string") : _("numeric"),
- v->name);
+ trns->dst_type == VAR_STRING ? _("string") : _("numeric"),
+ var_is_alpha (v) ? _("string") : _("numeric"),
+ var_get_name (v));
return false;
}
}
for (i = 0; i < trns->var_cnt; i++)
{
struct variable *v = trns->dst_vars[i];
- if (v->width > max_dst_width)
- max_dst_width = v->width;
+ if (var_get_width (v) > max_dst_width)
+ max_dst_width = var_get_width (v);
}
for (i = 0; i < trns->map_cnt; i++)
*var = dict_lookup_var (dict, name);
if (*var == NULL)
*var = dict_create_var_assert (dict, name, 0);
- assert ((*var)->type == trns->dst_type);
+ assert (var_get_type (*var) == trns->dst_type);
}
}
\f
match = value == in->x.f;
break;
case MAP_MISSING:
- match = mv_is_num_user_missing (&v->miss, value);
+ match = var_is_num_user_missing (v, value);
break;
case MAP_RANGE:
match = value >= in->x.f && value <= in->y.f;
struct variable *src_var = trns->src_vars[i];
struct variable *dst_var = trns->dst_vars[i];
- const union value *src_data = case_data (c, src_var->fv);
- union value *dst_data = case_data_rw (c, dst_var->fv);
+ const union value *src_data = case_data (c, src_var);
+ union value *dst_data = case_data_rw (c, dst_var);
const struct map_out *out;
- if (trns->src_type == NUMERIC)
+ if (trns->src_type == VAR_NUMERIC)
out = find_src_numeric (trns, src_data->f, src_var);
else
- out = find_src_string (trns, src_data->s, src_var->width);
+ out = find_src_string (trns, src_data->s, var_get_width (src_var));
- if (trns->dst_type == NUMERIC)
+ if (trns->dst_type == VAR_NUMERIC)
{
if (out != NULL)
dst_data->f = !out->copy_input ? out->value.f : src_data->f;
if (out != NULL)
{
if (!out->copy_input)
- memcpy (dst_data->s, out->value.c, dst_var->width);
+ memcpy (dst_data->s, out->value.c, var_get_width (dst_var));
else if (trns->src_vars != trns->dst_vars)
- buf_copy_rpad (dst_data->s, dst_var->width,
- src_data->s, src_var->width);
+ buf_copy_rpad (dst_data->s, var_get_width (dst_var),
+ src_data->s, var_get_width (src_var));
}
else if (trns->src_vars != trns->dst_vars)
- memset (dst_data->s, ' ', dst_var->width);
+ memset (dst_data->s, ' ', var_get_width (dst_var));
}
}