=================================================================== RCS file: /cvs/mandoc/roff.h,v retrieving revision 1.32 retrieving revision 1.39 diff -u -p -r1.32 -r1.39 --- mandoc/roff.h 2015/04/18 16:34:25 1.32 +++ mandoc/roff.h 2017/01/10 13:47:00 1.39 @@ -1,7 +1,7 @@ -/* $OpenBSD: roff.h,v 1.32 2015/04/18 16:34:25 schwarze Exp $ */ +/* $Id: roff.h,v 1.39 2017/01/10 13:47:00 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons - * Copyright (c) 2013, 2014, 2015 Ingo Schwarze + * Copyright (c) 2013, 2014, 2015, 2017 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 @@ -93,22 +93,21 @@ struct roff_node { char *string; /* TEXT */ const struct tbl_span *span; /* TBL */ const struct eqn *eqn; /* EQN */ - int nchild; /* Number of child nodes. */ int line; /* Input file line number. */ int pos; /* Input file column number. */ int tok; /* Request or macro ID. */ +#define TOKEN_NONE (-1) /* No request or macro. */ int flags; -#define MDOC_VALID (1 << 0) /* Has been validated. */ -#define MDOC_ENDED (1 << 1) /* Gone past body end mark. */ -#define MDOC_EOS (1 << 2) /* At sentence boundary. */ -#define MDOC_LINE (1 << 3) /* First macro/text on line. */ -#define MDOC_SYNPRETTY (1 << 4) /* SYNOPSIS-style formatting. */ -#define MDOC_BROKEN (1 << 5) /* Must validate parent when ending. */ -#define MDOC_DELIMO (1 << 6) -#define MDOC_DELIMC (1 << 7) -#define MAN_VALID MDOC_VALID -#define MAN_EOS MDOC_EOS -#define MAN_LINE MDOC_LINE +#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_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. */ int prev_font; /* Before entering this node. */ int aux; /* Decoded node data, type-dependent. */ enum roff_type type; /* AST node type. */ @@ -140,8 +139,8 @@ struct roff_man { #define MDOC_LITERAL (1 << 1) /* In a literal scope. */ #define MDOC_PBODY (1 << 2) /* In the document body. */ #define MDOC_NEWLINE (1 << 3) /* First macro/text in a line. */ -#define MDOC_PHRASELIT (1 << 4) /* Literal within a partial phrase. */ -#define MDOC_PPHRASE (1 << 5) /* Within a partial phrase. */ +#define MDOC_PHRASE (1 << 4) /* In a Bl -column phrase. */ +#define MDOC_PHRASELIT (1 << 5) /* Literal within a phrase. */ #define MDOC_FREECOL (1 << 6) /* `It' invocation should close. */ #define MDOC_SYNOPSIS (1 << 7) /* SYNOPSIS-style formatting. */ #define MDOC_KEEP (1 << 8) /* In a word keep. */ @@ -149,6 +148,9 @@ struct roff_man { #define MDOC_NODELIMC (1 << 10) /* Disable closing delimiter handling. */ #define MAN_ELINE (1 << 11) /* Next-line element scope. */ #define MAN_BLINE (1 << 12) /* Next-line block scope. */ +#define MDOC_PHRASEQF (1 << 13) /* Quote first word encountered. */ +#define MDOC_PHRASEQL (1 << 14) /* Quote last word of this phrase. */ +#define MDOC_PHRASEQN (1 << 15) /* Quote first word of the next phrase. */ #define MAN_LITERAL MDOC_LITERAL #define MAN_NEWLINE MDOC_NEWLINE enum roff_macroset macroset; /* Kind of high-level macros used. */ @@ -156,3 +158,6 @@ struct roff_man { enum roff_sec lastnamed; /* Last standard section seen. */ enum roff_next next; /* Where to put the next node. */ }; + + +void deroff(char **, const struct roff_node *);