=================================================================== RCS file: /cvs/docbook2mdoc/node.h,v retrieving revision 1.19 retrieving revision 1.20 diff -u -p -r1.19 -r1.20 --- docbook2mdoc/node.h 2019/04/12 11:37:09 1.19 +++ docbook2mdoc/node.h 2019/04/12 16:40:53 1.20 @@ -1,4 +1,4 @@ -/* $Id: node.h,v 1.19 2019/04/12 11:37:09 schwarze Exp $ */ +/* $Id: node.h,v 1.20 2019/04/12 16:40:53 schwarze Exp $ */ /* * Copyright (c) 2014 Kristaps Dzonsons * Copyright (c) 2019 Ingo Schwarze @@ -22,14 +22,23 @@ */ /* + * How the output from each node behaves + * with respect to mdoc(7) structure. + */ +enum nodeclass { + CLASS_VOID = 0, /* No output at all, children are skipped. */ + CLASS_TEXT, /* Node prints only text, no macros. */ + CLASS_TRANS, /* Transparent: only the children are shown. */ + CLASS_LINE, /* Generates only simple in-line macros. */ + CLASS_ENCL, /* Explicit or implicit partial blocks. */ + CLASS_BLOCK /* Output linebreak before and after. */ +}; + +/* * All node types used for formatting purposes. * More DocBook XML elements are recognized, but remapped or discarded. */ enum nodeid { - NODE_DELETE_WARN, - NODE_DELETE, - NODE_IGNORE, - /* Alpha-ordered hereafter. */ NODE_AFFILIATION, NODE_APPENDIX, NODE_APPLICATION, @@ -56,7 +65,6 @@ enum nodeid { NODE_ENTRY, NODE_ENVAR, NODE_ERRORNAME, - NODE_ESCAPE, NODE_FIELDSYNOPSIS, NODE_FILENAME, NODE_FIRSTTERM, @@ -131,21 +139,24 @@ enum nodeid { NODE_TABLE, NODE_TBODY, NODE_TERM, - NODE_TEXT, NODE_TFOOT, NODE_TGROUP, NODE_THEAD, NODE_TIP, NODE_TITLE, NODE_TYPE, - NODE_ULINK, NODE_VARIABLELIST, NODE_VARLISTENTRY, NODE_VARNAME, NODE_WARNING, NODE_WORDASWORD, NODE_YEAR, - NODE__MAX + NODE_UNKNOWN, + NODE_TEXT, + NODE_ESCAPE, + NODE_IGNORE, + NODE_DELETE, + NODE_DELETE_WARN }; /* @@ -228,6 +239,10 @@ struct ptree { enum attrkey attrkey_parse(const char *); enum attrval attrval_parse(const char *); +enum nodeid pnode_parse(const char *name); +const char *pnode_name(enum nodeid); +enum nodeclass pnode_class(enum nodeid); + struct pnode *pnode_alloc(struct pnode *); void pnode_unlink(struct pnode *); void pnode_unlinksub(struct pnode *);