table->layers = NULL;
/* Dependent variable (s) */
- if (!parse_variables_const (lexer, cmd->dict,
+ if (!parse_variables_const_pool (lexer, cmd->pool, cmd->dict,
&table->dep_vars, &table->n_dep_vars,
PV_NO_DUPLICATE | PV_NUMERIC))
return false;
pool_realloc (cmd->pool, table->layers,
sizeof (*table->layers) * table->n_layers);
- if (!parse_variables_const
- (lexer, cmd->dict,
+ if (!parse_variables_const_pool
+ (lexer, cmd->pool, cmd->dict,
&table->layers[table->n_layers - 1].factor_vars,
&table->layers[table->n_layers - 1].n_factor_vars,
PV_NO_DUPLICATE))
bool warn;
};
+
+static void
+destroy_n (const void *aux1 UNUSED, void *aux2, void *user_data)
+{
+ struct mtable *table = aux2;
+ int v;
+ struct per_cat_data *per_cat_data = user_data;
+ struct per_var_data *pvd = per_cat_data->pvd;
+
+ for (v = 0; v < table->n_dep_vars; ++v)
+ {
+ struct per_var_data *pp = &pvd[v];
+ moments1_destroy (pp->mom);
+ }
+}
+
static void *
create_n (const void *aux1, void *aux2)
{
struct payload payload;
payload.create = create_n;
payload.update = update_n;
- payload.destroy = calculate_n;
+ payload.calculate = calculate_n;
+ payload.destroy = destroy_n;
for (t = 0; t < cmd->n_tables; ++t)
{
struct mtable *table = &cmd->table[t];
table->cats
= categoricals_create (table->interactions,
- table->n_layers, wv, cmd->exclude);
+ table->n_layers, wv, cmd->dep_exclude, cmd->exclude);
categoricals_set_payload (table->cats, &payload, cmd, table);
}
- for (reader = casereader_clone (input);
+ for (reader = input;
(c = casereader_read (reader)) != NULL; case_unref (c))
{
for (t = 0; t < cmd->n_tables; ++t)
tab_text (t, 0,
heading_rows + dv * n_cats,
TAB_RIGHT | TAT_TITLE,
- var_get_name (table->dep_vars[dv])
+ var_to_string (table->dep_vars[dv])
);
if ( dv > 0)