LIST: Remove WEIGHT subcommand.
[pspp-builds.git] / src / output / manager.h
index 7ebe541b248008b779496ffebbcf17a092e57b59..e7276982fc5c5a064b89cc8e0af364d43283a38f 100644 (file)
@@ -37,8 +37,7 @@
 
 enum som_type
   {
-    SOM_TABLE,
-    SOM_CHART
+    SOM_TABLE
   } ;
 
 /* Entity (Table or Chart) . */
@@ -46,9 +45,15 @@ struct som_entity
   {
     const struct som_table_class *class;       /* Table class. */
     enum som_type type;                 /* Table or Chart */
-    void *ext;                         /* Owned by */
+    void *ext;                         /* Owned by table or chart class. */
+    int table_num;                      /* Table number. */
+    int subtable_num;                   /* Sub-table number. */
+    char *command_name;                 /* Command that yielded this output. */
   };
 
+struct som_entity *som_entity_clone (struct som_entity *);
+void som_entity_destroy (struct som_entity *);
+
 /* Group styles. */
 enum
   {
@@ -59,8 +64,8 @@ enum
 /* Cumulation types. */
 enum
   {
-    SOM_ROWS, SOM_ROW = SOM_ROWS,      /* Rows. */
-    SOM_COLUMNS, SOM_COLUMN = SOM_COLUMNS      /* Columns. */
+    SOM_ROWS,                   /* Rows. */
+    SOM_COLUMNS                 /* Columns. */
   };
 
 /* Flags. */
@@ -75,34 +80,29 @@ enum
 struct outp_driver;
 struct som_table_class
   {
-    /* Set table, driver. */
-    void (*table) (struct som_entity *);
-    void (*driver) (struct outp_driver *);
-
-    /* Query columns and rows. */
-    void (*count) (int *n_columns, int *n_rows);
-    void (*area) (int *horiz, int *vert);
-    void (*columns) (int *style);
-    void (*headers) (int *l, int *r, int *t, int *b);
-    void (*cumulate) (int cumtype, int start, int *end, int max, int *actual);
-    void (*flags) (unsigned *);
-    bool (*fits_width) (int width);
-    bool (*fits_length) (int length);
-
-    /* Set columns and rows. */
-    void (*set_headers) (int l, int r, int t, int b);
-
-    /* Rendering. */
-    void (*title) (int x, int y);
-    void (*render) (int x1, int y1, int x2, int y2);
+    /* Operations on tables. */
+    void (*count) (struct som_entity *, int *n_columns, int *n_rows);
+    void (*columns) (struct som_entity *, int *style);
+    void (*headers) (struct som_entity *, int *l, int *r, int *t, int *b);
+    void (*flags) (struct som_entity *, unsigned *);
+
+    /* Creating and freeing driver-specific table rendering data. */
+    void *(*render_init) (struct som_entity *, struct outp_driver *,
+                          int l, int r, int t, int b);
+    void (*render_free) (void *);
+
+    /* Rendering operations. */
+    void (*area) (void *, int *horiz, int *vert);
+    void (*cumulate) (void *, int cumtype, int start, int *end,
+                      int max, int *actual);
+    void (*title) (void *, int x, int y, int table_num, int subtable_num,
+                   const char *command_name);
+    void (*render) (void *, int x1, int y1, int x2, int y2);
   };
 
-/* Table indexes. */
-extern int table_num;
-extern int subtable_num;
-
 /* Submission. */
 void som_new_series (void);
+void som_set_command_name (const char *);
 void som_submit (struct som_entity *t);
 
 /* Miscellaneous. */