projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Issue an error if no valid data are found
[pspp]
/
src
/
language
/
stats
/
aggregate.c
diff --git
a/src/language/stats/aggregate.c
b/src/language/stats/aggregate.c
index 6a275b09d6d154a4de402efd99850c12454a614b..297d2abee4cc495cc17f1aaedd4da0d9e00f53bf 100644
(file)
--- a/
src/language/stats/aggregate.c
+++ b/
src/language/stats/aggregate.c
@@
-64,7
+64,7
@@
struct agr_var
struct agr_var *next; /* Next in list. */
/* Collected during parsing. */
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. */
struct variable *dest; /* Target variable. */
int function; /* Function. */
enum mv_class exclude; /* Classes of missing values to exclude. */
@@
-141,7
+141,7
@@
struct agr_proc
/* Break variables. */
struct sort_criteria *sort; /* Sort criteria. */
/* 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. */
size_t break_var_cnt; /* Number of break variables. */
struct ccase break_case; /* Last values of break variables. */
@@
-254,7
+254,7
@@
cmd_aggregate (struct lexer *lexer, struct dataset *ds)
/* Delete documents. */
if (!copy_documents)
/* 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);
/* Cancel SPLIT FILE. */
dict_set_split_vars (agr.dict, NULL, 0);
@@
-305,7
+305,6
@@
cmd_aggregate (struct lexer *lexer, struct dataset *ds)
goto error;
}
discard_variables (ds);
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));
dataset_set_dict (ds, agr.dict);
agr.dict = NULL;
proc_set_source (ds, agr.sink->class->make_source (agr.sink));
@@
-397,7
+396,7
@@
parse_aggregate_functions (struct lexer *lexer, const struct dictionary *dict, s
union agr_argument arg[2];
union agr_argument arg[2];
- struct variable **src;
+
const
struct variable **src;
size_t n_src;
size_t i;
size_t n_src;
size_t i;
@@
-410,6
+409,7
@@
parse_aggregate_functions (struct lexer *lexer, const struct dictionary *dict, s
n_src = 0;
arg[0].c = NULL;
arg[1].c = NULL;
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, '='))
/* Parse the list of target variables. */
while (!lex_match (lexer, '='))
@@
-452,7
+452,7
@@
parse_aggregate_functions (struct lexer *lexer, const struct dictionary *dict, s
exclude = MV_ANY;
exclude = MV_ANY;
- ds_
init
_string (&function_name, lex_tokstr (lexer));
+ ds_
assign
_string (&function_name, lex_tokstr (lexer));
ds_chomp (&function_name, '.');
ds_chomp (&function_name, '.');
@@
-496,7
+496,7
@@
parse_aggregate_functions (struct lexer *lexer, const struct dictionary *dict, s
else if (function->n_args)
pv_opts |= PV_SAME_TYPE;
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;
}
goto error;
}
@@
-520,8
+520,8
@@
parse_aggregate_functions (struct lexer *lexer, const struct dictionary *dict, s
}
else
{
}
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;
}
goto error;
}
@@
-959,7
+959,7
@@
dump_aggregate_info (struct agr_proc *agr, struct ccase *output)
for (i = 0; i < agr->break_var_cnt; i++)
{
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),
size_t value_cnt = var_get_value_cnt (v);
memcpy (case_data_rw_idx (output, value_idx),
case_data (&agr->break_case, v),