Return to mandoc.h CVS log | Up to [cvsweb.bsd.lv] / mandoc |
version 1.54, 2011/02/02 21:40:45 | version 1.80, 2011/07/17 14:08:49 | ||
---|---|---|---|
|
|
||
MANDOCERR_NOTITLE, /* no title in document */ | MANDOCERR_NOTITLE, /* no title in document */ | ||
MANDOCERR_UPPERCASE, /* document title should be all caps */ | MANDOCERR_UPPERCASE, /* document title should be all caps */ | ||
MANDOCERR_BADMSEC, /* unknown manual section */ | MANDOCERR_BADMSEC, /* unknown manual section */ | ||
MANDOCERR_BADDATE, /* cannot parse date argument */ | MANDOCERR_NODATE, /* date missing, using today's date */ | ||
MANDOCERR_BADDATE, /* cannot parse date, using it verbatim */ | |||
MANDOCERR_PROLOGOOO, /* prologue macros out of order */ | MANDOCERR_PROLOGOOO, /* prologue macros out of order */ | ||
MANDOCERR_PROLOGREP, /* duplicate prologue macro */ | MANDOCERR_PROLOGREP, /* duplicate prologue macro */ | ||
MANDOCERR_BADPROLOG, /* macro not allowed in prologue */ | MANDOCERR_BADPROLOG, /* macro not allowed in prologue */ | ||
|
|
||
MANDOCERR_CHILD, /* child violates parent syntax */ | MANDOCERR_CHILD, /* child violates parent syntax */ | ||
MANDOCERR_NESTEDDISP, /* nested displays are not portable */ | MANDOCERR_NESTEDDISP, /* nested displays are not portable */ | ||
MANDOCERR_SCOPEREP, /* already in literal mode */ | MANDOCERR_SCOPEREP, /* already in literal mode */ | ||
MANDOCERR_LINESCOPE, /* line scope broken */ | |||
/* related to missing macro arguments */ | /* related to missing macro arguments */ | ||
MANDOCERR_MACROEMPTY, /* skipping empty macro */ | MANDOCERR_MACROEMPTY, /* skipping empty macro */ | ||
|
|
||
MANDOCERR_BADESCAPE, /* unknown escape sequence */ | MANDOCERR_BADESCAPE, /* unknown escape sequence */ | ||
MANDOCERR_BADQUOTE, /* unterminated quoted string */ | MANDOCERR_BADQUOTE, /* unterminated quoted string */ | ||
/* related to equations */ | |||
MANDOCERR_EQNQUOTE, /* unexpected literal in equation */ | |||
MANDOCERR_ERROR, /* ===== start of errors ===== */ | MANDOCERR_ERROR, /* ===== start of errors ===== */ | ||
/* related to equations */ | |||
MANDOCERR_EQNARGS, /* bad equation macro arguments */ | |||
/* related to tables */ | /* related to tables */ | ||
MANDOCERR_TBL, /* bad table syntax */ | MANDOCERR_TBL, /* bad table syntax */ | ||
MANDOCERR_TBLOPT, /* bad table option */ | MANDOCERR_TBLOPT, /* bad table option */ | ||
|
|
||
MANDOCERR_NOTEXT, /* skipping text before the first section header */ | MANDOCERR_NOTEXT, /* skipping text before the first section header */ | ||
MANDOCERR_MACRO, /* skipping unknown macro */ | MANDOCERR_MACRO, /* skipping unknown macro */ | ||
MANDOCERR_REQUEST, /* NOT IMPLEMENTED: skipping request */ | MANDOCERR_REQUEST, /* NOT IMPLEMENTED: skipping request */ | ||
MANDOCERR_LINESCOPE, /* line scope broken */ | |||
MANDOCERR_ARGCOUNT, /* argument count wrong */ | MANDOCERR_ARGCOUNT, /* argument count wrong */ | ||
MANDOCERR_NOSCOPE, /* skipping end of block that is not open */ | MANDOCERR_NOSCOPE, /* skipping end of block that is not open */ | ||
MANDOCERR_SCOPEBROKEN, /* missing end of block */ | MANDOCERR_SCOPEBROKEN, /* missing end of block */ | ||
|
|
||
MANDOCERR_FATAL, /* ===== start of fatal errors ===== */ | MANDOCERR_FATAL, /* ===== start of fatal errors ===== */ | ||
MANDOCERR_NOTMANUAL, /* manual isn't really a manual */ | |||
MANDOCERR_COLUMNS, /* column syntax is inconsistent */ | MANDOCERR_COLUMNS, /* column syntax is inconsistent */ | ||
MANDOCERR_BADDISP, /* NOT IMPLEMENTED: .Bd -file */ | MANDOCERR_BADDISP, /* NOT IMPLEMENTED: .Bd -file */ | ||
MANDOCERR_SYNTLINESCOPE, /* line scope broken, syntax violated */ | MANDOCERR_SYNTLINESCOPE, /* line scope broken, syntax violated */ | ||
|
|
||
struct tbl_row *layout; /* layout row */ | struct tbl_row *layout; /* layout row */ | ||
struct tbl_dat *first; | struct tbl_dat *first; | ||
struct tbl_dat *last; | struct tbl_dat *last; | ||
int line; /* parse line */ | |||
int flags; | int flags; | ||
#define TBL_SPAN_FIRST (1 << 0) | #define TBL_SPAN_FIRST (1 << 0) | ||
#define TBL_SPAN_LAST (1 << 1) | #define TBL_SPAN_LAST (1 << 1) | ||
|
|
||
struct tbl_span *next; | struct tbl_span *next; | ||
}; | }; | ||
/* | struct eqn { | ||
* Available registers (set in libroff, accessed elsewhere). | size_t sz; | ||
*/ | char *data; | ||
enum regs { | int line; /* invocation line */ | ||
REG_nS = 0, | int pos; /* invocation position */ | ||
REG__MAX | |||
}; | }; | ||
/* | /* | ||
* A register (struct reg) can consist of many types: this consists of | * The type of parse sequence. This value is usually passed via the | ||
* normalised types from the original string form. | * mandoc(1) command line of -man and -mdoc. It's almost exclusively | ||
* -mandoc but the others have been retained for compatibility. | |||
*/ | */ | ||
union regval { | enum mparset { | ||
unsigned u; /* unsigned integer */ | MPARSE_AUTO, /* magically determine the document type */ | ||
MPARSE_MDOC, /* assume -mdoc */ | |||
MPARSE_MAN /* assume -man */ | |||
}; | }; | ||
/* | enum mandoc_esc { | ||
* A single register entity. If "set" is zero, the value of the | ESCAPE_ERROR = 0, /* bail! unparsable escape */ | ||
* register should be the default one, which is per-register. It's | ESCAPE_IGNORE, /* escape to be ignored */ | ||
* assumed that callers know which type in "v" corresponds to which | ESCAPE_SPECIAL, /* a regular special character */ | ||
* register value. | ESCAPE_FONT, /* a generic font mode */ | ||
*/ | ESCAPE_FONTBOLD, /* bold font mode */ | ||
struct reg { | ESCAPE_FONTITALIC, /* italic font mode */ | ||
int set; /* whether set or not */ | ESCAPE_FONTROMAN, /* roman font mode */ | ||
union regval v; /* parsed data */ | ESCAPE_FONTPREV, /* previous font mode */ | ||
ESCAPE_NUMBERED, /* a numbered glyph */ | |||
ESCAPE_UNICODE, /* a unicode codepoint */ | |||
ESCAPE_NOSPACE /* suppress space if the last on a line */ | |||
}; | }; | ||
/* | typedef void (*mandocmsg)(enum mandocerr, enum mandoclevel, | ||
* The primary interface to setting register values is in libroff, | const char *, int, int, const char *); | ||
* although libmdoc and libman from time to time will manipulate | |||
* registers (such as `.Sh SYNOPSIS' enabling REG_nS). | |||
*/ | |||
struct regset { | |||
struct reg regs[REG__MAX]; | |||
}; | |||
struct mparse; | |||
struct mchars; | |||
struct mdoc; | |||
struct man; | |||
__BEGIN_DECLS | __BEGIN_DECLS | ||
/* | void mparse_free(struct mparse *); | ||
* Callback function for warnings, errors, and fatal errors as they | void mparse_reset(struct mparse *); | ||
* occur in the compilers libroff, libmdoc, and libman. | struct mparse *mparse_alloc(enum mparset, | ||
*/ | enum mandoclevel, mandocmsg, void *); | ||
typedef int (*mandocmsg)(enum mandocerr, void *, | enum mandoclevel mparse_readfd(struct mparse *, int, const char *); | ||
int, int, const char *); | void mparse_result(struct mparse *, struct mdoc **, struct man **); | ||
const char *mparse_strerror(enum mandocerr); | |||
const char *mparse_strlevel(enum mandoclevel); | |||
void *mandoc_calloc(size_t, size_t); | |||
void *mandoc_malloc(size_t); | |||
void *mandoc_realloc(void *, size_t); | |||
char *mandoc_strdup(const char *); | |||
enum mandoc_esc mandoc_escape(const char **, const char **, int *); | |||
struct mchars *mchars_alloc(void); | |||
char mchars_num2char(const char *, size_t); | |||
int mchars_num2uc(const char *, size_t); | |||
const char *mchars_spec2str(struct mchars *, const char *, size_t, size_t *); | |||
int mchars_spec2cp(struct mchars *, const char *, size_t); | |||
void mchars_free(struct mchars *); | |||
__END_DECLS | __END_DECLS | ||