X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Foutput%2Fpivot-table.h;h=377579a013d356b3f5feb4cea5959381be201ae8;hb=81dece3642da9bdcbdec4aa09b0c2008c86d6161;hp=44fa757bc63f7dda8daa9064ddc231971ebd8878;hpb=9bd8bde378997bf189e6aceffe3da5d321d0a837;p=pspp diff --git a/src/output/pivot-table.h b/src/output/pivot-table.h index 44fa757bc6..377579a013 100644 --- a/src/output/pivot-table.h +++ b/src/output/pivot-table.h @@ -107,6 +107,7 @@ enum pivot_area }; const char *pivot_area_to_string (enum pivot_area); +const struct area_style *pivot_area_get_default_style (enum pivot_area); /* Table borders for styling purposes. */ enum pivot_border @@ -145,6 +146,8 @@ 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 @@ -218,7 +221,7 @@ struct pivot_axis breaks out of the loop prematurely, it needs to free it with free(). */ #define PIVOT_AXIS_FOR_EACH(INDEXES, AXIS) \ for ((INDEXES) = NULL; \ - ((INDEXES) = pivot_axis_iterator_next (INDEXES, AXIS)) != NULL; ) + ((INDEXES) = pivot_axis_iterator_next (INDEXES, AXIS)) != NULL;) size_t *pivot_axis_iterator_next (size_t *indexes, const struct pivot_axis *); /* Dimensions. @@ -372,11 +375,17 @@ bool pivot_result_class_change (const char *, const struct fmt_spec *); /* A pivot table. See the top of this file for more information. */ struct pivot_table { + /* Reference count. A pivot_table 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; + /* Display settings. */ bool rotate_inner_column_labels; bool rotate_outer_row_labels; bool row_labels_in_corner; bool show_grid_lines; + bool show_caption; bool omit_empty; /* Omit empty rows and columns? */ size_t *current_layer; /* axis[PIVOT_AXIS_LAYER].n_dimensions elements. */ char *table_look; @@ -419,12 +428,12 @@ struct pivot_table time_t date; /* May be 0 if unknown. */ /* Footnotes. */ - const struct pivot_footnote **footnotes; + struct pivot_footnote **footnotes; size_t n_footnotes, allocated_footnotes; /* Titles. */ struct pivot_value *title; - struct pivot_value *subtype; /* Same as pivot_item's subtype. */ + struct pivot_value *subtype; /* Same as spv_item's subtype. */ struct pivot_value *corner_text; struct pivot_value *caption; char *notes; @@ -445,10 +454,14 @@ struct pivot_table /* Creating and destroy pivot tables. */ struct pivot_table *pivot_table_create (const char *title); -struct pivot_table *pivot_table_create__ (struct pivot_value *title); +struct pivot_table *pivot_table_create__ (struct pivot_value *title, + const char *subtype); struct pivot_table *pivot_table_create_for_text (struct pivot_value *title, struct pivot_value *content); -void pivot_table_destroy (struct pivot_table *); + +struct pivot_table *pivot_table_ref (const struct pivot_table *); +void pivot_table_unref (struct pivot_table *); +bool pivot_table_is_shared (const struct pivot_table *); /* Format of PIVOT_RC_COUNT cells. */ void pivot_table_set_weight_var (struct pivot_table *, @@ -489,6 +502,7 @@ struct pivot_footnote size_t idx; struct pivot_value *content; struct pivot_value *marker; + bool show; }; struct pivot_footnote *pivot_table_create_footnote ( @@ -587,7 +601,10 @@ struct pivot_value { struct font_style *font_style; struct cell_style *cell_style; - char *subscript; + + char **subscripts; + size_t n_subscripts; + char *superscript; const struct pivot_footnote **footnotes; @@ -640,7 +657,8 @@ struct pivot_value /* PIVOT_VALUE_TEMPLATE. */ struct { - char *s; + char *local; /* Localized. */ + char *id; /* Identifier. */ struct pivot_argument *args; size_t n_args; } @@ -694,7 +712,8 @@ void pivot_value_destroy (struct pivot_value *); /* Styling. */ void pivot_value_get_style (struct pivot_value *, - const struct area_style *default_style, + const struct font_style *base_font_style, + const struct cell_style *base_cell_style, struct area_style *); void pivot_value_set_style (struct pivot_value *, const struct area_style *); @@ -706,5 +725,13 @@ struct pivot_argument }; void pivot_argument_uninit (struct pivot_argument *); + +/* One piece of data within a pivot table. */ +struct pivot_cell + { + struct hmap_node hmap_node; /* In struct pivot_table's 'cells' hmap. */ + struct pivot_value *value; + unsigned int idx[]; /* One index per table dimension. */ + }; #endif /* output/pivot-table.h */