From 3221f4af1d83871f3f5d97fcb836a34b2dd81e66 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sat, 13 Aug 2022 22:17:17 -0700 Subject: [PATCH] rafactoring --- src/language/stats/ctables.c | 76 ++++++++++++------------------------ 1 file changed, 24 insertions(+), 52 deletions(-) diff --git a/src/language/stats/ctables.c b/src/language/stats/ctables.c index fc58d4b704..7f5ac97f8b 100644 --- a/src/language/stats/ctables.c +++ b/src/language/stats/ctables.c @@ -4692,6 +4692,7 @@ ctables_prepare_table (struct ctables_table *t) } size_t n_drop; + bool drop_inner = false; if (at == CTAT_SUBTABLE && t->clabels_from_axis != PIVOT_AXIS_LAYER && t->clabels_to_axis != PIVOT_AXIS_LAYER) @@ -4703,14 +4704,7 @@ ctables_prepare_table (struct ctables_table *t) else { if (a == PIVOT_AXIS_ROW) - { - size_t n = nest->n_areas[at]; - if (n > 1) - { - nest->areas[at][n - 2] = nest->areas[at][n - 1]; - nest->n_areas[at]--; - } - } + drop_inner = true; n_drop = 0; } } @@ -4721,14 +4715,7 @@ ctables_prepare_table (struct ctables_table *t) else { if (a == PIVOT_AXIS_COLUMN) - { - size_t n = nest->n_areas[at]; - if (n > 1) - { - nest->areas[at][n - 2] = nest->areas[at][n - 1]; - nest->n_areas[at]--; - } - } + drop_inner = true; n_drop = 0; } } @@ -4736,63 +4723,48 @@ ctables_prepare_table (struct ctables_table *t) n_drop = 0; else if (at == CTAT_COL && a == PIVOT_AXIS_ROW && t->label_axis[PIVOT_AXIS_ROW] == PIVOT_AXIS_COLUMN) { - size_t n = nest->n_areas[at]; - if (n > 1) - { - nest->areas[at][n - 2] = nest->areas[at][n - 1]; - nest->n_areas[at]--; - } + drop_inner = true; n_drop = 0; } else if (at == CTAT_COL && a == PIVOT_AXIS_ROW && t->label_axis[PIVOT_AXIS_COLUMN] == PIVOT_AXIS_ROW) - continue; + n_drop = 0; else if (at == CTAT_ROW && a == PIVOT_AXIS_COLUMN && t->label_axis[PIVOT_AXIS_COLUMN] == PIVOT_AXIS_ROW) { - size_t n = nest->n_areas[at]; - if (n > 1) - { - nest->areas[at][n - 2] = nest->areas[at][n - 1]; - nest->n_areas[at]--; - } + drop_inner = true; n_drop = 0; } else if (at == CTAT_COL && a == PIVOT_AXIS_ROW && t->label_axis[PIVOT_AXIS_ROW] == PIVOT_AXIS_LAYER) { - size_t n = nest->n_areas[at]; - if (n > 1) - { - nest->areas[at][n - 2] = nest->areas[at][n - 1]; - nest->n_areas[at]--; - } + drop_inner = true; n_drop = 0; } else if (at == CTAT_ROW && a == PIVOT_AXIS_COLUMN && t->label_axis[PIVOT_AXIS_COLUMN] == PIVOT_AXIS_LAYER) { - size_t n = nest->n_areas[at]; - if (n > 1) - { - nest->areas[at][n - 2] = nest->areas[at][n - 1]; - nest->n_areas[at]--; - } + drop_inner = true; n_drop = 0; } else { - bool drop_last = (at == CTAT_SUBTABLE ? a != PIVOT_AXIS_LAYER - : at == CTAT_ROW ? a == PIVOT_AXIS_COLUMN - : at == CTAT_COL ? a == PIVOT_AXIS_ROW - : false); - bool drop_additional - = ((t->label_axis[PIVOT_AXIS_ROW] == PIVOT_AXIS_COLUMN && (at == CTAT_ROW || at == CTAT_LAYERROW) && a == PIVOT_AXIS_ROW) - || (t->label_axis[PIVOT_AXIS_COLUMN] == PIVOT_AXIS_ROW && (at == CTAT_COL || at == CTAT_LAYERCOL) && a == PIVOT_AXIS_COLUMN)); - n_drop = 0; - if (drop_last) - n_drop++; - if (drop_additional) + if (at == CTAT_SUBTABLE ? a != PIVOT_AXIS_LAYER + : at == CTAT_ROW ? a == PIVOT_AXIS_COLUMN + : at == CTAT_COL ? a == PIVOT_AXIS_ROW + : false) n_drop++; + if ((t->label_axis[PIVOT_AXIS_ROW] == PIVOT_AXIS_COLUMN && (at == CTAT_ROW || at == CTAT_LAYERROW) && a == PIVOT_AXIS_ROW) + || (t->label_axis[PIVOT_AXIS_COLUMN] == PIVOT_AXIS_ROW && (at == CTAT_COL || at == CTAT_LAYERCOL) && a == PIVOT_AXIS_COLUMN)) + n_drop++; } + if (drop_inner) + { + size_t n = nest->n_areas[at]; + if (n > 1) + { + nest->areas[at][n - 2] = nest->areas[at][n - 1]; + nest->n_areas[at]--; + } + } for (size_t i = 0; i < n_drop; i++) if (nest->n_areas[at] > 0) nest->n_areas[at]--; -- 2.30.2