X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Foutput%2Ftable.c;h=31348a46a70d53b32aa6c3e7fdd8cd9bb2c5eea4;hb=8a6611e7e3bbba8be61cd35f8701f50d6e255e44;hp=b1707a84d875dfb633f87c8736ad70eb507fa0ca;hpb=425a1cb12b530fed2936815d5424092c2cb4dfcf;p=pspp diff --git a/src/output/table.c b/src/output/table.c index b1707a84d8..31348a46a7 100644 --- a/src/output/table.c +++ b/src/output/table.c @@ -176,7 +176,7 @@ struct table * table_from_string (const char *text) { struct table *t = table_create (1, 1, 0, 0, 0, 0); - t->styles[0] = xmalloc (sizeof *t->styles[0]); + t->styles[0] = pool_alloc (t->container, sizeof *t->styles[0]); *t->styles[0] = (struct area_style) { AREA_STYLE_INITIALIZER__, .cell_style.halign = TABLE_HALIGN_LEFT, @@ -580,14 +580,11 @@ add_joined_cell (struct table *table, int x1, int y1, int x2, int y2, x1, y1, x2, y2); struct table_cell *cell = pool_alloc (table->container, sizeof *cell); - cell->d[TABLE_HORZ][0] = x1; - cell->d[TABLE_VERT][0] = y1; - cell->d[TABLE_HORZ][1] = ++x2; - cell->d[TABLE_VERT][1] = ++y2; - cell->options = opt; - cell->footnotes = NULL; - cell->n_footnotes = 0; - cell->style = NULL; + *cell = (struct table_cell) { + .d = { [TABLE_HORZ] = { x1, ++x2 }, + [TABLE_VERT] = { y1, ++y2 } }, + .options = opt, + }; void **cc = &table->cc[x1 + y1 * table_nc (table)]; unsigned short *ct = &table->ct[x1 + y1 * table_nc (table)]; @@ -639,6 +636,29 @@ get_joined_cell (struct table *table, int x, int y) return cell; } +/* Sets the subscripts for column X, row Y in TABLE. */ +void +table_add_subscripts (struct table *table, int x, int y, + char **subscripts, size_t n_subscripts) +{ + struct table_cell *cell = get_joined_cell (table, x, y); + + cell->n_subscripts = n_subscripts; + cell->subscripts = pool_nalloc (table->container, n_subscripts, + sizeof *cell->subscripts); + for (size_t i = 0; i < n_subscripts; i++) + cell->subscripts[i] = pool_strdup (table->container, subscripts[i]); +} + +/* Sets the superscript for column X, row Y in TABLE. */ +void +table_add_superscript (struct table *table, int x, int y, + const char *superscript) +{ + get_joined_cell (table, x, y)->superscript + = pool_strdup (table->container, superscript); +} + /* Create a footnote in TABLE with MARKER (e.g. "a") as its marker and CONTENT as its content. The footnote will be styled as STYLE, which is mandatory. IDX must uniquely identify the footnote within TABLE.