=================================================================== RCS file: /cvs/mandoc/mdoc.h,v retrieving revision 1.11 retrieving revision 1.19 diff -u -p -r1.11 -r1.19 --- mandoc/mdoc.h 2009/01/01 20:40:16 1.11 +++ mandoc/mdoc.h 2009/01/12 10:31:53 1.19 @@ -1,4 +1,4 @@ -/* $Id: mdoc.h,v 1.11 2009/01/01 20:40:16 kristaps Exp $ */ +/* $Id: mdoc.h,v 1.19 2009/01/12 10:31:53 kristaps Exp $ */ /* * Copyright (c) 2008 Kristaps Dzonsons * @@ -19,7 +19,7 @@ #ifndef MDOC_H #define MDOC_H -#define MDOC_LINEARG_MAX 8 +#define MDOC_LINEARG_MAX 12 #define MDOC___ 0 #define MDOC_Dd 1 @@ -189,7 +189,9 @@ #define MDOC_svid4 57 #define MDOC_Filled 58 #define MDOC_Words 59 -#define MDOC_ARG_MAX 60 +#define MDOC_Emphasis 60 +#define MDOC_Symbolic 61 +#define MDOC_ARG_MAX 62 enum mdoc_err { ERR_SYNTAX_QUOTE, /* NOTUSED */ @@ -200,6 +202,7 @@ enum mdoc_err { ERR_SYNTAX_ARGFORM, ERR_SYNTAX_ARGVAL, ERR_SYNTAX_ARGBAD, + ERR_SYNTAX_ARGMISS, ERR_SYNTAX_ARGMANY, ERR_MACRO_NOTSUP, ERR_MACRO_NOTCALL, @@ -215,8 +218,14 @@ enum mdoc_err { ERR_ARGS_EQ1, ERR_ARGS_GE1, ERR_ARGS_LE2, + ERR_ARGS_LE8, ERR_ARGS_MANY, - ERR_CHILD_HEAD + ERR_SYNTAX_CHILDBAD, + ERR_SYNTAX_CHILDHEAD, + ERR_SYNTAX_CHILDBODY, + ERR_SYNTAX_EMPTYBODY, + ERR_SYNTAX_EMPTYHEAD, + ERR_SYNTAX_NOTEXT }; enum mdoc_att { @@ -240,10 +249,12 @@ enum mdoc_warn { WARN_SYNTAX_MACLIKE, WARN_SYNTAX_ARGLIKE, WARN_SYNTAX_QUOTED, + WARN_SYNTAX_EMPTYBODY, WARN_IGN_AFTER_BLK, WARN_IGN_BEFORE_BLK, WARN_IGN_OBSOLETE, WARN_SEC_OO, + WARN_SEC_REP, WARN_ARGS_GE1, WARN_ARGS_EQ0, WARN_COMPAT_TROFF @@ -251,6 +262,8 @@ enum mdoc_warn { struct mdoc_arg { int arg; + int line; + int pos; size_t sz; char **value; }; @@ -259,8 +272,10 @@ enum mdoc_type { MDOC_TEXT, MDOC_ELEM, MDOC_HEAD, + MDOC_TAIL, MDOC_BODY, - MDOC_BLOCK + MDOC_BLOCK, + MDOC_ROOT }; enum mdoc_msec { @@ -370,11 +385,13 @@ struct mdoc_block { }; struct mdoc_head { - size_t sz; - char **args; int tok; }; +struct mdoc_tail { + int tok; +}; + struct mdoc_body { int tok; }; @@ -392,6 +409,7 @@ union mdoc_data { struct mdoc_elem elem; struct mdoc_body body; struct mdoc_head head; + struct mdoc_tail tail; struct mdoc_block block; }; @@ -400,6 +418,8 @@ struct mdoc_node { struct mdoc_node *child; struct mdoc_node *next; struct mdoc_node *prev; + int line; + int pos; enum mdoc_type type; union mdoc_data data; }; @@ -407,7 +427,7 @@ struct mdoc_node { struct mdoc_cb { int (*mdoc_err)(void *, int, int, enum mdoc_err); int (*mdoc_warn)(void *, int, int, enum mdoc_warn); - void (*mdoc_msg)(void *, int, const char *); + void (*mdoc_msg)(void *, int, int, const char *); }; extern const char *const *mdoc_macronames; @@ -419,9 +439,10 @@ struct mdoc; void mdoc_free(struct mdoc *); struct mdoc *mdoc_alloc(void *data, const struct mdoc_cb *); -int mdoc_parseln(struct mdoc *, char *buf); +int mdoc_parseln(struct mdoc *, int, char *buf); const struct mdoc_node *mdoc_result(struct mdoc *); +int mdoc_endparse(struct mdoc *); __END_DECLS