=================================================================== RCS file: /cvs/mandoc/roff.h,v retrieving revision 1.52 retrieving revision 1.65 diff -u -p -r1.52 -r1.65 --- mandoc/roff.h 2017/06/07 23:29:49 1.52 +++ mandoc/roff.h 2018/12/14 06:33:14 1.65 @@ -1,7 +1,7 @@ -/* $Id: roff.h,v 1.52 2017/06/07 23:29:49 schwarze Exp $ */ +/* $Id: roff.h,v 1.65 2018/12/14 06:33:14 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons - * Copyright (c) 2013, 2014, 2015, 2017 Ingo Schwarze + * Copyright (c) 2013,2014,2015,2017,2018 Ingo Schwarze * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -14,6 +14,8 @@ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Common data types for all syntax trees and related functions. */ struct ohash; @@ -26,12 +28,6 @@ enum roff_macroset { MACROSET_MAN }; -enum mdoc_os { - MDOC_OS_OTHER = 0, - MDOC_OS_NETBSD, - MDOC_OS_OPENBSD -}; - enum roff_sec { SEC_NONE = 0, SEC_NAME, @@ -67,6 +63,7 @@ enum roff_type { ROFFT_TAIL, ROFFT_ELEM, ROFFT_TEXT, + ROFFT_COMMENT, ROFFT_TBL, ROFFT_EQN }; @@ -77,6 +74,8 @@ enum roff_tok { ROFF_ft, ROFF_ll, ROFF_mc, + ROFF_po, + ROFF_rj, ROFF_sp, ROFF_ta, ROFF_ti, @@ -244,7 +243,6 @@ enum roff_tok { ROFF_pm, ROFF_pn, ROFF_pnr, - ROFF_po, ROFF_ps, ROFF_psbb, ROFF_pshape, @@ -257,7 +255,6 @@ enum roff_tok { ROFF_return, ROFF_rfschar, ROFF_rhang, - ROFF_rj, ROFF_rm, ROFF_rn, ROFF_rnn, @@ -443,6 +440,7 @@ enum roff_tok { MAN_SH, MAN_SS, MAN_TP, + MAN_TQ, MAN_LP, MAN_PP, MAN_P, @@ -468,11 +466,15 @@ enum roff_tok { MAN_PD, MAN_AT, MAN_in, + MAN_SY, + MAN_YS, MAN_OP, MAN_EX, MAN_EE, MAN_UR, MAN_UE, + MAN_MT, + MAN_ME, MAN_MAX }; @@ -490,6 +492,12 @@ enum mdoc_endbody { ENDBODY_SPACE /* Is broken: append a space. */ }; +enum mandoc_os { + MANDOC_OS_OTHER = 0, + MANDOC_OS_NETBSD, + MANDOC_OS_OPENBSD +}; + struct roff_node { struct roff_node *parent; /* Parent AST node. */ struct roff_node *child; /* First child AST node. */ @@ -502,8 +510,8 @@ struct roff_node { struct mdoc_arg *args; /* BLOCK/ELEM */ union mdoc_data *norm; /* Normalized arguments. */ char *string; /* TEXT */ - const struct tbl_span *span; /* TBL */ - const struct eqn *eqn; /* EQN */ + struct tbl_span *span; /* TBL */ + struct eqn_box *eqn; /* EQN */ int line; /* Input file line number. */ int pos; /* Input file column number. */ int flags; @@ -534,16 +542,16 @@ struct roff_meta { char *name; /* Leading manual name. */ char *date; /* Normalized date. */ int hasbody; /* Document is not empty. */ - enum mdoc_os os_e; /* Operating system. */ + int rcsids; /* Bits indexed by enum mandoc_os. */ + enum mandoc_os os_e; /* Operating system. */ }; struct roff_man { struct roff_meta meta; /* Document meta-data. */ - struct mparse *parse; /* Parse pointer. */ struct roff *roff; /* Roff parser state data. */ struct ohash *mdocmac; /* Mdoc macro lookup table. */ struct ohash *manmac; /* Man macro lookup table. */ - const char *defos; /* Default operating system. */ + const char *os_s; /* Default operating system. */ struct roff_node *first; /* The first node parsed. */ struct roff_node *last; /* The last node parsed. */ struct roff_node *last_es; /* The most recent Es node. */ @@ -576,7 +584,4 @@ extern const char *const *roff_name; void deroff(char **, const struct roff_node *); -struct ohash *roffhash_alloc(enum roff_tok, enum roff_tok); -enum roff_tok roffhash_find(struct ohash *, const char *, size_t); -void roffhash_free(struct ohash *); void roff_validate(struct roff_man *);