summaryrefslogtreecommitdiffstats
path: root/term.h
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2011-01-03 13:59:21 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2011-01-03 13:59:21 +0000
commit37cc2001c18336b17ab1db0fd5b493e86de5619a (patch)
treeb39a648728b8aeb8b18a965cbdb9f87f773bdfd2 /term.h
parent014a5fb27cb61fd91481514f5e11ab50aefdbfdb (diff)
downloadmandoc-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 'term.h')
-rw-r--r--term.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/term.h b/term.h
index 4922cdab..de6bbbaf 100644
--- a/term.h
+++ b/term.h
@@ -71,9 +71,15 @@ struct termp_ps {
size_t pdfobjsz; /* size of pdfobjs */
};
+struct termp_tbl {
+ int width; /* width in fixed chars */
+ int decimal; /* decimal point position */
+};
+
struct termp {
enum termtype type;
- size_t defrmargin; /* Right margin of the device.. */
+ struct termp_tbl *tbl; /* table configuration */
+ size_t defrmargin; /* Right margin of the device. */
size_t rmargin; /* Current right margin. */
size_t maxrmargin; /* Max right margin. */
size_t maxcols; /* Max size of buf. */