more work toward making table_item just a pivot_Table
[pspp] / src / output / ascii.c
index 29cc73b81115dcb1f5d0216c49919dcd93640abd..9a08a893317d656b588696e800ed5d179e001661 100644 (file)
@@ -54,6 +54,8 @@
 #include "output/driver-provider.h"
 #include "output/message-item.h"
 #include "output/options.h"
+#include "output/pivot-output.h"
+#include "output/pivot-table.h"
 #include "output/render.h"
 #include "output/table-item.h"
 #include "output/text-item.h"
@@ -558,21 +560,22 @@ static void
 ascii_output_table_item (struct ascii_driver *a,
                          const struct table_item *table_item)
 {
-  struct render_pager *p;
-
   update_page_size (a, false);
 
-  if (a->object_cnt++)
-    putc ('\n', a->file);
-
-  p = render_pager_create (&a->params, table_item);
-  for (int i = 0; render_pager_has_next (p); i++)
+  size_t *layer_indexes;
+  PIVOT_OUTPUT_FOR_EACH_LAYER (layer_indexes, table_item->pt, true)
     {
-      if (i)
-        putc ('\n', a->file);
-      ascii_output_lines (a, render_pager_draw_next (p, INT_MAX));
+      struct render_pager *p = render_pager_create (&a->params, table_item,
+                                                    layer_indexes);
+      for (int i = 0; render_pager_has_next (p); i++)
+        {
+          if (a->object_cnt++)
+            putc ('\n', a->file);
+
+          ascii_output_lines (a, render_pager_draw_next (p, INT_MAX));
+        }
+      render_pager_destroy (p);
     }
-  render_pager_destroy (p);
 }
 
 static void
@@ -608,8 +611,10 @@ ascii_submit (struct output_driver *driver,
         {
           struct text_item *text_item;
 
-          text_item = text_item_create_format (
-            TEXT_ITEM_LOG, _("See %s for a chart."), file_name);
+          text_item = text_item_create_nocopy (
+            TEXT_ITEM_LOG,
+            xasprintf (_("See %s for a chart."), file_name),
+            NULL);
 
           ascii_submit (driver, &text_item->output_item);
           text_item_unref (text_item);