From: Ben Pfaff Date: Mon, 19 Nov 2018 01:43:56 +0000 (-0800) Subject: tab: Expand space for table options from 8 to 16 bits each. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pspp;a=commitdiff_plain;h=68dffb1e4a3a8f706b61265e1fd81dfe0b5a74d6 tab: Expand space for table options from 8 to 16 bits each. Upcoming commits will need the extra bits. --- diff --git a/src/output/tab.c b/src/output/tab.c index dcd6fe29a2..fe4b27402d 100644 --- a/src/output/tab.c +++ b/src/output/tab.c @@ -95,8 +95,7 @@ tab_create (int nc, int nr) t->caption = NULL; t->cf = nc; t->cc = pool_calloc (t->container, nr * nc, sizeof *t->cc); - t->ct = pool_malloc (t->container, nr * nc); - memset (t->ct, 0, nc * nr); + t->ct = pool_calloc (t->container, nr * nc, sizeof *t->ct); t->rh = pool_nmalloc (t->container, nc, nr + 1); memset (t->rh, TAL_0, nc * (nr + 1)); @@ -173,7 +172,7 @@ tab_realloc (struct tab_table *t, int nc, int nr) int mc1 = MIN (nc, tab_nc (t)); void **new_cc; - unsigned char *new_ct; + unsigned short *new_ct; int r; new_cc = pool_calloc (t->container, nr * nc, sizeof *new_cc); @@ -182,7 +181,8 @@ tab_realloc (struct tab_table *t, int nc, int nr) { memcpy (&new_cc[r * nc], &t->cc[r * tab_nc (t)], mc1 * sizeof *t->cc); - memcpy (&new_ct[r * nc], &t->ct[r * tab_nc (t)], mc1); + memcpy (&new_ct[r * nc], &t->ct[r * tab_nc (t)], + mc1 * sizeof *t->ct); memset (&new_ct[r * nc + tab_nc (t)], 0, nc - tab_nc (t)); } pool_free (t->container, t->cc); @@ -194,7 +194,7 @@ tab_realloc (struct tab_table *t, int nc, int nr) else if (nr != tab_nr (t)) { t->cc = pool_nrealloc (t->container, t->cc, nr * nc, sizeof *t->cc); - t->ct = pool_realloc (t->container, t->ct, nr * nc); + t->ct = pool_nrealloc (t->container, t->ct, nr * nc, sizeof *t->ct); t->rh = pool_nrealloc (t->container, t->rh, nc, nr + 1); t->rv = pool_nrealloc (t->container, t->rv, nr, nc + 1); @@ -208,7 +208,7 @@ tab_realloc (struct tab_table *t, int nc, int nr) } } - memset (&t->ct[nc * tab_nr (t)], 0, nc * (nr - tab_nr (t))); + memset (&t->ct[nc * tab_nr (t)], 0, nc * (nr - tab_nr (t)) * sizeof *t->ct); memset (&t->cc[nc * tab_nr (t)], 0, nc * (nr - tab_nr (t)) * sizeof *t->cc); table_set_nr (&t->table, nr); @@ -398,7 +398,7 @@ tab_box (struct tab_table *t, int f_h, int f_v, int i_h, int i_v, /* Sets cell (C,R) in TABLE, with options OPT, to have a value taken from V, displayed with format spec F. */ void -tab_value (struct tab_table *table, int c, int r, unsigned char opt, +tab_value (struct tab_table *table, int c, int r, unsigned short opt, const union value *v, const struct variable *var, const struct fmt_spec *f) { @@ -432,7 +432,7 @@ tab_value (struct tab_table *table, int c, int r, unsigned char opt, If FMT is null, then the default print format will be used. */ void -tab_double (struct tab_table *table, int c, int r, unsigned char opt, +tab_double (struct tab_table *table, int c, int r, unsigned short opt, double val, const struct fmt_spec *fmt, enum result_class rc) { union value double_value; @@ -563,7 +563,7 @@ add_joined_cell (struct tab_table *table, int x1, int y1, int x2, int y2, { void **cc = &table->cc[x1 + y1 * table->cf]; - unsigned char *ct = &table->ct[x1 + y1 * table->cf]; + unsigned short *ct = &table->ct[x1 + y1 * table->cf]; const int ofs = table->cf - (x2 - x1); int y; @@ -632,7 +632,7 @@ tab_add_footnote (struct tab_table *table, int x, int y, const struct footnote *f) { int index = x + y * table->cf; - unsigned char opt = table->ct[index]; + unsigned short opt = table->ct[index]; struct tab_joined_cell *j; if (opt & TAB_JOIN) @@ -786,7 +786,7 @@ tab_get_cell (const struct table *table, int x, int y, { const struct tab_table *t = tab_cast (table); int index = x + y * t->cf; - unsigned char opt = t->ct[index]; + unsigned short opt = t->ct[index]; const void *cc = t->cc[index]; cell->inline_contents.options = opt; diff --git a/src/output/tab.h b/src/output/tab.h index 00d8fab93c..4bf7816fad 100644 --- a/src/output/tab.h +++ b/src/output/tab.h @@ -68,7 +68,7 @@ struct tab_table however, it is a joined cell and the corresponding element of cc[] points to a struct tab_joined_cell. */ void **cc; /* Cell contents; void *[nr][nc]. */ - unsigned char *ct; /* Cell types; unsigned char[nr][nc]. */ + unsigned short *ct; /* Cell types; unsigned short[nr][nc]. */ /* Rules. */ unsigned char *rh; /* Horiz rules; unsigned char[nr+1][nc]. */ @@ -125,11 +125,11 @@ void tab_set_format (struct tab_table *, enum result_class, const struct fmt_spe struct fmt_spec; struct dictionary; union value; -void tab_value (struct tab_table *, int c, int r, unsigned char opt, +void tab_value (struct tab_table *, int c, int r, unsigned short opt, const union value *, const struct variable *, const struct fmt_spec *); -void tab_double (struct tab_table *, int c, int r, unsigned char opt, +void tab_double (struct tab_table *, int c, int r, unsigned short opt, double v, const struct fmt_spec *, enum result_class ); void tab_text (struct tab_table *, int c, int r, unsigned opt, const char *);