1*544c191cSchristos.Dd December 30, 2018 2fec65c98Schristos.Dt MANDOC_HEADERS 3 3fec65c98Schristos.Os 4fec65c98Schristos.Sh NAME 5fec65c98Schristos.Nm mandoc_headers 6fec65c98Schristos.Nd ordering of mandoc include files 7fec65c98Schristos.Sh DESCRIPTION 8fec65c98SchristosTo support a cleaner coding style, the mandoc header files do not 9fec65c98Schristoscontain any include directives and do not guard against multiple 10fec65c98Schristosinclusion. 11fec65c98SchristosThe application developer has to make sure that the headers are 12fec65c98Schristosincluded in a proper order, and that no header is included more 13fec65c98Schristosthan once. 14fec65c98Schristos.Pp 15fec65c98SchristosThe headers and functions form three major groups: 16fec65c98Schristos.Sx Parser interface , 17fec65c98Schristos.Sx Parser internals , 18fec65c98Schristosand 19fec65c98Schristos.Sx Formatter interface . 20fec65c98Schristos.Pp 21fec65c98SchristosVarious rules are given below prohibiting the inclusion of certain 22fec65c98Schristoscombinations of headers into the same file. 23fec65c98SchristosThe intention is to keep the following functional components 24fec65c98Schristosseparate from each other: 25fec65c98Schristos.Pp 26fec65c98Schristos.Bl -dash -offset indent -compact 27fec65c98Schristos.It 28*544c191cSchristos.Xr roff 7 29*544c191cSchristosparser 30*544c191cSchristos.It 31fec65c98Schristos.Xr mdoc 7 32fec65c98Schristosparser 33fec65c98Schristos.It 34fec65c98Schristos.Xr man 7 35fec65c98Schristosparser 36fec65c98Schristos.It 37fec65c98Schristos.Xr tbl 7 38fec65c98Schristosparser 39fec65c98Schristos.It 40fec65c98Schristos.Xr eqn 7 41fec65c98Schristosparser 42fec65c98Schristos.It 43fec65c98Schristosterminal formatters 44fec65c98Schristos.It 45fec65c98SchristosHTML formatters 46fec65c98Schristos.It 47fec65c98Schristossearch tools 48*544c191cSchristos.It 49*544c191cSchristosmain programs 50fec65c98Schristos.El 51fec65c98Schristos.Pp 52fec65c98SchristosNote that mere usage of an opaque struct type does 53fec65c98Schristos.Em not 54fec65c98Schristosrequire inclusion of the header where that type is defined. 55fec65c98Schristos.Ss Parser interface 56fec65c98SchristosEach of the following headers can be included without including 57fec65c98Schristosany other mandoc header. 58fec65c98SchristosThese headers should be included before any other mandoc headers. 59fec65c98Schristos.Bl -tag -width Ds 60fec65c98Schristos.It Qq Pa mandoc_aux.h 61*544c191cSchristosMemory allocation utility functions; can be used everywhere. 62*544c191cSchristos.Pp 63fec65c98SchristosRequires 64fec65c98Schristos.In sys/types.h 65fec65c98Schristosfor 66fec65c98Schristos.Vt size_t . 67c9bcef03Schristos.Pp 68*544c191cSchristosProvides the functions documented in 69fec65c98Schristos.Xr mandoc_malloc 3 . 709ff1f2acSchristos.It Qq Pa mandoc_ohash.h 71*544c191cSchristosHashing utility functions; can be used everywhere. 72*544c191cSchristos.Pp 73c9bcef03SchristosRequires 74c9bcef03Schristos.In stddef.h 75c9bcef03Schristosfor 76c9bcef03Schristos.Vt ptrdiff_t 77c9bcef03Schristosand 78c9bcef03Schristos.In stdint.h 79c9bcef03Schristosfor 80c9bcef03Schristos.Vt uint32_t . 81c9bcef03Schristos.Pp 829ff1f2acSchristosIncludes 839ff1f2acSchristos.In ohash.h 849ff1f2acSchristosand provides 859ff1f2acSchristos.Fn mandoc_ohash_init . 86fec65c98Schristos.It Qq Pa mandoc.h 87*544c191cSchristosError handling, escape sequence, and character utilities; 88*544c191cSchristoscan be used everywhere. 89*544c191cSchristos.Pp 90fec65c98SchristosRequires 91fec65c98Schristos.In sys/types.h 92fec65c98Schristosfor 93*544c191cSchristos.Vt size_t 94*544c191cSchristosand 95*544c191cSchristos.In stdio.h 96*544c191cSchristosfor 97*544c191cSchristos.Vt FILE . 98fec65c98Schristos.Pp 99fec65c98SchristosProvides 100fec65c98Schristos.Vt enum mandoc_esc , 101fec65c98Schristos.Vt enum mandocerr , 102fec65c98Schristos.Vt enum mandoclevel , 103fec65c98Schristosthe function 104fec65c98Schristos.Xr mandoc_escape 3 , 105fec65c98Schristosthe functions described in 106fec65c98Schristos.Xr mchars_alloc 3 , 107*544c191cSchristosand the 108*544c191cSchristos.Fn mandoc_msg* 109*544c191cSchristosfunctions. 1109ff1f2acSchristos.It Qq Pa roff.h 111*544c191cSchristosCommon data types for all syntax trees and related functions; 112*544c191cSchristoscan be used everywhere. 113c9bcef03Schristos.Pp 1149ff1f2acSchristosProvides 115*544c191cSchristos.Vt enum mandoc_os , 1169ff1f2acSchristos.Vt enum mdoc_endbody , 1179ff1f2acSchristos.Vt enum roff_macroset , 1189ff1f2acSchristos.Vt enum roff_sec , 119c9bcef03Schristos.Vt enum roff_tok , 1209ff1f2acSchristos.Vt enum roff_type , 1219ff1f2acSchristos.Vt struct roff_man , 1229ff1f2acSchristos.Vt struct roff_meta , 1239ff1f2acSchristos.Vt struct roff_node , 124c9bcef03Schristosthe constant array 125c9bcef03Schristos.Va roff_name 126*544c191cSchristosand the function 127*544c191cSchristos.Fn deroff . 1289ff1f2acSchristos.Pp 1299ff1f2acSchristosUses pointers to the types 130*544c191cSchristos.Vt struct ohash 131*544c191cSchristosfrom 132*544c191cSchristos.Pa mandoc_ohash.h , 1339ff1f2acSchristos.Vt struct mdoc_arg 134fec65c98Schristosand 1359ff1f2acSchristos.Vt union mdoc_data 136fec65c98Schristosfrom 137*544c191cSchristos.Pa mdoc.h , 138*544c191cSchristos.Vt struct tbl_span 139*544c191cSchristosfrom 140*544c191cSchristos.Pa tbl.h , 141*544c191cSchristosand 142*544c191cSchristos.Vt struct eqn_box 143*544c191cSchristosfrom 144*544c191cSchristos.Pa eqn.h 1459ff1f2acSchristosas opaque struct members. 146*544c191cSchristos.It Qq Pa tbl.h 147*544c191cSchristosData structures for the 148*544c191cSchristos.Xr tbl 7 149*544c191cSchristosparse tree; can be used everywhere. 150*544c191cSchristos.Pp 151*544c191cSchristosRequires 152*544c191cSchristos.In sys/types.h 153*544c191cSchristosfor 154*544c191cSchristos.Vt size_t . 155*544c191cSchristos.Pp 156*544c191cSchristosProvides 157*544c191cSchristos.Vt enum tbl_cellt , 158*544c191cSchristos.Vt enum tbl_datt , 159*544c191cSchristos.Vt enum tbl_spant , 160*544c191cSchristos.Vt struct tbl_opts , 161*544c191cSchristos.Vt struct tbl_cell , 162*544c191cSchristos.Vt struct tbl_row , 163*544c191cSchristos.Vt struct tbl_dat , 164*544c191cSchristosand 165*544c191cSchristos.Vt struct tbl_span . 166*544c191cSchristos.It Qq Pa eqn.h 167*544c191cSchristosData structures for the 168*544c191cSchristos.Xr eqn 7 169*544c191cSchristosparse tree; can be used everywhere. 170*544c191cSchristos.Pp 171*544c191cSchristosRequires 172*544c191cSchristos.In sys/types.h 173*544c191cSchristosfor 174*544c191cSchristos.Vt size_t . 175*544c191cSchristos.Pp 176*544c191cSchristosProvides 177*544c191cSchristos.Vt enum eqn_boxt , 178*544c191cSchristos.Vt enum eqn_fontt , 179*544c191cSchristos.Vt enum eqn_post , 180*544c191cSchristosand 181*544c191cSchristos.Vt struct eqn_box . 182*544c191cSchristos.It Qq Pa mandoc_parse.h 183*544c191cSchristosTop level parser interface, for use in the main program 184*544c191cSchristosand in the main parser, but not in formatters. 185*544c191cSchristos.Pp 186*544c191cSchristosRequires 187*544c191cSchristos.Pa mandoc.h 188*544c191cSchristosfor 189*544c191cSchristos.Vt enum mandocerr 190*544c191cSchristosand 191*544c191cSchristos.Vt enum mandoclevel 192*544c191cSchristosand 193*544c191cSchristos.Pa roff.h 194*544c191cSchristosfor 195*544c191cSchristos.Vt enum mandoc_os . 196*544c191cSchristos.Pp 197*544c191cSchristosUses the opaque type 198*544c191cSchristos.Vt struct mparse 199*544c191cSchristosfrom 200*544c191cSchristos.Pa read.c 201*544c191cSchristosfor function prototypes. 202*544c191cSchristosUses 203*544c191cSchristos.Vt struct roff_meta 204*544c191cSchristosfrom 205*544c191cSchristos.Pa roff.h 206*544c191cSchristosas an opaque type for function prototypes. 207*544c191cSchristos.It Qq Pa mandoc_xr.h 208*544c191cSchristosCross reference validation; intended for use in the main program 209*544c191cSchristosand in parsers, but not in formatters. 210*544c191cSchristos.Pp 211*544c191cSchristosProvides 212*544c191cSchristos.Vt struct mandoc_xr 213*544c191cSchristosand the functions 214*544c191cSchristos.Fn mandoc_xr_reset , 215*544c191cSchristos.Fn mandoc_xr_add , 216*544c191cSchristos.Fn mandoc_xr_get , 217*544c191cSchristosand 218*544c191cSchristos.Fn mandoc_xr_free . 2199ff1f2acSchristos.El 2209ff1f2acSchristos.Pp 2219ff1f2acSchristosThe following two require 2229ff1f2acSchristos.Qq Pa roff.h 2239ff1f2acSchristosbut no other mandoc headers. 2249ff1f2acSchristosAfterwards, any other mandoc headers can be included as needed. 2259ff1f2acSchristos.Bl -tag -width Ds 226fec65c98Schristos.It Qq Pa mdoc.h 227fec65c98SchristosRequires 228fec65c98Schristos.In sys/types.h 229fec65c98Schristosfor 230fec65c98Schristos.Vt size_t . 231fec65c98Schristos.Pp 232fec65c98SchristosProvides 233fec65c98Schristos.Vt enum mdocargt , 234fec65c98Schristos.Vt enum mdoc_auth , 2359ff1f2acSchristos.Vt enum mdoc_disp , 236fec65c98Schristos.Vt enum mdoc_font , 2379ff1f2acSchristos.Vt enum mdoc_list , 238fec65c98Schristos.Vt struct mdoc_argv , 239fec65c98Schristos.Vt struct mdoc_arg , 240fec65c98Schristos.Vt struct mdoc_an , 2419ff1f2acSchristos.Vt struct mdoc_bd , 242fec65c98Schristos.Vt struct mdoc_bf , 2439ff1f2acSchristos.Vt struct mdoc_bl , 244fec65c98Schristos.Vt struct mdoc_rs , 2459ff1f2acSchristos.Vt union mdoc_data , 246fec65c98Schristosand the functions 247fec65c98Schristos.Fn mdoc_* 248fec65c98Schristosdescribed in 249fec65c98Schristos.Xr mandoc 3 . 250fec65c98Schristos.Pp 251*544c191cSchristosUses the types 252*544c191cSchristos.Vt struct roff_node 253fec65c98Schristosfrom 2549ff1f2acSchristos.Pa roff.h 255*544c191cSchristosand 256*544c191cSchristos.Vt struct roff_man 257*544c191cSchristosfrom 258*544c191cSchristos.Pa roff_int.h 259*544c191cSchristosas opaque types for function prototypes. 260fec65c98Schristos.Pp 261fec65c98SchristosWhen this header is included, the same file should not include 262*544c191cSchristosinternals of different parsers. 263fec65c98Schristos.It Qq Pa man.h 2649ff1f2acSchristosProvides the functions 265fec65c98Schristos.Fn man_* 266fec65c98Schristosdescribed in 267fec65c98Schristos.Xr mandoc 3 . 268fec65c98Schristos.Pp 269fec65c98SchristosUses the type 2709ff1f2acSchristos.Vt struct roff_man 271fec65c98Schristosfrom 2729ff1f2acSchristos.Pa roff.h 273fec65c98Schristosas an opaque type for function prototypes. 274fec65c98Schristos.Pp 275fec65c98SchristosWhen this header is included, the same file should not include 276*544c191cSchristosinternals of different parsers. 277fec65c98Schristos.El 278fec65c98Schristos.Ss Parser internals 279*544c191cSchristosMost of the following headers require inclusion of a parser interface header 280c9bcef03Schristosbefore they can be included. 281c9bcef03SchristosAll parser interface headers should precede all parser internal headers. 282c9bcef03SchristosWhen any parser internal headers are included, the same file should 283c9bcef03Schristosnot include any formatter headers. 284fec65c98Schristos.Bl -tag -width Ds 285fec65c98Schristos.It Qq Pa libmandoc.h 286fec65c98SchristosRequires 287fec65c98Schristos.In sys/types.h 288fec65c98Schristosfor 289fec65c98Schristos.Vt size_t 290fec65c98Schristosand 291fec65c98Schristos.Qq Pa mandoc.h 292fec65c98Schristosfor 293fec65c98Schristos.Vt enum mandocerr . 294fec65c98Schristos.Pp 295fec65c98SchristosProvides 296fec65c98Schristos.Vt struct buf , 297fec65c98Schristosutility functions needed by multiple parsers, 298fec65c98Schristosand the top-level functions to call the parsers. 299fec65c98Schristos.Pp 300*544c191cSchristosUses the opaque type 301fec65c98Schristos.Vt struct roff 302fec65c98Schristosfrom 303fec65c98Schristos.Pa roff.c 304fec65c98Schristosfor function prototypes. 305c9bcef03SchristosUses the type 3069ff1f2acSchristos.Vt struct roff_man 307fec65c98Schristosfrom 3089ff1f2acSchristos.Pa roff.h 309c9bcef03Schristosas an opaque type for function prototypes. 3109ff1f2acSchristos.It Qq Pa roff_int.h 311*544c191cSchristosParser internals shared by multiple parsers. 312*544c191cSchristosCan be used in all parsers, but not in main programs or formatters. 313*544c191cSchristos.Pp 3149ff1f2acSchristosRequires 3159ff1f2acSchristos.Qq Pa roff.h 3169ff1f2acSchristosfor 317*544c191cSchristos.Vt enum roff_type 318*544c191cSchristosand 319*544c191cSchristos.Vt enum roff_tok . 3209ff1f2acSchristos.Pp 321*544c191cSchristosProvides 322*544c191cSchristos.Vt enum roff_next , 323*544c191cSchristos.Vt struct roff_man , 324*544c191cSchristosfunctions named 3259ff1f2acSchristos.Fn roff_* 326*544c191cSchristosto handle roff nodes, 327*544c191cSchristos.Fn roffhash_alloc , 328*544c191cSchristos.Fn roffhash_find , 329*544c191cSchristos.Fn roffhash_free , 330*544c191cSchristosand 331*544c191cSchristos.Fn roff_validate , 332*544c191cSchristosand the two special functions 3339ff1f2acSchristos.Fn man_breakscope 3349ff1f2acSchristosand 3359ff1f2acSchristos.Fn mdoc_argv_free 3369ff1f2acSchristosbecause the latter two are needed by 3379ff1f2acSchristos.Qq Pa roff.c . 3389ff1f2acSchristos.Pp 3399ff1f2acSchristosUses the types 340*544c191cSchristos.Vt struct ohash 3419ff1f2acSchristosfrom 342*544c191cSchristos.Pa mandoc_ohash.h , 343*544c191cSchristos.Vt struct roff_node 344*544c191cSchristosand 345*544c191cSchristos.Vt struct roff_meta 346*544c191cSchristosfrom 347*544c191cSchristos.Pa roff.h , 348*544c191cSchristos.Vt struct roff 349*544c191cSchristosfrom 350*544c191cSchristos.Pa roff.c , 3519ff1f2acSchristosand 3529ff1f2acSchristos.Vt struct mdoc_arg 3539ff1f2acSchristosfrom 3549ff1f2acSchristos.Pa mdoc.h 355fec65c98Schristosas opaque types for function prototypes. 356fec65c98Schristos.It Qq Pa libmdoc.h 357fec65c98SchristosRequires 358c9bcef03Schristos.Qq Pa roff.h 359c9bcef03Schristosfor 360c9bcef03Schristos.Vt enum roff_tok 361c9bcef03Schristosand 362*544c191cSchristos.Vt enum roff_sec . 363fec65c98Schristos.Pp 364fec65c98SchristosProvides 365fec65c98Schristos.Vt enum margserr , 366fec65c98Schristos.Vt enum mdelim , 367fec65c98Schristos.Vt struct mdoc_macro , 368fec65c98Schristosand many functions internal to the 369fec65c98Schristos.Xr mdoc 7 370fec65c98Schristosparser. 371fec65c98Schristos.Pp 3729ff1f2acSchristosUses the types 3739ff1f2acSchristos.Vt struct roff_node 374fec65c98Schristosfrom 375*544c191cSchristos.Pa roff.h , 376*544c191cSchristos.Vt struct roff_man 377*544c191cSchristosfrom 378*544c191cSchristos.Pa roff_int.h , 379*544c191cSchristosand 380*544c191cSchristos.Vt struct mdoc_arg 381*544c191cSchristosfrom 382*544c191cSchristos.Pa mdoc.h 3839ff1f2acSchristosas opaque types for function prototypes. 384fec65c98Schristos.Pp 385fec65c98SchristosWhen this header is included, the same file should not include 386*544c191cSchristosinterfaces of different parsers. 387fec65c98Schristos.It Qq Pa libman.h 388c9bcef03SchristosRequires 389c9bcef03Schristos.Qq Pa roff.h 390c9bcef03Schristosfor 391c9bcef03Schristos.Vt enum roff_tok . 392c9bcef03Schristos.Pp 393fec65c98SchristosProvides 3949ff1f2acSchristos.Vt struct man_macro 3959ff1f2acSchristosand some functions internal to the 396fec65c98Schristos.Xr man 7 397fec65c98Schristosparser. 398fec65c98Schristos.Pp 3999ff1f2acSchristosUses the types 4009ff1f2acSchristos.Vt struct roff_node 401fec65c98Schristosfrom 4029ff1f2acSchristos.Pa roff.h 403*544c191cSchristosand 404*544c191cSchristos.Vt struct roff_man 405*544c191cSchristosfrom 406*544c191cSchristos.Pa roff_int.h 4079ff1f2acSchristosas opaque types for function prototypes. 408fec65c98Schristos.Pp 409fec65c98SchristosWhen this header is included, the same file should not include 410*544c191cSchristosinterfaces of different parsers. 411*544c191cSchristos.It Qq Pa eqn_parse.h 412*544c191cSchristosExternal interface of the 413*544c191cSchristos.Xr eqn 7 414*544c191cSchristosparser, for use in the 415*544c191cSchristos.Xr roff 7 416*544c191cSchristosand 417*544c191cSchristos.Xr eqn 7 418*544c191cSchristosparsers only. 419*544c191cSchristos.Pp 420fec65c98SchristosRequires 421fec65c98Schristos.In sys/types.h 422fec65c98Schristosfor 423*544c191cSchristos.Vt size_t . 424*544c191cSchristos.Pp 425*544c191cSchristosProvides 426*544c191cSchristos.Vt struct eqn_node 427*544c191cSchristosand the functions 428*544c191cSchristos.Fn eqn_alloc , 429*544c191cSchristos.Fn eqn_box_new , 430*544c191cSchristos.Fn eqn_box_free , 431*544c191cSchristos.Fn eqn_free , 432*544c191cSchristos.Fn eqn_parse , 433*544c191cSchristos.Fn eqn_read , 434c9bcef03Schristosand 435*544c191cSchristos.Fn eqn_reset . 436*544c191cSchristos.Pp 437*544c191cSchristosUses the type 438*544c191cSchristos.Vt struct eqn_box 439*544c191cSchristosfrom 440*544c191cSchristos.Pa mandoc.h 441*544c191cSchristosas an opaque type for function prototypes. 442*544c191cSchristosUses the types 443*544c191cSchristos.Vt struct roff_node 444*544c191cSchristosfrom 445*544c191cSchristos.Pa roff.h 446*544c191cSchristosand 447*544c191cSchristos.Vt struct eqn_def 448*544c191cSchristosfrom 449*544c191cSchristos.Pa eqn.c 450*544c191cSchristosas opaque struct members. 451*544c191cSchristos.Pp 452*544c191cSchristosWhen this header is included, the same file should not include 453*544c191cSchristosinternals of different parsers. 454*544c191cSchristos.It Qq Pa tbl_parse.h 455*544c191cSchristosExternal interface of the 456*544c191cSchristos.Xr tbl 7 457*544c191cSchristosparser, for use in the 458*544c191cSchristos.Xr roff 7 459*544c191cSchristosand 460*544c191cSchristos.Xr tbl 7 461*544c191cSchristosparsers only. 462*544c191cSchristos.Pp 463*544c191cSchristosProvides the functions documented in 464*544c191cSchristos.Xr tbl 3 . 465*544c191cSchristos.Pp 466*544c191cSchristosUses the types 467*544c191cSchristos.Vt struct tbl_span 468*544c191cSchristosfrom 469*544c191cSchristos.Pa tbl.h 470*544c191cSchristosand 471*544c191cSchristos.Vt struct tbl_node 472*544c191cSchristosfrom 473*544c191cSchristos.Pa tbl_int.h 474*544c191cSchristosas opaque types for function prototypes. 475*544c191cSchristos.Pp 476*544c191cSchristosWhen this header is included, the same file should not include 477*544c191cSchristosinternals of different parsers. 478*544c191cSchristos.It Qq Pa tbl_int.h 479*544c191cSchristosInternal interfaces of the 480*544c191cSchristos.Xr tbl 7 481*544c191cSchristosparser, for use inside the 482*544c191cSchristos.Xr tbl 7 483*544c191cSchristosparser only. 484*544c191cSchristos.Pp 485*544c191cSchristosRequires 486*544c191cSchristos.Qq Pa tbl.h 487fec65c98Schristosfor 488*544c191cSchristos.Vt struct tbl_opts . 489fec65c98Schristos.Pp 490fec65c98SchristosProvides 491fec65c98Schristos.Vt enum tbl_part , 492fec65c98Schristos.Vt struct tbl_node , 493*544c191cSchristosand the functions 494*544c191cSchristos.Fn tbl_option , 495*544c191cSchristos.Fn tbl_layout , 496*544c191cSchristos.Fn tbl_data , 497*544c191cSchristos.Fn tbl_cdata , 498fec65c98Schristosand 499*544c191cSchristos.Fn tbl_reset . 500fec65c98Schristos.Pp 501fec65c98SchristosWhen this header is included, the same file should not include 502*544c191cSchristosinterfaces of different parsers. 503fec65c98Schristos.El 504fec65c98Schristos.Ss Formatter interface 505fec65c98SchristosThese headers should be included after any parser interface headers. 506fec65c98SchristosNo parser internal headers should be included by the same file. 507fec65c98Schristos.Bl -tag -width Ds 508fec65c98Schristos.It Qq Pa out.h 509fec65c98SchristosRequires 510fec65c98Schristos.In sys/types.h 511fec65c98Schristosfor 512fec65c98Schristos.Vt size_t . 513fec65c98Schristos.Pp 514fec65c98SchristosProvides 515fec65c98Schristos.Vt enum roffscale , 516fec65c98Schristos.Vt struct roffcol , 517fec65c98Schristos.Vt struct roffsu , 518fec65c98Schristos.Vt struct rofftbl , 519fec65c98Schristos.Fn a2roffsu , 520fec65c98Schristosand 521fec65c98Schristos.Fn tblcalc . 522fec65c98Schristos.Pp 523fec65c98SchristosUses 524fec65c98Schristos.Vt struct tbl_span 525fec65c98Schristosfrom 526fec65c98Schristos.Pa mandoc.h 527fec65c98Schristosas an opaque type for function prototypes. 528fec65c98Schristos.Pp 529fec65c98SchristosWhen this header is included, the same file should not include 530fec65c98Schristos.Pa mansearch.h . 531fec65c98Schristos.It Qq Pa term.h 532fec65c98SchristosRequires 533fec65c98Schristos.In sys/types.h 534fec65c98Schristosfor 535fec65c98Schristos.Vt size_t 536fec65c98Schristosand 537fec65c98Schristos.Qq Pa out.h 538fec65c98Schristosfor 539fec65c98Schristos.Vt struct roffsu 540fec65c98Schristosand 541fec65c98Schristos.Vt struct rofftbl . 542fec65c98Schristos.Pp 543fec65c98SchristosProvides 544fec65c98Schristos.Vt enum termenc , 545fec65c98Schristos.Vt enum termfont , 546fec65c98Schristos.Vt enum termtype , 547fec65c98Schristos.Vt struct termp_tbl , 548fec65c98Schristos.Vt struct termp , 549c9bcef03Schristos.Fn roff_term_pre , 550fec65c98Schristosand many terminal formatting functions. 551fec65c98Schristos.Pp 5529ff1f2acSchristosUses the opaque type 553fec65c98Schristos.Vt struct termp_ps 554fec65c98Schristosfrom 555fec65c98Schristos.Pa term_ps.c . 556fec65c98SchristosUses 557fec65c98Schristos.Vt struct tbl_span 558fec65c98Schristosand 559c9bcef03Schristos.Vt struct eqn_box 560fec65c98Schristosfrom 561fec65c98Schristos.Pa mandoc.h 5629ff1f2acSchristosand 5639ff1f2acSchristos.Vt struct roff_meta 564c9bcef03Schristosand 565c9bcef03Schristos.Vt struct roff_node 5669ff1f2acSchristosfrom 5679ff1f2acSchristos.Pa roff.h 568fec65c98Schristosas opaque types for function prototypes. 569fec65c98Schristos.Pp 570fec65c98SchristosWhen this header is included, the same file should not include 5719ff1f2acSchristos.Pa html.h 572fec65c98Schristosor 573fec65c98Schristos.Pa mansearch.h . 574fec65c98Schristos.It Qq Pa html.h 575fec65c98SchristosRequires 576fec65c98Schristos.In sys/types.h 577fec65c98Schristosfor 578*544c191cSchristos.Vt size_t , 579*544c191cSchristos.Pa mandoc.h 580*544c191cSchristosfor 581*544c191cSchristos.Vt enum mandoc_esc , 582fec65c98Schristosand 583fec65c98Schristos.Qq Pa out.h 584fec65c98Schristosfor 585fec65c98Schristos.Vt struct roffsu 586fec65c98Schristosand 587fec65c98Schristos.Vt struct rofftbl . 588fec65c98Schristos.Pp 589fec65c98SchristosProvides 590fec65c98Schristos.Vt enum htmltag , 591fec65c98Schristos.Vt enum htmlattr , 592fec65c98Schristos.Vt enum htmlfont , 593fec65c98Schristos.Vt struct tag , 594fec65c98Schristos.Vt struct tagq , 595fec65c98Schristos.Vt struct htmlpair , 596fec65c98Schristos.Vt struct html , 597c9bcef03Schristos.Fn roff_html_pre , 598fec65c98Schristosand many HTML formatting functions. 599fec65c98Schristos.Pp 600c9bcef03SchristosUses 601c9bcef03Schristos.Vt struct tbl_span 602c9bcef03Schristosand 603c9bcef03Schristos.Vt struct eqn_box 604c9bcef03Schristosfrom 605c9bcef03Schristos.Pa mandoc.h 606c9bcef03Schristosand 607c9bcef03Schristos.Vt struct roff_node 608c9bcef03Schristosfrom 609c9bcef03Schristos.Pa roff.h 610c9bcef03Schristosas opaque types for function prototypes. 611c9bcef03Schristos.Pp 612fec65c98SchristosWhen this header is included, the same file should not include 6139ff1f2acSchristos.Pa term.h 614fec65c98Schristosor 615fec65c98Schristos.Pa mansearch.h . 6169ff1f2acSchristos.It Qq Pa tag.h 6179ff1f2acSchristosRequires 6189ff1f2acSchristos.In sys/types.h 6199ff1f2acSchristosfor 6209ff1f2acSchristos.Vt size_t . 6219ff1f2acSchristos.Pp 6229ff1f2acSchristosProvides an interface to generate 6239ff1f2acSchristos.Xr ctags 1 6249ff1f2acSchristosfiles for the 6259ff1f2acSchristos.Ic :t 6269ff1f2acSchristosfunctionality mentioned in 6279ff1f2acSchristos.Xr man 1 . 628fec65c98Schristos.It Qq Pa main.h 629fec65c98SchristosProvides the top level steering functions for all formatters. 630fec65c98Schristos.Pp 6319ff1f2acSchristosUses the type 632*544c191cSchristos.Vt struct roff_meta 633fec65c98Schristosfrom 6349ff1f2acSchristos.Pa roff.h 6359ff1f2acSchristosas an opaque type for function prototypes. 6369ff1f2acSchristos.It Qq Pa manconf.h 637fec65c98SchristosRequires 638fec65c98Schristos.In sys/types.h 639fec65c98Schristosfor 640fec65c98Schristos.Vt size_t . 641fec65c98Schristos.Pp 642fec65c98SchristosProvides 6439ff1f2acSchristos.Vt struct manconf , 6449ff1f2acSchristos.Vt struct manpaths , 6459ff1f2acSchristos.Vt struct manoutput , 646fec65c98Schristosand the functions 6479ff1f2acSchristos.Fn manconf_parse , 6489ff1f2acSchristos.Fn manconf_output , 649c9bcef03Schristos.Fn manconf_free , 650fec65c98Schristosand 651c9bcef03Schristos.Fn manpath_base . 652fec65c98Schristos.It Qq Pa mansearch.h 653fec65c98SchristosRequires 654fec65c98Schristos.In sys/types.h 655fec65c98Schristosfor 656fec65c98Schristos.Vt size_t 657fec65c98Schristosand 658fec65c98Schristos.In stdint.h 659fec65c98Schristosfor 660fec65c98Schristos.Vt uint64_t . 661fec65c98Schristos.Pp 662fec65c98SchristosProvides 663fec65c98Schristos.Vt enum argmode , 664fec65c98Schristos.Vt struct manpage , 665fec65c98Schristos.Vt struct mansearch , 666fec65c98Schristosand the functions 667c9bcef03Schristos.Fn mansearch 668fec65c98Schristosand 669fec65c98Schristos.Fn mansearch_free . 670fec65c98Schristos.Pp 671fec65c98SchristosUses 672fec65c98Schristos.Vt struct manpaths 673fec65c98Schristosfrom 6749ff1f2acSchristos.Pa manconf.h 675fec65c98Schristosas an opaque type for function prototypes. 676fec65c98Schristos.Pp 677fec65c98SchristosWhen this header is included, the same file should not include 678fec65c98Schristos.Pa out.h , 679fec65c98Schristos.Pa term.h , 680fec65c98Schristosor 681fec65c98Schristos.Pa html.h . 682fec65c98Schristos.El 683