table-provider: Remove "const" from struct table_cell members.
[pspp] / src / output / pivot-table.h
index 99fbdb295df000b4cfb50b05dcd084eb2478efd8..56ca865a2d3e4eac589b36b56e5ab1bdb2117d57 100644 (file)
@@ -60,15 +60,11 @@ union value;
    Creating a pivot table usually consists of the following steps:
 
    1. Create the table with pivot_table_create(), passing in the title.
-      It's commonly useful to set up a few options at this point:
 
-      - If empty rows or columns should not be displayed, set ->omit_empty to
-        true.
+   2. Optionally, set the format to use for "count" values with
+      pivot_table_set_weight_var() or pivot_table_set_weight_format().
 
-      - Set the format to use for "count" values with
-        pivot_table_set_weight_var() or pivot_table_set_weight_format().
-
-   2. Create each dimension with pivot_dimension_create() and populate it with
+   3. Create each dimension with pivot_dimension_create() and populate it with
       categories and, possibly, with groups that contain the categories.  This
       call also assigns the dimension to an axis.
 
@@ -81,14 +77,14 @@ union value;
       first cell for that variable.  In that case, creating categories and
       inserting data can be interleaved.
 
-   3. Insert data.  For each cell, supply the category indexes, which are
+   4. Insert data.  For each cell, supply the category indexes, which are
       assigned starting from 0 in the order in which the categories were
       created in step 2, and the value to go in the cell.  If the table has a
       small, fixed number of dimensions, functions like, e.g.
       pivot_table_put3() for 3 dimensions, can be used.  The general function
       pivot_table_put() works for other cases.
 
-   4. Output the table for user consumption.  Use pivot_table_submit(). */
+   5. Output the table for user consumption.  Use pivot_table_submit(). */
 \f
 /* Pivot table display styling. */
 
@@ -107,7 +103,6 @@ enum pivot_area
   };
 
 const char *pivot_area_to_string (enum pivot_area);
-const struct table_area_style *pivot_area_get_default_style (enum pivot_area);
 
 /* Table borders for styling purposes. */
 enum pivot_border
@@ -146,8 +141,6 @@ enum pivot_border
   };
 
 const char *pivot_border_to_string (enum pivot_border);
-void pivot_border_get_default_style (enum pivot_border,
-                                     struct table_border_style *);
 
 /* Sizing for rows or columns of a rendered table.  The comments below talk
    about columns and their widths but they apply equally to rows and their
@@ -376,6 +369,11 @@ bool pivot_result_class_change (const char *, const struct fmt_spec *);
    because that's how SPSS documentation and file formats do it. */
 struct pivot_table_look
   {
+    /* Reference count.  A pivot_table_look may be shared between multiple
+       owners, indicated by a reference count greater than 1.  When this is the
+       case, the pivot_table must not be modified. */
+    int ref_cnt;
+
     char *name;                 /* May be null. */
 
     /* General properties. */
@@ -400,10 +398,18 @@ struct pivot_table_look
     size_t n_orphan_lines;
   };
 
-void pivot_table_look_init (struct pivot_table_look *);
-void pivot_table_look_uninit (struct pivot_table_look *);
-void pivot_table_look_copy (struct pivot_table_look *,
-                            const struct pivot_table_look *);
+const struct pivot_table_look *pivot_table_look_get_default (void);
+void pivot_table_look_set_default (const struct pivot_table_look *);
+
+char *pivot_table_look_read (const char *, struct pivot_table_look **)
+  WARN_UNUSED_RESULT;
+
+const struct pivot_table_look *pivot_table_look_builtin_default (void);
+struct pivot_table_look *pivot_table_look_new_builtin_default (void);
+struct pivot_table_look *pivot_table_look_ref (
+  const struct pivot_table_look *);
+void pivot_table_look_unref (struct pivot_table_look *);
+struct pivot_table_look *pivot_table_look_unshare (struct pivot_table_look *);
 \f
 /* A pivot table.  See the top of this file for more information. */
 struct pivot_table
@@ -414,14 +420,15 @@ struct pivot_table
     int ref_cnt;
 
     /* Styling. */
-    struct pivot_table_look look;
+    struct pivot_table_look *look;
 
     /* Display settings. */
     bool rotate_inner_column_labels;
     bool rotate_outer_row_labels;
     bool show_grid_lines;
+    bool show_title;
     bool show_caption;
-    size_t *current_layer; /* axis[PIVOT_AXIS_LAYER].n_dimensions elements. */
+    size_t *current_layer; /* axes[PIVOT_AXIS_LAYER].n_dimensions elements. */
     enum settings_value_show show_values;
     enum settings_value_show show_variables;
     struct fmt_spec weight_format;
@@ -457,7 +464,7 @@ struct pivot_table
     struct pivot_value *subtype;  /* Same as spv_item's subtype. */
     struct pivot_value *corner_text;
     struct pivot_value *caption;
-    char *notes;
+    char *notes;                /* Shown as tooltip. */
 
     /* Dimensions. */
     struct pivot_dimension **dimensions;
@@ -628,8 +635,6 @@ struct pivot_value
     char **subscripts;
     size_t n_subscripts;
 
-    char *superscript;
-
     const struct pivot_footnote **footnotes;
     size_t n_footnotes;