-.Dd $Mdocdate: December 13 2018 $
+.Dd $Mdocdate: December 14 2018 $
.Dt MANDOC_HEADERS 3
.Os
.Sh NAME
and provides
.Fn mandoc_ohash_init .
.It Qq Pa mandoc.h
-Error handling utilities and top level parser interface;
+Error handling, escape sequence, and character utilities;
can be used everywhere.
.Pp
Requires
.In sys/types.h
for
-.Vt size_t .
+.Vt size_t
+and
+.In stdio.h
+for
+.Vt FILE .
.Pp
Provides
.Vt enum mandoc_esc ,
.Vt enum mandocerr ,
.Vt enum mandoclevel ,
-.Vt enum mandoc_os ,
-.Vt enum eqn_boxt ,
-.Vt enum eqn_fontt ,
-.Vt enum eqn_pilet ,
-.Vt enum eqn_post ,
-.Vt struct eqn_box ,
-the function prototype typedef
-.Fn mandocmsg ,
the function
.Xr mandoc_escape 3 ,
the functions described in
.Xr mchars_alloc 3 ,
+and the
+.Fn mandoc_msg*
+functions.
+.It Qq Pa roff.h
+Common data types for all syntax trees and related functions;
+can be used everywhere.
+.Pp
+Provides
+.Vt enum mandoc_os ,
+.Vt enum mdoc_endbody ,
+.Vt enum roff_macroset ,
+.Vt enum roff_next ,
+.Vt enum roff_sec ,
+.Vt enum roff_tok ,
+.Vt enum roff_type ,
+.Vt struct roff_man ,
+.Vt struct roff_meta ,
+.Vt struct roff_node ,
+the constant array
+.Va roff_name
and the functions
-.Fn mparse_*
-described in
-.Xr mandoc 3 .
+.Fn deroff
+and
+.Fn roff_validate .
.Pp
-Uses the opaque type
-.Vt struct mparse
+Uses pointers to the types
+.Vt struct ohash
from
-.Pa read.c
-for function prototypes.
-Uses the type
-.Vt struct roff_man
+.Pa mandoc_ohash.h
+and
+.Vt struct mdoc_arg
+and
+.Vt union mdoc_data
from
-.Pa roff.h
-as an opaque type for function prototypes.
+.Pa mdoc.h
+as opaque struct members.
.It Qq Pa tbl.h
Data structures for the
.Xr tbl 7
.Vt struct tbl_dat ,
and
.Vt struct tbl_span .
-.It Qq Pa mandoc_xr.h
-Cross reference validation; intended for use in the main program
-and in parsers, but not in formatters.
+.It Qq Pa eqn.h
+Data structures for the
+.Xr eqn 7
+parse tree; can be used everywhere.
+.Pp
+Requires
+.In sys/types.h
+for
+.Vt size_t .
.Pp
Provides
-.Vt struct mandoc_xr
-and the functions
-.Fn mandoc_xr_reset ,
-.Fn mandoc_xr_add ,
-.Fn mandoc_xr_get ,
+.Vt enum eqn_boxt ,
+.Vt enum eqn_fontt ,
+.Vt enum eqn_post ,
and
-.Fn mandoc_xr_free .
-.It Qq Pa roff.h
+.Vt struct eqn_box .
+.It Qq Pa mandoc_parse.h
+Top level parser interface, for use in the main program
+and in the main parser, but not in formatters.
+.Pp
Requires
-.Qq Pa mandoc_ohash.h
+.Pa mandoc.h
for
-.Vt struct ohash
+.Vt enum mandocerr ,
+.Vt enum mandoclevel ,
and
-.Qq Pa mandoc.h
+.Fn mandocmsg ,
+and
+.Pa roff.h
for
.Vt enum mandoc_os .
.Pp
+Uses to opaque type
+.Vt struct mparse
+from
+.Pa read.c
+for function prototypes.
+Uses
+.Vt struct roff_man
+from
+.Pa roff.h
+as an opaque type for function prototypes.
+.It Qq Pa mandoc_xr.h
+Cross reference validation; intended for use in the main program
+and in parsers, but not in formatters.
+.Pp
Provides
-.Vt enum mdoc_endbody ,
-.Vt enum roff_macroset ,
-.Vt enum roff_next ,
-.Vt enum roff_sec ,
-.Vt enum roff_tok ,
-.Vt enum roff_type ,
-.Vt struct roff_man ,
-.Vt struct roff_meta ,
-.Vt struct roff_node ,
-the constant array
-.Va roff_name
+.Vt struct mandoc_xr
and the functions
-.Fn deroff ,
-.Fn roffhash_alloc ,
-.Fn roffhash_find ,
-.Fn roffhash_free ,
-and
-.Fn roff_validate .
-.Pp
-Uses pointers to the types
-.Vt struct mdoc_arg
+.Fn mandoc_xr_reset ,
+.Fn mandoc_xr_add ,
+.Fn mandoc_xr_get ,
and
-.Vt union mdoc_data
-from
-.Pa mdoc.h
-as opaque struct members.
+.Fn mandoc_xr_free .
.El
.Pp
The following two require
.Pa roff.h
as an opaque type for function prototypes.
.It Qq Pa roff_int.h
+Parser internals shared by multiple parsers.
+Can be used in all parsers, but not in main programs or formatters.
+.Pp
Requires
.Qq Pa roff.h
for
-.Vt enum roff_type .
+.Vt enum roff_type
+and
+.Vt enum roff_tok .
.Pp
Provides functions named
.Fn roff_*
-to handle roff nodes and the two special functions
+to handle roff nodes,
+.Fn roffhash_alloc ,
+.Fn roffhash_find ,
+and
+.Fn roffhash_free ,
+and the two special functions
.Fn man_breakscope
and
.Fn mdoc_argv_free
for
.Vt enum roff_tok
and
-.Qq Pa mdoc.h
-for
-.Vt enum mdoc_*
-and
-.Vt struct mdoc_* .
+.Vt enum roff_sec .
.Pp
Provides
.Vt enum margserr ,
.Xr mdoc 7
parser.
.Pp
-Uses the opaque type
-.Vt struct mparse
-from
-.Pa read.c .
Uses the types
.Vt struct roff_man
and
.Vt struct roff_node
from
.Pa roff.h
+and
+.Vt struct mdoc_arg
+from
+.Pa mdoc.h
as opaque types for function prototypes.
.Pp
When this header is included, the same file should not include
.Vt struct eqn_node
and the functions
.Fn eqn_alloc ,
+.Fn eqn_box_new ,
.Fn eqn_box_free ,
.Fn eqn_free ,
.Fn eqn_parse ,