=================================================================== RCS file: /cvs/mandoc/mandoc_headers.3,v retrieving revision 1.23 retrieving revision 1.33 diff -u -p -r1.23 -r1.33 --- mandoc/mandoc_headers.3 2018/12/13 05:23:38 1.23 +++ mandoc/mandoc_headers.3 2020/03/13 15:32:28 1.33 @@ -1,4 +1,20 @@ -.Dd $Mdocdate: December 13 2018 $ +.\" $Id: mandoc_headers.3,v 1.33 2020/03/13 15:32:28 schwarze Exp $ +.\" +.\" Copyright (c) 2014-2020 Ingo Schwarze +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +.\" +.Dd $Mdocdate: March 13 2020 $ .Dt MANDOC_HEADERS 3 .Os .Sh NAME @@ -84,40 +100,65 @@ 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 , -the function prototype typedef -.Fn mandocmsg , the function .Xr mandoc_escape 3 , the functions described in .Xr mchars_alloc 3 , -and the functions -.Fn mparse_* -described in -.Xr mandoc 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 -Uses the opaque type -.Vt struct mparse +Provides +.Vt enum mandoc_os , +.Vt enum mdoc_endbody , +.Vt enum roff_macroset , +.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 function +.Fn deroff . +.Pp +Uses pointers to the types +.Vt struct ohash from -.Pa read.c -for function prototypes. -Uses the type -.Vt struct roff_man +.Qq Pa mandoc_ohash.h , +.Vt struct mdoc_arg +and +.Vt union mdoc_data from -.Pa roff.h -as an opaque type for function prototypes. +.Qq Pa mdoc.h , +.Vt struct tbl_span +from +.Qq Pa tbl.h , +and +.Vt struct eqn_box +from +.Qq Pa eqn.h +as opaque struct members. .It Qq Pa tbl.h Data structures for the .Xr tbl 7 @@ -154,6 +195,31 @@ Provides .Vt enum eqn_post , and .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.h +for +.Vt enum mandocerr +and +.Vt enum mandoclevel +and +.Qq Pa roff.h +for +.Vt enum mandoc_os . +.Pp +Uses the opaque type +.Vt struct mparse +from +.Pa read.c +for function prototypes. +Uses +.Vt struct roff_meta +from +.Qq 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. @@ -166,43 +232,30 @@ and the functions .Fn mandoc_xr_get , and .Fn mandoc_xr_free . -.It Qq Pa roff.h +.It Qq Pa tag.h +Internal interfaces to tag syntax tree nodes, +for use by validation modules only. +.Pp Requires -.Qq Pa mandoc_ohash.h +.In limits.h for -.Vt struct ohash -and -.Qq Pa mandoc.h -for -.Vt enum mandoc_os . +.Dv INT_MAX . .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 -and the functions -.Fn deroff , -.Fn roffhash_alloc , -.Fn roffhash_find , -.Fn roffhash_free , +Provides the functions +.Fn tag_alloc , +.Fn tag_put , +.Fn tag_check , and -.Fn roff_validate . +.Fn tag_free +and some +.Dv TAG_* +constants. .Pp -Uses pointers to the types -.Vt struct mdoc_arg -and -.Vt union mdoc_data +Uses the type +.Vt struct roff_node from -.Pa mdoc.h -as opaque struct members. +.Qq Pa roff.h +as an opaque type for function prototypes. .El .Pp The following two require @@ -235,11 +288,15 @@ and the functions described in .Xr mandoc 3 . .Pp -Uses the type +Uses the types +.Vt struct roff_node +from +.Qq Pa roff.h +and .Vt struct roff_man from -.Pa roff.h -as an opaque type for function prototypes. +.Qq Pa roff_int.h +as opaque types for function prototypes. .Pp When this header is included, the same file should not include internals of different parsers. @@ -249,15 +306,10 @@ Provides the functions described in .Xr mandoc 3 . .Pp -Uses the opaque type -.Vt struct mparse -from -.Pa read.c -for function prototypes. Uses the type .Vt struct roff_man from -.Pa roff.h +.Qq Pa roff.h as an opaque type for function prototypes. .Pp When this header is included, the same file should not include @@ -285,11 +337,7 @@ Provides utility functions needed by multiple parsers, and the top-level functions to call the parsers. .Pp -Uses the opaque types -.Vt struct mparse -from -.Pa read.c -and +Uses the opaque type .Vt struct roff from .Pa roff.c @@ -297,33 +345,53 @@ for function prototypes. Uses the type .Vt struct roff_man from -.Pa roff.h +.Qq 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 +Provides +.Vt enum roff_next , +.Vt struct roff_man , +functions named .Fn roff_* -to handle roff nodes and the two special functions +to handle roff nodes, +.Fn roffhash_alloc , +.Fn roffhash_find , +.Fn roffhash_free , +and +.Fn roff_validate , +and the two special functions .Fn man_breakscope and .Fn mdoc_argv_free because the latter two are needed by -.Qq Pa roff.c . +.Pa roff.c . .Pp Uses the types -.Vt struct roff_man -and +.Vt struct ohash +from +.Qq Pa mandoc_ohash.h , .Vt struct roff_node +and +.Vt struct roff_meta from -.Pa roff.h +.Qq Pa roff.h , +.Vt struct roff +from +.Pa roff.c , and .Vt struct mdoc_arg from -.Pa mdoc.h +.Qq Pa mdoc.h as opaque types for function prototypes. .It Qq Pa libmdoc.h Requires @@ -331,11 +399,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 , @@ -345,16 +409,17 @@ 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_node +from +.Qq Pa roff.h , .Vt struct roff_man +from +.Qq Pa roff_int.h , and -.Vt struct roff_node +.Vt struct mdoc_arg from -.Pa roff.h +.Qq Pa mdoc.h as opaque types for function prototypes. .Pp When this header is included, the same file should not include @@ -372,11 +437,13 @@ and some functions internal to the parser. .Pp Uses the types -.Vt struct roff_man -and .Vt struct roff_node from -.Pa roff.h +.Qq Pa roff.h +and +.Vt struct roff_man +from +.Qq Pa roff_int.h as opaque types for function prototypes. .Pp When this header is included, the same file should not include @@ -407,20 +474,15 @@ and the functions and .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 +.Qq Pa mandoc.h as an opaque type for function prototypes. Uses the types .Vt struct roff_node from -.Pa roff.h +.Qq Pa roff.h and .Vt struct eqn_def from @@ -441,18 +503,14 @@ parsers only. 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 +.Qq Pa tbl.h and .Vt struct tbl_node from -.Pa tbl_int.h +.Qq Pa tbl_int.h as opaque types for function prototypes. .Pp When this header is included, the same file should not include @@ -480,12 +538,6 @@ and the functions 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 @@ -511,11 +563,11 @@ and Uses .Vt struct tbl_span from -.Pa mandoc.h +.Qq Pa mandoc.h as an opaque type for function prototypes. .Pp When this header is included, the same file should not include -.Pa mansearch.h . +.Qq Pa mansearch.h . .It Qq Pa term.h Requires .In sys/types.h @@ -546,25 +598,58 @@ Uses and .Vt struct eqn_box from -.Pa mandoc.h +.Qq Pa mandoc.h and .Vt struct roff_meta and .Vt struct roff_node from -.Pa roff.h +.Qq Pa roff.h as opaque types for function prototypes. .Pp When this header is included, the same file should not include -.Pa html.h +.Qq Pa html.h or -.Pa mansearch.h . -.It Qq Pa html.h +.Qq Pa mansearch.h . +.It Qq Pa tag_term.h Requires .In sys/types.h for .Vt size_t and +.In stdio.h +for +.Vt FILE . +.Pp +Provides an interface to generate +.Xr ctags 1 +files for the +.Ic :t +functionality mentioned in +.Xr man 1 . +.Pp +Uses the type +.Vt struct roff_node +from +.Qq Pa roff.h +as an opaque type for function prototypes. +.Pp +When this header is included, the same file should not include +.Qq Pa html.h +or +.Qq Pa mansearch.h . +.It Qq Pa html.h +Requires +.In sys/types.h +for +.Vt size_t , +.Qq Pa mandoc.h +for +.Vt enum mandoc_esc , +.Qq Pa roff.h +for +.Vt enum roff_tok , +and .Qq Pa out.h for .Vt struct roffsu @@ -587,36 +672,25 @@ Uses and .Vt struct eqn_box from -.Pa mandoc.h +.Qq Pa mandoc.h and .Vt struct roff_node from -.Pa roff.h +.Qq Pa roff.h as opaque types for function prototypes. .Pp When this header is included, the same file should not include -.Pa term.h +.Qq Pa term.h , +.Qq Pa tab_term.h , or -.Pa mansearch.h . -.It Qq Pa tag.h -Requires -.In sys/types.h -for -.Vt size_t . -.Pp -Provides an interface to generate -.Xr ctags 1 -files for the -.Ic :t -functionality mentioned in -.Xr man 1 . +.Qq Pa mansearch.h . .It Qq Pa main.h Provides the top level steering functions for all formatters. .Pp Uses the type -.Vt struct roff_man +.Vt struct roff_meta from -.Pa roff.h +.Qq Pa roff.h as an opaque type for function prototypes. .It Qq Pa manconf.h Requires @@ -656,12 +730,13 @@ and Uses .Vt struct manpaths from -.Pa manconf.h +.Qq Pa manconf.h as an opaque type for function prototypes. .Pp When this header is included, the same file should not include -.Pa out.h , -.Pa term.h , +.Qq Pa out.h , +.Qq Pa term.h , +.Qq Pa tab_term.h , or -.Pa html.h . +.Qq Pa html.h . .El