=================================================================== RCS file: /cvs/mandoc/mdoc.h,v retrieving revision 1.59 retrieving revision 1.71 diff -u -p -r1.59 -r1.71 --- mandoc/mdoc.h 2009/06/16 19:45:51 1.59 +++ mandoc/mdoc.h 2009/10/24 05:52:13 1.71 @@ -1,4 +1,4 @@ -/* $Id: mdoc.h,v 1.59 2009/06/16 19:45:51 kristaps Exp $ */ +/* $Id: mdoc.h,v 1.71 2009/10/24 05:52:13 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -147,7 +147,10 @@ #define MDOC_En 115 #define MDOC_Dx 116 #define MDOC__Q 117 -#define MDOC_MAX 118 +#define MDOC_br 118 +#define MDOC_sp 119 +#define MDOC__U 120 +#define MDOC_MAX 121 /* What follows is a list of ALL possible macro arguments. */ @@ -177,14 +180,9 @@ #define MDOC_Emphasis 23 #define MDOC_Symbolic 24 #define MDOC_Nested 25 -#define MDOC_ARG_MAX 26 +#define MDOC_Centred 26 +#define MDOC_ARG_MAX 27 -/* Warnings are either syntax or groff-compatibility. */ -enum mdoc_warn { - WARN_SYNTAX, - WARN_COMPAT -}; - /* Type of a syntax node. */ enum mdoc_type { MDOC_TEXT, @@ -198,27 +196,28 @@ enum mdoc_type { /* Section (named/unnamed) of `Sh'. */ enum mdoc_sec { - SEC_PROLOGUE = 0, - SEC_BODY = 1, - SEC_NAME = 2, - SEC_LIBRARY = 3, - SEC_SYNOPSIS = 4, - SEC_DESCRIPTION = 5, - SEC_IMPLEMENTATION = 6, - SEC_RETURN_VALUES = 7, - SEC_ENVIRONMENT = 8, - SEC_FILES = 9, - SEC_EXAMPLES = 10, - SEC_DIAGNOSTICS = 11, - SEC_COMPATIBILITY = 12, - SEC_ERRORS = 13, - SEC_SEE_ALSO = 14, - SEC_STANDARDS = 15, - SEC_HISTORY = 16, - SEC_AUTHORS = 17, - SEC_CAVEATS = 18, - SEC_BUGS = 19, - SEC_CUSTOM + SEC_NONE, /* No section, yet. */ + SEC_NAME, + SEC_LIBRARY, + SEC_SYNOPSIS, + SEC_DESCRIPTION, + SEC_IMPLEMENTATION, + SEC_EXIT_STATUS, + SEC_RETURN_VALUES, + SEC_ENVIRONMENT, + SEC_FILES, + SEC_EXAMPLES, + SEC_DIAGNOSTICS, + SEC_COMPATIBILITY, + SEC_ERRORS, + SEC_SEE_ALSO, + SEC_STANDARDS, + SEC_HISTORY, + SEC_AUTHORS, + SEC_CAVEATS, + SEC_BUGS, + SEC_SECURITY, + SEC_CUSTOM /* User-defined. */ }; /* Information from prologue. */ @@ -253,6 +252,7 @@ struct mdoc_node { struct mdoc_node *child; struct mdoc_node *next; struct mdoc_node *prev; + int nchild; int line; int pos; int tok; @@ -262,7 +262,6 @@ struct mdoc_node { enum mdoc_type type; enum mdoc_sec sec; - /* FIXME: union/struct this with #defines. */ struct mdoc_arg *args; /* BLOCK/ELEM */ struct mdoc_node *head; /* BLOCK */ struct mdoc_node *body; /* BLOCK */ @@ -276,48 +275,30 @@ struct mdoc_node { #define MDOC_IGN_CHARS (1 << 3) /* Ignore disallowed chars. */ /* Call-backs for parse messages. */ + struct mdoc_cb { int (*mdoc_err)(void *, int, int, const char *); - int (*mdoc_warn)(void *, int, int, - enum mdoc_warn, const char *); + int (*mdoc_warn)(void *, int, int, const char *); }; -/* Global table of macro names (`Bd', `Ed', etc.). */ -extern const char *const *mdoc_macronames; +/* See mdoc.3 for documentation. */ -/* Global table of argument names (`column', `tag', etc.). */ +extern const char *const *mdoc_macronames; extern const char *const *mdoc_argnames; __BEGIN_DECLS struct mdoc; -/* Free memory allocated with mdoc_alloc. */ -void mdoc_free(struct mdoc *); +/* See mdoc.3 for documentation. */ -/* Allocate a new parser instance. */ +void mdoc_free(struct mdoc *); struct mdoc *mdoc_alloc(void *, int, const struct mdoc_cb *); - -/* Gets system ready for another parse. */ int mdoc_reset(struct mdoc *); - -/* Parse a single line in a stream (boolean retval). */ int mdoc_parseln(struct mdoc *, int, char *buf); - -/* Get result first node (after mdoc_endparse!). */ const struct mdoc_node *mdoc_node(const struct mdoc *); - -/* Get result meta-information (after mdoc_endparse!). */ const struct mdoc_meta *mdoc_meta(const struct mdoc *); - -/* Signal end of parse sequence (boolean retval). */ int mdoc_endparse(struct mdoc *); - -/* The following are utility functions. */ - -const char *mdoc_a2att(const char *); -const char *mdoc_a2lib(const char *); -const char *mdoc_a2st(const char *); __END_DECLS