struct agr_var *next; /* Next in list. */
/* Collected during parsing. */
- struct variable *src; /* Source variable. */
+ const struct variable *src; /* Source variable. */
struct variable *dest; /* Target variable. */
int function; /* Function. */
enum mv_class exclude; /* Classes of missing values to exclude. */
/* Break variables. */
struct sort_criteria *sort; /* Sort criteria. */
- struct variable **break_vars; /* Break variables. */
+ const struct variable **break_vars; /* Break variables. */
size_t break_var_cnt; /* Number of break variables. */
struct ccase break_case; /* Last values of break variables. */
/* Delete documents. */
if (!copy_documents)
- dict_set_documents (agr.dict, NULL);
+ dict_clear_documents (agr.dict);
/* Cancel SPLIT FILE. */
dict_set_split_vars (agr.dict, NULL, 0);
goto error;
}
discard_variables (ds);
- dict_destroy (dict);
dataset_set_dict (ds, agr.dict);
agr.dict = NULL;
proc_set_source (ds, agr.sink->class->make_source (agr.sink));
union agr_argument arg[2];
- struct variable **src;
+ const struct variable **src;
size_t n_src;
size_t i;
n_src = 0;
arg[0].c = NULL;
arg[1].c = NULL;
+ ds_init_empty (&function_name);
/* Parse the list of target variables. */
while (!lex_match (lexer, '='))
exclude = MV_ANY;
- ds_init_string (&function_name, lex_tokstr (lexer));
+ ds_assign_string (&function_name, lex_tokstr (lexer));
ds_chomp (&function_name, '.');
else if (function->n_args)
pv_opts |= PV_SAME_TYPE;
- if (!parse_variables (lexer, dict, &src, &n_src, pv_opts))
+ if (!parse_variables_const (lexer, dict, &src, &n_src, pv_opts))
goto error;
}
}
else
{
- msg (SE, _("Missing argument %d to %s."), i + 1,
- function->name);
+ msg (SE, _("Missing argument %d to %s."),
+ (int) i + 1, function->name);
goto error;
}
for (i = 0; i < agr->break_var_cnt; i++)
{
- struct variable *v = agr->break_vars[i];
+ const struct variable *v = agr->break_vars[i];
size_t value_cnt = var_get_value_cnt (v);
memcpy (case_data_rw_idx (output, value_idx),
case_data (&agr->break_case, v),