X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fctables.c;h=2490efde10e9803917180b2f4981061161112c6d;hb=a2bc5467fbee81ad9b493f7a9471d76cbb4d7caf;hp=b5a9101b7bfb6bc58c3b1a27e65fc76acee959be;hpb=18cbae3479d770c1f517ee2ccc060c7457f2a0d7;p=pspp diff --git a/src/language/stats/ctables.c b/src/language/stats/ctables.c index b5a9101b7b..2490efde10 100644 --- a/src/language/stats/ctables.c +++ b/src/language/stats/ctables.c @@ -4691,54 +4691,54 @@ ctables_prepare_table (struct ctables_table *t) continue; } - size_t n_drop; + enum pivot_axis_type ata, atb; + if (at == CTAT_ROW || at == CTAT_LAYERROW) + { + ata = PIVOT_AXIS_ROW; + atb = PIVOT_AXIS_COLUMN; + } + else if (at == CTAT_COL || at == CTAT_LAYERCOL) + { + ata = PIVOT_AXIS_COLUMN; + atb = PIVOT_AXIS_ROW; + } + + size_t n_drop = 0; bool drop_inner = false; - if (at == CTAT_SUBTABLE - && t->clabels_from_axis != PIVOT_AXIS_LAYER) + switch (at) { - if (t->clabels_to_axis != PIVOT_AXIS_LAYER) + case CTAT_SUBTABLE: + if (t->clabels_from_axis == PIVOT_AXIS_LAYER) + n_drop = a != PIVOT_AXIS_LAYER; + else if (t->clabels_to_axis != PIVOT_AXIS_LAYER) n_drop = a == t->clabels_from_axis ? 2 : 0; + else if (a == t->clabels_from_axis) + drop_inner = true; else + n_drop = a != PIVOT_AXIS_LAYER; + break; + + case CTAT_LAYERROW: + case CTAT_LAYERCOL: + n_drop = a == ata && t->label_axis[ata] == atb; + break; + + case CTAT_ROW: + case CTAT_COL: + if (a == atb) { - drop_inner = a == t->clabels_from_axis; - n_drop = a != t->clabels_from_axis && a != PIVOT_AXIS_LAYER; + if (t->clabels_from_axis == atb) + drop_inner = true; + else if (t->clabels_to_axis != atb) + n_drop = 1; } - } - else if (at == CTAT_ROW && a == PIVOT_AXIS_COLUMN && t->label_axis[PIVOT_AXIS_ROW] == PIVOT_AXIS_COLUMN) - n_drop = 0; - else if (at == CTAT_COL && a == PIVOT_AXIS_ROW && t->label_axis[PIVOT_AXIS_ROW] == PIVOT_AXIS_COLUMN) - { - drop_inner = true; - n_drop = 0; - } - else if (at == CTAT_COL && a == PIVOT_AXIS_ROW && t->label_axis[PIVOT_AXIS_COLUMN] == PIVOT_AXIS_ROW) - n_drop = 0; - else if (at == CTAT_ROW && a == PIVOT_AXIS_COLUMN && t->label_axis[PIVOT_AXIS_COLUMN] == PIVOT_AXIS_ROW) - { - drop_inner = true; - n_drop = 0; - } - else if (at == CTAT_COL && a == PIVOT_AXIS_ROW && t->label_axis[PIVOT_AXIS_ROW] == PIVOT_AXIS_LAYER) - { - drop_inner = true; - n_drop = 0; - } - else if (at == CTAT_ROW && a == PIVOT_AXIS_COLUMN && t->label_axis[PIVOT_AXIS_COLUMN] == PIVOT_AXIS_LAYER) - { - drop_inner = true; - n_drop = 0; - } - else - { - n_drop = 0; - 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 (((at == CTAT_ROW || at == CTAT_LAYERROW) && t->label_axis[PIVOT_AXIS_ROW] == PIVOT_AXIS_COLUMN && a == PIVOT_AXIS_ROW) - || ((at == CTAT_COL || at == CTAT_LAYERCOL) && t->label_axis[PIVOT_AXIS_COLUMN] == PIVOT_AXIS_ROW && a == PIVOT_AXIS_COLUMN)) - n_drop++; + else if (a == ata) + n_drop = t->label_axis[ata] == atb; + break; + + case CTAT_LAYER: + case CTAT_TABLE: + break; } if (drop_inner)