refactoring
authorBen Pfaff <blp@cs.stanford.edu>
Sun, 14 Aug 2022 04:48:03 +0000 (21:48 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Sun, 14 Aug 2022 04:48:03 +0000 (21:48 -0700)
src/language/stats/ctables.c

index 918fed9a7b875327b78c1dcc92a5146b89b08da0..2b9e010bbe4a749d8a3b47aa9cd4ded1b3d4a1f4 100644 (file)
@@ -4712,61 +4712,54 @@ ctables_prepare_table (struct ctables_table *t)
                     continue;
                   }
 
+                size_t n_drop;
                 if (at == CTAT_SUBTABLE && t->label_axis[PIVOT_AXIS_ROW] == PIVOT_AXIS_COLUMN)
                   {
-                    size_t n_drop = (a == PIVOT_AXIS_LAYER ? 0
-                                     : a == PIVOT_AXIS_ROW ? 2
-                                     : 0);
-                    for (size_t i = 0; i < n_drop; i++)
-                      if (nest->n_areas[at] > 0)
-                        nest->n_areas[at]--;
-                    continue;
+                    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)
                   {
-                    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;
+                    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)
                   {
-                    if (a == PIVOT_AXIS_ROW)
+                    if (a == PIVOT_AXIS_COLUMN)
+                      n_drop = 1;
+                    else
                       {
-                        size_t n = nest->n_areas[at];
-                        if (n > 1)
+                        if (a == PIVOT_AXIS_ROW)
                           {
-                            nest->areas[at][n - 2] = nest->areas[at][n - 1];
-                            nest->n_areas[at]--;
+                            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 (a == PIVOT_AXIS_COLUMN)
-                      {
-                        if (nest->n_areas[at] > 0)
-                          nest->n_areas[at]--;
-                      }
-                    continue;
                   }
                 else if (at == CTAT_SUBTABLE && t->label_axis[PIVOT_AXIS_COLUMN] == PIVOT_AXIS_LAYER)
                   {
-                    if (a == PIVOT_AXIS_COLUMN)
+                    if (a == PIVOT_AXIS_ROW)
+                      n_drop = 1;
+                    else
                       {
-                        size_t n = nest->n_areas[at];
-                        if (n > 1)
+                        if (a == PIVOT_AXIS_COLUMN)
                           {
-                            nest->areas[at][n - 2] = nest->areas[at][n - 1];
-                            nest->n_areas[at]--;
+                            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 (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)
                   continue;
@@ -4812,19 +4805,26 @@ ctables_prepare_table (struct ctables_table *t)
                       }
                     continue;
                   }
+                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)
+                      n_drop++;
+                  }
 
-                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);
-                if (drop_last && nest->n_areas[at] > 0)
-                  nest->n_areas[at]--;
-
-                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));
-                if (drop_additional && nest->n_areas[at] > 0)
-                  nest->n_areas[at]--;
+                for (size_t i = 0; i < n_drop; i++)
+                  if (nest->n_areas[at] > 0)
+                    nest->n_areas[at]--;
               }
           }
       }