=================================================================== RCS file: /cvs/mandoc/mandoc.h,v retrieving revision 1.185 retrieving revision 1.193 diff -u -p -r1.185 -r1.193 --- mandoc/mandoc.h 2015/01/22 21:38:16 1.185 +++ mandoc/mandoc.h 2015/01/30 04:11:50 1.193 @@ -1,4 +1,4 @@ -/* $Id: mandoc.h,v 1.185 2015/01/22 21:38:16 schwarze Exp $ */ +/* $Id: mandoc.h,v 1.193 2015/01/30 04:11:50 schwarze Exp $ */ /* * Copyright (c) 2010, 2011, 2014 Kristaps Dzonsons * Copyright (c) 2010-2015 Ingo Schwarze @@ -127,20 +127,25 @@ enum mandocerr { MANDOCERR_ESC_BAD, /* invalid escape sequence: esc */ MANDOCERR_STR_UNDEF, /* undefined string, using "": name */ + /* related to tables */ + MANDOCERR_TBLLAYOUT_SPAN, /* tbl line starts with span */ + MANDOCERR_TBLLAYOUT_DOWN, /* tbl column starts with span */ + MANDOCERR_TBLLAYOUT_VERT, /* skipping vertical bar in tbl layout */ + MANDOCERR_ERROR, /* ===== start of errors ===== */ - /* related to equations */ - MANDOCERR_EQNNSCOPE, /* unexpected equation scope closure*/ - MANDOCERR_EQNSCOPE, /* equation scope open on exit */ - MANDOCERR_EQNBADSCOPE, /* overlapping equation scopes */ - MANDOCERR_EQNEOF, /* unexpected end of equation */ - /* related to tables */ - MANDOCERR_TBLNOLAYOUT, /* no table layout cells specified */ - MANDOCERR_TBLNODATA, /* no table data cells specified */ - MANDOCERR_TBLIGNDATA, /* ignore data in cell */ - MANDOCERR_TBLBLOCK, /* data block still open */ - MANDOCERR_TBLEXTRADAT, /* ignoring extra data cells */ + MANDOCERR_TBLOPT_ALPHA, /* non-alphabetic character in tbl options */ + MANDOCERR_TBLOPT_BAD, /* skipping unknown tbl option: option */ + MANDOCERR_TBLOPT_NOARG, /* missing tbl option argument: option */ + MANDOCERR_TBLOPT_ARGSZ, /* wrong tbl option argument size: option */ + MANDOCERR_TBLLAYOUT_NONE, /* empty tbl layout */ + MANDOCERR_TBLLAYOUT_CHAR, /* invalid character in tbl layout: char */ + MANDOCERR_TBLLAYOUT_PAR, /* unmatched parenthesis in tbl layout */ + MANDOCERR_TBLDATA_NONE, /* tbl without any data cells */ + MANDOCERR_TBLDATA_SPAN, /* ignoring data in spanned tbl cell: data */ + MANDOCERR_TBLDATA_EXTRA, /* ignoring extra tbl data cells: data */ + MANDOCERR_TBLDATA_BLK, /* data block open at end of tbl: macro */ /* related to document structure and macros */ MANDOCERR_FILE, /* cannot open file */ @@ -151,6 +156,7 @@ enum mandocerr { MANDOCERR_IT_STRAY, /* skipping item outside list: It ... */ MANDOCERR_TA_STRAY, /* skipping column outside column list: Ta */ MANDOCERR_BLK_NOTOPEN, /* skipping end of block that is not open */ + MANDOCERR_RE_NOTOPEN, /* fewer RS blocks open, skipping: RE arg */ MANDOCERR_BLK_BROKEN, /* inserting missing end of block: macro ... */ MANDOCERR_BLK_NOEND, /* appending missing end of block: macro */ @@ -174,9 +180,8 @@ enum mandocerr { MANDOCERR_TOOLARGE, /* input too large */ MANDOCERR_CHAR_UNSUPP, /* unsupported control character: number */ MANDOCERR_REQ_UNSUPP, /* unsupported roff request: request */ - MANDOCERR_TBL, /* unsupported table syntax */ - MANDOCERR_TBLOPT, /* unsupported table option */ - MANDOCERR_TBLLAYOUT, /* unsupported table layout */ + MANDOCERR_TBLOPT_EQN, /* eqn delim option in tbl: arg */ + MANDOCERR_TBLLAYOUT_MOD, /* unsupported tbl layout modifier: m */ MANDOCERR_TBLMACRO, /* ignoring macro in table: macro */ MANDOCERR_MAX @@ -185,7 +190,6 @@ enum mandocerr { struct tbl_opts { char tab; /* cell-separator */ char decimal; /* decimal point */ - int linesize; int opts; #define TBL_OPT_CENTRE (1 << 0) #define TBL_OPT_EXPAND (1 << 1) @@ -194,21 +198,12 @@ struct tbl_opts { #define TBL_OPT_ALLBOX (1 << 4) #define TBL_OPT_NOKEEP (1 << 5) #define TBL_OPT_NOSPACE (1 << 6) +#define TBL_OPT_NOWARN (1 << 7) int cols; /* number of columns */ + int lvert; /* width of left vertical line */ + int rvert; /* width of right vertical line */ }; -/* - * The head of a table specifies all of its columns. When formatting a - * tbl_span, iterate over these and plug in data from the tbl_span when - * appropriate, using tbl_cell as a guide to placement. - */ -struct tbl_head { - int ident; /* 0 <= unique id < cols */ - int vert; /* width of preceding vertical line */ - struct tbl_head *next; - struct tbl_head *prev; -}; - enum tbl_cellt { TBL_CELL_CENTRE, /* c, C */ TBL_CELL_RIGHT, /* r, R */ @@ -227,9 +222,10 @@ enum tbl_cellt { */ struct tbl_cell { struct tbl_cell *next; - int vert; /* width of preceding vertical line */ + int vert; /* width of subsequent vertical line */ enum tbl_cellt pos; size_t spacing; + int col; /* column number, starting from 0 */ int flags; #define TBL_CELL_TALIGN (1 << 0) /* t, T */ #define TBL_CELL_BALIGN (1 << 1) /* d, D */ @@ -239,7 +235,6 @@ struct tbl_cell { #define TBL_CELL_UP (1 << 5) /* u, U */ #define TBL_CELL_WIGN (1 << 6) /* z, Z */ #define TBL_CELL_WMAX (1 << 7) /* x, X */ - struct tbl_head *head; }; /* @@ -249,7 +244,7 @@ struct tbl_row { struct tbl_row *next; struct tbl_cell *first; struct tbl_cell *last; - int vert; /* trailing vertical line */ + int vert; /* width of left vertical line */ }; enum tbl_datt { @@ -284,16 +279,16 @@ enum tbl_spant { */ struct tbl_span { struct tbl_opts *opts; - struct tbl_head *head; struct tbl_row *layout; /* layout row */ struct tbl_dat *first; struct tbl_dat *last; + struct tbl_span *prev; + struct tbl_span *next; int line; /* parse line */ int flags; #define TBL_SPAN_FIRST (1 << 0) #define TBL_SPAN_LAST (1 << 1) enum tbl_spant pos; - struct tbl_span *next; }; enum eqn_boxt {