=================================================================== RCS file: /cvs/docbook2mdoc/macro.h,v retrieving revision 1.1 retrieving revision 1.5 diff -u -p -r1.1 -r1.5 --- docbook2mdoc/macro.h 2019/03/26 19:17:29 1.1 +++ docbook2mdoc/macro.h 2019/04/16 14:26:27 1.5 @@ -1,4 +1,4 @@ -/* $Id: macro.h,v 1.1 2019/03/26 19:17:29 schwarze Exp $ */ +/* $Id: macro.h,v 1.5 2019/04/16 14:26:27 schwarze Exp $ */ /* * Copyright (c) 2019 Ingo Schwarze * @@ -26,9 +26,21 @@ enum linestate { LINE_MACRO /* In the middle of a macro line. */ }; +enum parastate { + PARA_HAVE, /* Just printed .Pp or equivalent. */ + PARA_MID, /* In the middle of a paragraph. */ + PARA_WANT /* Need .Pp before printing anything else. */ +}; + struct format { int level; /* Header level, starting at 1. */ + int flags; +#define FMT_NOSPC (1 << 0) /* Suppress space before next node. */ +#define FMT_ARG (1 << 1) /* May add argument to current macro. */ +#define FMT_CHILD (1 << 2) /* Expect a single child macro. */ +#define FMT_IMPL (1 << 3) /* Partial implicit block is open. */ enum linestate linestate; + enum parastate parastate; }; #define ARG_SPACE 1 /* Insert whitespace before this argument. */ @@ -40,9 +52,11 @@ struct format { void macro_open(struct format *, const char *); void macro_close(struct format *); void macro_line(struct format *, const char *); -void macro_closepunct(struct format *, struct pnode *); void macro_addarg(struct format *, const char *, int); void macro_argline(struct format *, const char *, const char *); void macro_addnode(struct format *, struct pnode *, int); void macro_nodeline(struct format *, const char *, struct pnode *, int); + +void print_text(struct format *, const char *, int); +void print_textnode(struct format *, struct pnode *);