From e378d75c125c92e895ae7c112774586cd1d3eda3 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sat, 13 Aug 2022 22:09:08 -0700 Subject: [PATCH] refacotring --- src/language/stats/ctables.c | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/src/language/stats/ctables.c b/src/language/stats/ctables.c index 20f18916c8..fc58d4b704 100644 --- a/src/language/stats/ctables.c +++ b/src/language/stats/ctables.c @@ -455,6 +455,7 @@ struct ctables_table */ enum pivot_axis_type label_axis[PIVOT_N_AXES]; enum pivot_axis_type clabels_from_axis; + enum pivot_axis_type clabels_to_axis; const struct variable *clabels_example; struct hmap clabels_values_map; struct ctables_value **clabels_values; @@ -4497,8 +4498,6 @@ ctables_check_label_position (struct ctables_table *t, enum pivot_axis_type a) if (label_pos == a) return true; - t->clabels_from_axis = a; - const char *subcommand_name = a == PIVOT_AXIS_ROW ? "ROWLABELS" : "COLLABELS"; const char *pos_name = label_pos == PIVOT_AXIS_LAYER ? "LAYER" : "OPPOSITE"; @@ -4693,18 +4692,10 @@ ctables_prepare_table (struct ctables_table *t) } 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); - } + if (at == CTAT_SUBTABLE + && t->clabels_from_axis != PIVOT_AXIS_LAYER + && t->clabels_to_axis != PIVOT_AXIS_LAYER) + n_drop = a == t->clabels_from_axis ? 2 : 0; else if (at == CTAT_SUBTABLE && t->label_axis[PIVOT_AXIS_ROW] == PIVOT_AXIS_LAYER) { if (a == PIVOT_AXIS_COLUMN) @@ -6326,6 +6317,7 @@ cmd_ctables (struct lexer *lexer, struct dataset *ds) [PIVOT_AXIS_LAYER] = PIVOT_AXIS_LAYER, }, .clabels_from_axis = PIVOT_AXIS_LAYER, + .clabels_to_axis = PIVOT_AXIS_LAYER, .categories = categories, .n_categories = n_vars, .cilevel = 95, @@ -6764,12 +6756,18 @@ cmd_ctables (struct lexer *lexer, struct dataset *ds) break; } - if (t->label_axis[PIVOT_AXIS_ROW] != PIVOT_AXIS_ROW - && t->label_axis[PIVOT_AXIS_COLUMN] != PIVOT_AXIS_COLUMN) + if (t->label_axis[PIVOT_AXIS_ROW] != PIVOT_AXIS_ROW) { - msg (SE, _("ROWLABELS and COLLABELS may not both be specified.")); - goto error; + t->clabels_from_axis = PIVOT_AXIS_ROW; + if (t->label_axis[PIVOT_AXIS_COLUMN] != PIVOT_AXIS_COLUMN) + { + msg (SE, _("ROWLABELS and COLLABELS may not both be specified.")); + goto error; + } } + else if (t->label_axis[PIVOT_AXIS_COLUMN] != PIVOT_AXIS_COLUMN) + t->clabels_from_axis = PIVOT_AXIS_COLUMN; + t->clabels_to_axis = t->label_axis[t->clabels_from_axis]; if (!ctables_prepare_table (t)) goto error; -- 2.30.2