- for (size_t j = 0; j < t->n_fts; j++)
- {
- struct ctables_freqtab *ft = t->fts[j];
-
- for (size_t k = 0; k < ft->vars.n; k++)
- {
- const struct variable *var = ft->vars.vars[k];
- switch (var_is_value_missing (var, case_data (c, var)))
- {
- case MV_SYSTEM:
- goto next_ft;
-
- case MV_USER:
- if (!t->categories[var_get_dict_index (var)]
- || !t->categories[var_get_dict_index (var)]->include_missing)
- goto next_ft;
- break;
- }
- }
- size_t hash = 0;
- for (size_t k = 0; k < ft->vars.n; k++)
- {
- const struct variable *var = ft->vars.vars[k];
- hash = value_hash (case_data (c, var), var_get_width (var), hash);
- }
-
- struct ctables_freq *f;
- HMAP_FOR_EACH_WITH_HASH (f, struct ctables_freq, node, hash, &ft->data)
- {
- for (size_t k = 0; k < ft->vars.n; k++)
- {
- const struct variable *var = ft->vars.vars[k];
- if (!value_equal (case_data (c, var), &f->values[k],
- var_get_width (var)))
- goto next_hash_node;
- }
- goto found;
-
- next_hash_node: ;
- }
-
- f = ctables_freq_create (ft);
- for (size_t k = 0; k < ft->vars.n; k++)
- {
- const struct variable *var = ft->vars.vars[k];
- value_clone (&f->values[k], case_data (c, var),
- var_get_width (var));
- }
- hmap_insert (&ft->data, &f->node, hash);
-
- found:
- ctables_freq_add (ft, f, ft->summary_var,
- case_data (c, ft->summary_var), weight);
-
- next_ft: ;
- }
+ for (size_t ir = 0; ir < t->vaas[PIVOT_AXIS_ROW].n; ir++)
+ for (size_t ic = 0; ic < t->vaas[PIVOT_AXIS_COLUMN].n; ic++)
+ for (size_t il = 0; il < t->vaas[PIVOT_AXIS_LAYER].n; il++)
+ ctables_freqtab_insert (t, c, ir, ic, il, weight);