From 49e1f5cf487fd2c297036e1873f357463817c13d Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Mon, 3 Jan 2011 13:59:21 +0000 Subject: 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. --- mandoc.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'mandoc.h') diff --git a/mandoc.h b/mandoc.h index 4b857db5..c828ba94 100644 --- a/mandoc.h +++ b/mandoc.h @@ -1,4 +1,4 @@ -/* $Id: mandoc.h,v 1.44 2011/01/02 12:04:23 kristaps Exp $ */ +/* $Id: mandoc.h,v 1.45 2011/01/03 13:59:21 kristaps Exp $ */ /* * Copyright (c) 2010 Kristaps Dzonsons * @@ -149,7 +149,7 @@ struct tbl { char tab; /* cell-separator */ char decimal; /* decimal point */ int linesize; - char delims[2]; + char delims[2]; /* FIXME: deprecate */ int opts; #define TBL_OPT_CENTRE (1 << 0) #define TBL_OPT_EXPAND (1 << 1) @@ -158,6 +158,7 @@ struct tbl { #define TBL_OPT_ALLBOX (1 << 4) #define TBL_OPT_NOKEEP (1 << 5) #define TBL_OPT_NOSPACE (1 << 6) + int cols; /* number of columns */ }; enum tbl_headt { @@ -173,8 +174,7 @@ enum tbl_headt { */ struct tbl_head { enum tbl_headt pos; - int width; /* width of cell in fixed chars */ - int decimal; /* decimal point position */ + int ident; /* 0 <= unique id < cols */ struct tbl_head *next; struct tbl_head *prev; }; -- cgit v1.2.3-56-ge451