pivot-table: Reduce size of struct pivot_value from 80 bytes to 40.
[pspp] / src / output / pivot-output.c
index 0efba3e34b0e0a6922644e18338cf219c3fad5db..a170b6ee71a79e670c72c98fef1bda01c9e97b5a 100644 (file)
 #include "data/settings.h"
 #include "libpspp/assertion.h"
 #include "libpspp/pool.h"
-#include "output/page-eject-item.h"
+#include "output/output-item.h"
 #include "output/pivot-table.h"
-#include "output/table-item.h"
 #include "output/table-provider.h"
 #include "output/table.h"
-#include "output/text-item.h"
 
 #include "gl/minmax.h"
 #include "gl/xalloc.h"
@@ -396,9 +394,10 @@ add_references (const struct pivot_table *pt, const struct table *table,
 
         if (x == cell.d[H][0] && y == cell.d[V][0])
           {
-            for (size_t i = 0; i < cell.value->n_footnotes; i++)
+            const struct pivot_value_ex *ex = pivot_value_ex (cell.value);
+            for (size_t i = 0; i < ex->n_footnotes; i++)
               {
-                size_t idx = cell.value->footnote_indexes[i];
+                size_t idx = ex->footnote_indexes[i];
                 assert (idx < pt->n_footnotes);
 
                 if (!refs[idx] && pt->footnotes[idx]->show)
@@ -595,7 +594,7 @@ pivot_output (const struct pivot_table *pt,
   if (n_layers > 0)
     {
       layers = create_aux_table (pt, 1, n_layers, PIVOT_AREA_LAYERS);
-      size_t y = 0;
+      size_t y = n_layers - 1;
       for (size_t i = 0; i < layer_axis->n_dimensions; i++)
         {
           const struct pivot_dimension *d = layer_axis->dimensions[i];
@@ -603,11 +602,9 @@ pivot_output (const struct pivot_table *pt,
             continue;
 
           struct string s = DS_EMPTY_INITIALIZER;
-          pivot_value_format (d->root->name, pt, &s);
-          ds_put_cstr (&s, ": ");
           pivot_value_format (d->data_leaves[layer_indexes[i]]->name, pt, &s);
           fill_cell_owned (layers, 0, y, 0, y, PIVOT_AREA_LAYERS, &s, false);
-          y++;
+          y--;
         }
     }
   else
@@ -665,5 +662,5 @@ pivot_output (const struct pivot_table *pt,
 void
 pivot_table_submit (struct pivot_table *pt)
 {
-  table_item_submit (table_item_create (pt));
+  output_item_submit (table_item_create (pt));
 }