![]() ![]() | ![]() |
version 1.78, 2010/05/13 06:22:11 | version 1.83, 2010/05/31 10:28:04 | ||
---|---|---|---|
|
|
||
MDOC_br, | MDOC_br, | ||
MDOC_sp, | MDOC_sp, | ||
MDOC__U, | MDOC__U, | ||
MDOC_Ta, | |||
MDOC_MAX | MDOC_MAX | ||
}; | }; | ||
|
|
||
/* Information from prologue. */ | /* Information from prologue. */ | ||
struct mdoc_meta { | struct mdoc_meta { | ||
int msec; | char *msec; | ||
char *vol; | char *vol; | ||
char *arch; | char *arch; | ||
time_t date; | time_t date; | ||
|
|
||
unsigned int refcnt; | unsigned int refcnt; | ||
}; | }; | ||
enum mdoc_list { | |||
LIST__NONE = 0, | |||
LIST_bullet, | |||
LIST_column, | |||
LIST_dash, | |||
LIST_diag, | |||
LIST_enum, | |||
LIST_hang, | |||
LIST_hyphen, | |||
LIST_inset, | |||
LIST_item, | |||
LIST_ohang, | |||
LIST_tag | |||
}; | |||
/* Node in AST. */ | /* Node in AST. */ | ||
struct mdoc_node { | struct mdoc_node { | ||
struct mdoc_node *parent; /* parent AST node */ | struct mdoc_node *parent; /* parent AST node */ | ||
|
|
||
struct mdoc_node *body; /* BLOCK */ | struct mdoc_node *body; /* BLOCK */ | ||
struct mdoc_node *tail; /* BLOCK */ | struct mdoc_node *tail; /* BLOCK */ | ||
char *string; /* TEXT */ | char *string; /* TEXT */ | ||
union { | |||
enum mdoc_list list; /* for `Bl' nodes */ | |||
} data; | |||
}; | }; | ||
#define MDOC_IGN_SCOPE (1 << 0) /* Ignore scope violations. */ | #define MDOC_IGN_SCOPE (1 << 0) /* Ignore scope violations. */ | ||
#define MDOC_IGN_ESCAPE (1 << 1) /* Ignore bad escape sequences. */ | #define MDOC_IGN_ESCAPE (1 << 1) /* Ignore bad escape sequences. */ | ||
#define MDOC_IGN_MACRO (1 << 2) /* Ignore unknown macros. */ | #define MDOC_IGN_MACRO (1 << 2) /* Ignore unknown macros. */ | ||
/* Call-backs for parse messages. */ | |||
struct mdoc_cb { | |||
int (*mdoc_err)(void *, int, int, const char *); | |||
int (*mdoc_warn)(void *, int, int, const char *); | |||
}; | |||
/* See mdoc.3 for documentation. */ | /* See mdoc.3 for documentation. */ | ||
extern const char *const *mdoc_macronames; | extern const char *const *mdoc_macronames; | ||
|
|
||
/* 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, mandocmsg); | ||
void mdoc_reset(struct mdoc *); | void mdoc_reset(struct mdoc *); | ||
int mdoc_parseln(struct mdoc *, int, char *buf); | int mdoc_parseln(struct mdoc *, int, char *, int); | ||
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 *); |