X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fctables.c;h=918fed9a7b875327b78c1dcc92a5146b89b08da0;hb=b2a7697fe4675ce67f16f413700a15e26779a2ac;hp=e5a1ca5b19dda4c5964d53e4f0e346c55a1ac10e;hpb=c8adc6783134063d4ada34a58f9e7abf6a039bb2;p=pspp diff --git a/src/language/stats/ctables.c b/src/language/stats/ctables.c index e5a1ca5b19..918fed9a7b 100644 --- a/src/language/stats/ctables.c +++ b/src/language/stats/ctables.c @@ -4678,7 +4678,7 @@ ctables_prepare_table (struct ctables_table *t) continue; nest->areas[at][nest->n_areas[at]++] = k; } - else if (at == CTAT_LAYERCOL && a == PIVOT_AXIS_ROW && t->label_axis[PIVOT_AXIS_ROW] == PIVOT_AXIS_COLUMN) + else if (at == CTAT_LAYERCOL && a == PIVOT_AXIS_ROW && t->label_axis[a] != a) { for (size_t k = nest->n - 1; k < nest->n; k--) { @@ -4687,8 +4687,9 @@ ctables_prepare_table (struct ctables_table *t) nest->areas[at][nest->n_areas[at]++] = k; break; } + continue; } - else if (at == CTAT_LAYERROW && a == PIVOT_AXIS_COLUMN && t->label_axis[PIVOT_AXIS_COLUMN] == PIVOT_AXIS_ROW) + else if (at == CTAT_LAYERROW && a == PIVOT_AXIS_COLUMN && t->label_axis[a] != a) { for (size_t k = nest->n - 1; k < nest->n; k--) { @@ -4697,6 +4698,7 @@ ctables_prepare_table (struct ctables_table *t) nest->areas[at][nest->n_areas[at]++] = k; break; } + continue; } else if (at == CTAT_LAYER && t->label_axis[a] == PIVOT_AXIS_LAYER) { @@ -4720,6 +4722,16 @@ ctables_prepare_table (struct ctables_table *t) nest->n_areas[at]--; continue; } + else if (at == CTAT_SUBTABLE && t->label_axis[PIVOT_AXIS_COLUMN] == PIVOT_AXIS_ROW) + { + size_t n_drop = (a == PIVOT_AXIS_LAYER ? 0 + : a == PIVOT_AXIS_COLUMN ? 2 + : 0); + for (size_t i = 0; i < n_drop; i++) + if (nest->n_areas[at] > 0) + nest->n_areas[at]--; + continue; + } else if (at == CTAT_SUBTABLE && t->label_axis[PIVOT_AXIS_ROW] == PIVOT_AXIS_LAYER) { if (a == PIVOT_AXIS_ROW) @@ -4738,14 +4750,22 @@ ctables_prepare_table (struct ctables_table *t) } continue; } - else if (at == CTAT_SUBTABLE && t->label_axis[PIVOT_AXIS_COLUMN] == PIVOT_AXIS_ROW) + else if (at == CTAT_SUBTABLE && t->label_axis[PIVOT_AXIS_COLUMN] == PIVOT_AXIS_LAYER) { - size_t n_drop = (a == PIVOT_AXIS_LAYER ? 0 - : a == PIVOT_AXIS_COLUMN ? 2 - : 0); - for (size_t i = 0; i < n_drop; i++) - if (nest->n_areas[at] > 0) - nest->n_areas[at]--; + 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]--; + } + } + else if (a == PIVOT_AXIS_ROW) + { + if (nest->n_areas[at] > 0) + nest->n_areas[at]--; + } continue; } else if (at == CTAT_ROW && a == PIVOT_AXIS_COLUMN && t->label_axis[PIVOT_AXIS_ROW] == PIVOT_AXIS_COLUMN) @@ -4772,6 +4792,26 @@ ctables_prepare_table (struct ctables_table *t) } continue; } + 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]--; + } + continue; + } + 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]--; + } + continue; + } bool drop_last = (at == CTAT_SUBTABLE ? a != PIVOT_AXIS_LAYER : at == CTAT_ROW ? a == PIVOT_AXIS_COLUMN