diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-01-03 13:59:21 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-01-03 13:59:21 +0000 |
commit | 37cc2001c18336b17ab1db0fd5b493e86de5619a (patch) | |
tree | b39a648728b8aeb8b18a965cbdb9f87f773bdfd2 /tbl_layout.c | |
parent | 014a5fb27cb61fd91481514f5e11ab50aefdbfdb (diff) | |
download | mandoc-37cc2001c18336b17ab1db0fd5b493e86de5619a.tar.gz |
Make width calculations occur within tbl_term.c, not tbl.c. This allows
for front-ends to make decisions about widths, not the back-end.
To pull this off, first make each tbl_head contain a unique index value
(0 <= index < total tbl_head elements) and remove the tbl_calc() routine
from the back-end.
Then, when encountering the first tbl_span in the front-end, dynamically
create an array of configurations (termp_tbl) keyed on each tbl_head's
unique index value. Construct the decimals and widths at this time,
then continue parsing as before.
The termp_tbl and indexes are required because we pass a const tbl AST
into the front-end.
Diffstat (limited to 'tbl_layout.c')
-rw-r--r-- | tbl_layout.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/tbl_layout.c b/tbl_layout.c index 3e3695cd..c630e3a8 100644 --- a/tbl_layout.c +++ b/tbl_layout.c @@ -319,6 +319,7 @@ cell_alloc(struct tbl_node *tbl, struct tbl_row *rp, enum tbl_cellt pos) (TBL_CELL_VERT == p->pos || TBL_CELL_DVERT == p->pos)) { hp = mandoc_calloc(1, sizeof(struct tbl_head)); + hp->ident = tbl->opts.cols++; hp->prev = h->prev; if (h->prev) h->prev->next = hp; @@ -341,6 +342,7 @@ cell_alloc(struct tbl_node *tbl, struct tbl_row *rp, enum tbl_cellt pos) } hp = mandoc_calloc(1, sizeof(struct tbl_head)); + hp->ident = tbl->opts.cols++; if (tbl->last_head) { hp->prev = tbl->last_head; |