=================================================================== RCS file: /cvs/mandoc/mdoc.h,v retrieving revision 1.57 retrieving revision 1.63 diff -u -p -r1.57 -r1.63 --- mandoc/mdoc.h 2009/06/10 20:18:43 1.57 +++ mandoc/mdoc.h 2009/07/12 20:24:24 1.63 @@ -1,4 +1,4 @@ -/* $Id: mdoc.h,v 1.57 2009/06/10 20:18:43 kristaps Exp $ */ +/* $Id: mdoc.h,v 1.63 2009/07/12 20:24:24 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -29,7 +29,7 @@ /* What follows is a list of ALL possible macros. */ -#define MDOC___ 0 +#define MDOC_Ap 0 #define MDOC_Dd 1 #define MDOC_Dt 2 #define MDOC_Os 3 @@ -136,19 +136,18 @@ #define MDOC_Fr 104 #define MDOC_Ud 105 #define MDOC_Lb 106 -#define MDOC_Ap 107 -#define MDOC_Lp 108 -#define MDOC_Lk 109 -#define MDOC_Mt 110 -#define MDOC_Brq 111 -#define MDOC_Bro 112 -#define MDOC_Brc 113 -#define MDOC__C 114 -#define MDOC_Es 115 -#define MDOC_En 116 -#define MDOC_Dx 117 -#define MDOC__Q 118 -#define MDOC_MAX 119 +#define MDOC_Lp 107 +#define MDOC_Lk 108 +#define MDOC_Mt 109 +#define MDOC_Brq 110 +#define MDOC_Bro 111 +#define MDOC_Brc 112 +#define MDOC__C 113 +#define MDOC_Es 114 +#define MDOC_En 115 +#define MDOC_Dx 116 +#define MDOC__Q 117 +#define MDOC_MAX 118 /* What follows is a list of ALL possible macro arguments. */ @@ -180,12 +179,6 @@ #define MDOC_Nested 25 #define MDOC_ARG_MAX 26 -/* Warnings are either syntax or groff-compatibility. */ -enum mdoc_warn { - WARN_SYNTAX, - WARN_COMPAT -}; - /* Type of a syntax node. */ enum mdoc_type { MDOC_TEXT, @@ -199,27 +192,26 @@ 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_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_CUSTOM /* User-defined. */ }; /* Information from prologue. */ @@ -254,6 +246,7 @@ struct mdoc_node { struct mdoc_node *child; struct mdoc_node *next; struct mdoc_node *prev; + int nchild; int line; int pos; int tok; @@ -277,47 +270,31 @@ struct mdoc_node { #define MDOC_IGN_CHARS (1 << 3) /* Ignore disallowed chars. */ /* Call-backs for parse messages. */ +/* FIXME: unify somehow with man_cb. */ struct mdoc_cb { - void (*mdoc_msg)(void *, int, int, const char *); 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 *);