- bool add_vars = (at == CTAT_LAYER ? a == PIVOT_AXIS_LAYER
- : at == CTAT_LAYERROW ? a != PIVOT_AXIS_COLUMN
- : at == CTAT_LAYERCOL ? a != PIVOT_AXIS_ROW
- : at == CTAT_TABLE ? false
- : true);
- if (add_vars)
- for (size_t k = 0; k < nest->n; k++)
- {
- if (k == nest->scale_idx)
- continue;
- nest->areas[at][nest->n_areas[at]++] = k;
- }
- else if ((at == CTAT_LAYERCOL && a == PIVOT_AXIS_ROW && t->label_axis[a] != a)
- || (at == CTAT_LAYERROW && a == PIVOT_AXIS_COLUMN && t->label_axis[a] != a)
- || (at == CTAT_LAYER && t->label_axis[a] == PIVOT_AXIS_LAYER))
- {
- for (size_t k = nest->n - 1; k < nest->n; k--)
- {
- if (k == nest->scale_idx)
- continue;
- nest->areas[at][nest->n_areas[at]++] = k;
- break;
- }
- continue;
- }
-
- size_t n_drop;
- if (at == CTAT_SUBTABLE && t->label_axis[PIVOT_AXIS_ROW] == PIVOT_AXIS_COLUMN)
- {
- n_drop = (a == PIVOT_AXIS_LAYER ? 0
- : a == PIVOT_AXIS_ROW ? 2
- : 0);
- }
- else if (at == CTAT_SUBTABLE && t->label_axis[PIVOT_AXIS_COLUMN] == PIVOT_AXIS_ROW)
- {
- n_drop = (a == PIVOT_AXIS_LAYER ? 0
- : a == PIVOT_AXIS_COLUMN ? 2
- : 0);
- }
- else if (at == CTAT_SUBTABLE && t->label_axis[PIVOT_AXIS_ROW] == PIVOT_AXIS_LAYER)