projects
/
pspp-builds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed buglet in file open action.
[pspp-builds.git]
/
src
/
language
/
xforms
/
recode.c
diff --git
a/src/language/xforms/recode.c
b/src/language/xforms/recode.c
index dfd8145ef59fc523252fbb15b04bb194f847f447..01f3bf765428038e9e964ee55e7ebe79c8b07fed 100644
(file)
--- a/
src/language/xforms/recode.c
+++ b/
src/language/xforms/recode.c
@@
-1,6
+1,5
@@
/* PSPP - computes sample statistics.
Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
/* 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
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@@
-157,7
+156,7
@@
cmd_recode (struct lexer *lexer, struct dataset *ds)
/* Ensure that all the output strings are at least as wide
as the widest destination variable. */
/* 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.
enlarge_dst_widths (trns);
/* Create destination variables, if needed.
@@
-186,7
+185,7
@@
parse_src_vars (struct lexer *lexer,
PV_SAME_TYPE))
return false;
pool_register (trns->pool, free, trns->src_vars);
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;
}
return true;
}
@@
-202,10
+201,10
@@
parse_mappings (struct lexer *lexer, struct recode_trns *trns)
size_t i;
/* Find length of longest source variable. */
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++)
{
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 (var_width > max_src_width)
max_src_width = var_width;
}
@@
-243,7
+242,7
@@
parse_mappings (struct lexer *lexer, struct recode_trns *trns)
if (!parse_map_out (lexer, trns->pool, &out))
return false;
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. "
if (have_dst_type && dst_type != trns->dst_type)
{
msg (SE, _("Inconsistent target variable types. "
@@
-262,9
+261,9
@@
parse_mappings (struct lexer *lexer, struct recode_trns *trns)
set_map_in_generic (&in, MAP_CONVERT);
add_mapping (trns, &map_allocated, &in);
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."));
{
msg (SE, _("CONVERT requires string input values and "
"numeric output values."));
@@
-293,7
+292,7
@@
parse_map_in (struct lexer *lexer, struct map_in *in, struct pool *pool,
{
if (lex_match_id (lexer, "ELSE"))
set_map_in_generic (in, MAP_ELSE);
{
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);
{
if (lex_match_id (lexer, "MISSING"))
set_map_in_generic (in, MAP_MISSING);
@@
-446,7
+445,7
@@
parse_dst_vars (struct lexer *lexer, struct recode_trns *trns,
{
struct variable *v;
v = trns->dst_vars[i] = dict_lookup_var (dict, trns->dst_names[i]);
{
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, _("There is no variable named "
"%s. (All string variables specified "
@@
-465,8
+464,8
@@
parse_dst_vars (struct lexer *lexer, struct recode_trns *trns,
{
msg (SE, _("INTO is required with %s input values "
"and %s output values."),
{
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;
}
}
return false;
}
}
@@
-474,13
+473,13
@@
parse_dst_vars (struct lexer *lexer, struct recode_trns *trns,
for (i = 0; i < trns->var_cnt; i++)
{
struct variable *v = trns->dst_vars[i];
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 && v
ar_get_type (v)
!= trns->dst_type)
{
msg (SE, _("Type mismatch. Cannot store %s data in "
"%s variable %s."),
{
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"),
+ v
ar_is_alpha (v)
? _("string") : _("numeric"),
+ v
ar_get_name (v)
);
return false;
}
}
return false;
}
}
@@
-500,8
+499,8
@@
enlarge_dst_widths (struct recode_trns *trns)
for (i = 0; i < trns->var_cnt; i++)
{
struct variable *v = trns->dst_vars[i];
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 (v
ar_get_width (v)
> max_dst_width)
+ max_dst_width = v
ar_get_width (v)
;
}
for (i = 0; i < trns->map_cnt; i++)
}
for (i = 0; i < trns->map_cnt; i++)
@@
-530,7
+529,7
@@
create_dst_vars (struct recode_trns *trns, struct dictionary *dict)
*var = dict_lookup_var (dict, name);
if (*var == NULL)
*var = dict_create_var_assert (dict, name, 0);
*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
}
}
\f
@@
-555,7
+554,7
@@
find_src_numeric (struct recode_trns *trns, double value, struct variable *v)
match = value == in->x.f;
break;
case MAP_MISSING:
match = value == in->x.f;
break;
case MAP_MISSING:
- match =
mv_is_num_user_missing (&v->miss, value
);
+ match =
var_is_num_missing (v, value, MV_USER
);
break;
case MAP_RANGE:
match = value >= in->x.f && value <= in->y.f;
break;
case MAP_RANGE:
match = value >= in->x.f && value <= in->y.f;
@@
-628,17
+627,17
@@
recode_trns_proc (void *trns_, struct ccase *c, casenumber case_idx UNUSED)
struct variable *src_var = trns->src_vars[i];
struct variable *dst_var = trns->dst_vars[i];
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;
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_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)
dst_data->f = !out->copy_input ? out->value.f : src_data->f;
@@
-650,13
+649,13
@@
recode_trns_proc (void *trns_, struct ccase *c, casenumber case_idx UNUSED)
if (out != NULL)
{
if (!out->copy_input)
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)
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)
}
else if (trns->src_vars != trns->dst_vars)
- memset (dst_data->s, ' ',
dst_var->width
);
+ memset (dst_data->s, ' ',
var_get_width (dst_var)
);
}
}
}
}