![]() ![]() | ![]() |
version 1.60, 2009/06/17 10:53:32 | version 1.73, 2009/10/30 05:58:38 | ||
---|---|---|---|
|
|
||
#ifndef MDOC_H | #ifndef MDOC_H | ||
#define MDOC_H | #define MDOC_H | ||
#include <time.h> | |||
/* | /* | ||
* This library implements a validating scanner/parser for ``mdoc'' roff | * This library implements a validating scanner/parser for ``mdoc'' roff | ||
* macro documents, a.k.a. BSD manual page documents. The mdoc.c file | * macro documents, a.k.a. BSD manual page documents. The mdoc.c file | ||
|
|
||
#define MDOC_En 115 | #define MDOC_En 115 | ||
#define MDOC_Dx 116 | #define MDOC_Dx 116 | ||
#define MDOC__Q 117 | #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. */ | /* What follows is a list of ALL possible macro arguments. */ | ||
|
|
||
#define MDOC_Emphasis 23 | #define MDOC_Emphasis 23 | ||
#define MDOC_Symbolic 24 | #define MDOC_Symbolic 24 | ||
#define MDOC_Nested 25 | #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. */ | /* Type of a syntax node. */ | ||
enum mdoc_type { | enum mdoc_type { | ||
MDOC_TEXT, | MDOC_TEXT, | ||
|
|
||
SEC_SYNOPSIS, | SEC_SYNOPSIS, | ||
SEC_DESCRIPTION, | SEC_DESCRIPTION, | ||
SEC_IMPLEMENTATION, | SEC_IMPLEMENTATION, | ||
SEC_EXIT_STATUS, | |||
SEC_RETURN_VALUES, | SEC_RETURN_VALUES, | ||
SEC_ENVIRONMENT, | SEC_ENVIRONMENT, | ||
SEC_FILES, | SEC_FILES, | ||
SEC_EXAMPLES, | SEC_EXAMPLES, | ||
SEC_DIAGNOSTICS, | SEC_DIAGNOSTICS, | ||
|
|
||
SEC_AUTHORS, | SEC_AUTHORS, | ||
SEC_CAVEATS, | SEC_CAVEATS, | ||
SEC_BUGS, | SEC_BUGS, | ||
SEC_SECURITY, | |||
SEC_CUSTOM /* User-defined. */ | SEC_CUSTOM /* User-defined. */ | ||
}; | }; | ||
|
|
||
struct mdoc_node *child; | struct mdoc_node *child; | ||
struct mdoc_node *next; | struct mdoc_node *next; | ||
struct mdoc_node *prev; | struct mdoc_node *prev; | ||
int nchild; | |||
int line; | int line; | ||
int pos; | int pos; | ||
int tok; | int tok; | ||
|
|
||
enum mdoc_type type; | enum mdoc_type type; | ||
enum mdoc_sec sec; | enum mdoc_sec sec; | ||
/* FIXME: union/struct this with #defines. */ | |||
struct mdoc_arg *args; /* BLOCK/ELEM */ | struct mdoc_arg *args; /* BLOCK/ELEM */ | ||
struct mdoc_node *head; /* BLOCK */ | struct mdoc_node *head; /* BLOCK */ | ||
struct mdoc_node *body; /* BLOCK */ | struct mdoc_node *body; /* BLOCK */ | ||
|
|
||
#define MDOC_IGN_CHARS (1 << 3) /* Ignore disallowed chars. */ | #define MDOC_IGN_CHARS (1 << 3) /* Ignore disallowed chars. */ | ||
/* Call-backs for parse messages. */ | /* Call-backs for parse messages. */ | ||
/* FIXME: unify somehow with man_cb. */ | |||
struct mdoc_cb { | struct mdoc_cb { | ||
int (*mdoc_err)(void *, int, int, const char *); | int (*mdoc_err)(void *, int, int, const char *); | ||
int (*mdoc_warn)(void *, int, int, | int (*mdoc_warn)(void *, int, int, const char *); | ||
enum mdoc_warn, const char *); | |||
}; | }; | ||
/* See mdoc.3 for documentation. */ | /* See mdoc.3 for documentation. */ | ||
|
|
||
void mdoc_free(struct mdoc *); | void mdoc_free(struct mdoc *); | ||
struct mdoc *mdoc_alloc(void *, int, const struct mdoc_cb *); | struct mdoc *mdoc_alloc(void *, int, const struct mdoc_cb *); | ||
int mdoc_reset(struct mdoc *); | void mdoc_reset(struct mdoc *); | ||
int mdoc_parseln(struct mdoc *, int, char *buf); | int mdoc_parseln(struct mdoc *, int, char *buf); | ||
const struct mdoc_node *mdoc_node(const struct mdoc *); | const struct mdoc_node *mdoc_node(const struct mdoc *); | ||
const struct mdoc_meta *mdoc_meta(const struct mdoc *); | const struct mdoc_meta *mdoc_meta(const struct mdoc *); | ||
int mdoc_endparse(struct mdoc *); | int mdoc_endparse(struct mdoc *); | ||
const char *mdoc_a2att(const char *); | |||
const char *mdoc_a2lib(const char *); | |||
const char *mdoc_a2st(const char *); | |||
__END_DECLS | __END_DECLS | ||