output-item: Collapse the inheritance hierarchy into a single struct.
[pspp] / src / output / spv-driver.c
index 0c9d1412a5584514d4bf45be1139bf94ae4ce7ad..f0c00e5fa84ad615bcd3828cc20817d528b56684 100644 (file)
 
 #include "data/file-handle-def.h"
 #include "libpspp/cast.h"
-#include "output/group-item.h"
-#include "output/page-eject-item.h"
-#include "output/page-setup-item.h"
-#include "output/table-item.h"
-#include "output/text-item.h"
+#include "output/cairo-chart.h"
+#include "output/output-item.h"
 #include "output/spv/spv-writer.h"
 
 #include "gl/xalloc.h"
@@ -95,30 +92,7 @@ spv_submit (struct output_driver *driver,
 {
   struct spv_driver *spv = spv_driver_cast (driver);
 
-  if (is_group_open_item (output_item))
-    spv_writer_open_heading (spv->writer,
-                             to_group_open_item (output_item)->command_name,
-                             to_group_open_item (output_item)->command_name);
-  else if (is_group_close_item (output_item))
-    spv_writer_close_heading (spv->writer);
-  else if (is_table_item (output_item))
-    {
-      const struct table_item *table_item = to_table_item (output_item);
-      if (table_item->pt)
-        spv_writer_put_table (spv->writer, table_item->pt);
-    }
-  else if (is_text_item (output_item))
-    {
-      char *command_id = output_get_command_name ();
-      spv_writer_put_text (spv->writer, to_text_item (output_item),
-                           command_id);
-      free (command_id);
-    }
-  else if (is_page_eject_item (output_item))
-    spv_writer_eject_page (spv->writer);
-  else if (is_page_setup_item (output_item))
-    spv_writer_set_page_setup (spv->writer,
-                               to_page_setup_item (output_item)->page_setup);
+  spv_writer_write (spv->writer, output_item);
 }
 
 struct output_driver_factory spv_driver_factory =