=================================================================== RCS file: /cvs/mandoc/mandoc_headers.3,v retrieving revision 1.20 retrieving revision 1.27 diff -u -p -r1.20 -r1.27 --- mandoc/mandoc_headers.3 2018/12/12 21:54:35 1.20 +++ mandoc/mandoc_headers.3 2018/12/14 01:18:25 1.27 @@ -1,4 +1,4 @@ -.Dd $Mdocdate: December 12 2018 $ +.Dd $Mdocdate: December 14 2018 $ .Dt MANDOC_HEADERS 3 .Os .Sh NAME @@ -84,45 +84,62 @@ Includes 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 @@ -143,55 +160,60 @@ Provides .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 , +.Fn mandoc_xr_reset , +.Fn mandoc_xr_add , +.Fn mandoc_xr_get , and -.Fn roff_validate . -.Pp -Uses pointers to the types -.Vt struct mdoc_arg -and -.Vt union mdoc_data -from -.Pa mdoc.h -as opaque struct members. +.Fn mandoc_xr_free . .El .Pp The following two require @@ -231,9 +253,7 @@ from as an opaque type for function prototypes. .Pp When this header is included, the same file should not include -.Pa libman.h -or -.Pa libroff.h . +internals of different parsers. .It Qq Pa man.h Provides the functions .Fn man_* @@ -252,12 +272,10 @@ from as an opaque type for function prototypes. .Pp When this header is included, the same file should not include -.Pa libmdoc.h -or -.Pa libroff.h . +internals of different parsers. .El .Ss Parser internals -The following headers require inclusion of a parser interface header +Most of the following headers require inclusion of a parser interface header before they can be included. All parser interface headers should precede all parser internal headers. When any parser internal headers are included, the same file should @@ -293,14 +311,24 @@ from .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 @@ -324,11 +352,7 @@ Requires 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 , @@ -338,23 +362,20 @@ and many functions internal to the .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 -.Pa man.h , -.Pa libman.h , -or -.Pa libroff.h . +interfaces of different parsers. .It Qq Pa libman.h Requires .Qq Pa roff.h @@ -376,44 +397,114 @@ from as opaque types for function prototypes. .Pp When this header is included, the same file should not include -.Pa mdoc.h , -.Pa libmdoc.h , -or -.Pa libroff.h . -.It Qq Pa libroff.h +interfaces of different parsers. +.It Qq Pa eqn_parse.h +External interface of the +.Xr eqn 7 +parser, for use in the +.Xr roff 7 +and +.Xr eqn 7 +parsers only. +.Pp Requires .In sys/types.h for -.Vt size_t +.Vt size_t . +.Pp +Provides +.Vt struct eqn_node +and the functions +.Fn eqn_alloc , +.Fn eqn_box_new , +.Fn eqn_box_free , +.Fn eqn_free , +.Fn eqn_parse , +.Fn eqn_read , and -.Qq Pa mandoc.h -for -.Vt struct tbl_* +.Fn eqn_reset . +.Pp +Uses the opaque type +.Vt struct mparse +from +.Pa read.c +for function prototypes. +Uses the type +.Vt struct eqn_box +from +.Pa mandoc.h +as an opaque type for function prototypes. +Uses the types +.Vt struct roff_node +from +.Pa roff.h and -.Vt struct eqn_box . +.Vt struct eqn_def +from +.Pa eqn.c +as opaque struct members. .Pp -Provides -.Vt enum tbl_part , -.Vt struct tbl_node , -.Vt struct eqn_def , -.Vt struct eqn_node , -and many functions internal to the +When this header is included, the same file should not include +internals of different parsers. +.It Qq Pa tbl_parse.h +External interface of the .Xr tbl 7 +parser, for use in the +.Xr roff 7 and -.Xr eqn 7 -parsers. +.Xr tbl 7 +parsers only. .Pp +Provides the functions documented in +.Xr tbl 3 . +.Pp Uses the opaque type .Vt struct mparse from .Pa read.c . +Uses the types +.Vt struct tbl_span +from +.Pa tbl.h +and +.Vt struct tbl_node +from +.Pa tbl_int.h +as opaque types for function prototypes. .Pp When this header is included, the same file should not include -.Pa man.h , -.Pa mdoc.h , -.Pa libman.h , -or -.Pa libmdoc.h . +internals of different parsers. +.It Qq Pa tbl_int.h +Internal interfaces of the +.Xr tbl 7 +parser, for use inside the +.Xr tbl 7 +parser only. +.Pp +Requires +.Qq Pa tbl.h +for +.Vt struct tbl_opts . +.Pp +Provides +.Vt enum tbl_part , +.Vt struct tbl_node , +and the functions +.Fn tbl_option , +.Fn tbl_layout , +.Fn tbl_data , +.Fn tbl_cdata , +and +.Fn tbl_reset . +.Pp +Uses a pointer to the opaque type +.Vt struct mparse +from +.Pa read.c +as an opaque struct member. +.Pp +When this header is included, the same file should not include +interfaces of different parsers. .El .Ss Formatter interface These headers should be included after any parser interface headers.