=================================================================== RCS file: /cvs/mandoc/roff.h,v retrieving revision 1.67 retrieving revision 1.76 diff -u -p -r1.67 -r1.76 --- mandoc/roff.h 2018/12/31 07:08:12 1.67 +++ mandoc/roff.h 2023/10/24 20:53:12 1.76 @@ -1,7 +1,7 @@ -/* $Id: roff.h,v 1.67 2018/12/31 07:08:12 schwarze Exp $ */ +/* $Id: roff.h,v 1.76 2023/10/24 20:53:12 schwarze Exp $ */ /* + * Copyright (c) 2013-2015,2017-2020,2022 Ingo Schwarze * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons - * 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 @@ -71,7 +71,7 @@ enum roff_type { }; enum roff_tok { - ROFF_br = 0, + ROFF_br = 0, /* Beginning of roff(7) requests. */ ROFF_ce, ROFF_fi, ROFF_ft, @@ -83,8 +83,8 @@ enum roff_tok { ROFF_sp, ROFF_ta, ROFF_ti, - ROFF_MAX, - ROFF_ab, + ROFF_MAX, /* End of requests that generate nodes. */ + ROFF_ab, /* Requests only used during preprocessing. */ ROFF_ad, ROFF_af, ROFF_aln, @@ -313,11 +313,11 @@ enum roff_tok { ROFF_writec, ROFF_writem, ROFF_xflag, - ROFF_cblock, - ROFF_RENAMED, - ROFF_USERDEF, - TOKEN_NONE, - MDOC_Dd, + ROFF_cblock, /* Block end marker "..". */ + ROFF_RENAMED, /* New name of a renamed request or macro. */ + ROFF_USERDEF, /* User defined macro. */ + TOKEN_NONE, /* Undefined macro or text/tbl/eqn/comment node. */ + MDOC_Dd, /* Beginning of mdoc(7) macros. */ MDOC_Dt, MDOC_Os, MDOC_Sh, @@ -437,8 +437,9 @@ enum roff_tok { MDOC__Q, MDOC__U, MDOC_Ta, - MDOC_MAX, - MAN_TH, + MDOC_Tg, + MDOC_MAX, /* End of mdoc(7) macros. */ + MAN_TH, /* Beginning of man(7) macros. */ MAN_SH, MAN_SS, MAN_TP, @@ -475,7 +476,8 @@ enum roff_tok { MAN_UE, MAN_MT, MAN_ME, - MAN_MAX + MAN_MR, + MAN_MAX /* End of man(7) macros. */ }; /* @@ -505,6 +507,7 @@ struct roff_node { struct mdoc_arg *args; /* BLOCK/ELEM */ union mdoc_data *norm; /* Normalized arguments. */ char *string; /* TEXT */ + char *tag; /* For less(1) :t and HTML id=. */ struct tbl_span *span; /* TBL */ struct eqn_box *eqn; /* EQN */ int line; /* Input file line number. */ @@ -512,14 +515,17 @@ struct roff_node { int flags; #define NODE_VALID (1 << 0) /* Has been validated. */ #define NODE_ENDED (1 << 1) /* Gone past body end mark. */ -#define NODE_EOS (1 << 2) /* At sentence boundary. */ +#define NODE_BROKEN (1 << 2) /* Must validate parent when ending. */ #define NODE_LINE (1 << 3) /* First macro/text on line. */ -#define NODE_SYNPRETTY (1 << 4) /* SYNOPSIS-style formatting. */ -#define NODE_BROKEN (1 << 5) /* Must validate parent when ending. */ -#define NODE_DELIMO (1 << 6) -#define NODE_DELIMC (1 << 7) -#define NODE_NOSRC (1 << 8) /* Generated node, not in input file. */ -#define NODE_NOPRT (1 << 9) /* Shall not print anything. */ +#define NODE_DELIMO (1 << 4) +#define NODE_DELIMC (1 << 5) +#define NODE_EOS (1 << 6) /* At sentence boundary. */ +#define NODE_SYNPRETTY (1 << 7) /* SYNOPSIS-style formatting. */ +#define NODE_NOFILL (1 << 8) /* Fill mode switched off. */ +#define NODE_NOSRC (1 << 9) /* Generated node, not in input file. */ +#define NODE_NOPRT (1 << 10) /* Shall not print anything. */ +#define NODE_ID (1 << 11) /* Target for deep linking. */ +#define NODE_HREF (1 << 12) /* Link to another place in this page. */ int prev_font; /* Before entering this node. */ int aux; /* Decoded node data, type-dependent. */ enum roff_tok tok; /* Request or macro ID. */ @@ -547,4 +553,10 @@ struct roff_meta { extern const char *const *roff_name; -void deroff(char **, const struct roff_node *); +int arch_valid(const char *, enum mandoc_os); +void deroff(char **, const struct roff_node *); +struct roff_node *roff_node_child(struct roff_node *); +struct roff_node *roff_node_next(struct roff_node *); +struct roff_node *roff_node_prev(struct roff_node *); +int roff_node_transparent(struct roff_node *); +int roff_tok_transparent(enum roff_tok);