Annotation of mandoc/mandoc_headers.3, Revision 1.35
1.35 ! schwarze 1: .\" $Id: mandoc_headers.3,v 1.34 2021/08/10 12:55:03 schwarze Exp $
1.31 schwarze 2: .\"
1.35 ! schwarze 3: .\" Copyright (c) 2014-2022 Ingo Schwarze <schwarze@openbsd.org>
1.31 schwarze 4: .\"
5: .\" Permission to use, copy, modify, and distribute this software for any
6: .\" purpose with or without fee is hereby granted, provided that the above
7: .\" copyright notice and this permission notice appear in all copies.
8: .\"
9: .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10: .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11: .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12: .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13: .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14: .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15: .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16: .\"
1.35 ! schwarze 17: .Dd $Mdocdate: August 10 2021 $
1.1 schwarze 18: .Dt MANDOC_HEADERS 3
19: .Os
20: .Sh NAME
21: .Nm mandoc_headers
22: .Nd ordering of mandoc include files
23: .Sh DESCRIPTION
24: To support a cleaner coding style, the mandoc header files do not
25: contain any include directives and do not guard against multiple
26: inclusion.
27: The application developer has to make sure that the headers are
1.35 ! schwarze 28: included in the order shown in this manual page,
! 29: and that no header is included more than once.
1.1 schwarze 30: .Pp
31: The headers and functions form three major groups:
32: .Sx Parser interface ,
33: .Sx Parser internals ,
34: and
35: .Sx Formatter interface .
36: .Pp
37: Various rules are given below prohibiting the inclusion of certain
38: combinations of headers into the same file.
39: The intention is to keep the following functional components
40: separate from each other:
41: .Pp
42: .Bl -dash -offset indent -compact
43: .It
1.20 schwarze 44: .Xr roff 7
45: parser
46: .It
1.1 schwarze 47: .Xr mdoc 7
48: parser
49: .It
50: .Xr man 7
51: parser
52: .It
53: .Xr tbl 7
54: parser
55: .It
56: .Xr eqn 7
57: parser
58: .It
59: terminal formatters
60: .It
61: HTML formatters
62: .It
63: search tools
1.20 schwarze 64: .It
65: main programs
1.1 schwarze 66: .El
67: .Pp
1.2 schwarze 68: Note that mere usage of an opaque struct type does
1.1 schwarze 69: .Em not
70: require inclusion of the header where that type is defined.
71: .Ss Parser interface
72: Each of the following headers can be included without including
73: any other mandoc header.
74: These headers should be included before any other mandoc headers.
75: .Bl -tag -width Ds
76: .It Qq Pa mandoc_aux.h
1.20 schwarze 77: Memory allocation utility functions; can be used everywhere.
78: .Pp
1.1 schwarze 79: Requires
80: .In sys/types.h
81: for
82: .Vt size_t .
1.11 schwarze 83: .Pp
1.20 schwarze 84: Provides the functions documented in
1.1 schwarze 85: .Xr mandoc_malloc 3 .
1.35 ! schwarze 86: .Pp
! 87: When this header is included, the same file must not include
! 88: .Qq Pa mandoc_dbg.h
! 89: because
! 90: .Qq Pa mandoc_aux.h
! 91: automatically includes
! 92: .Qq Pa mandoc_dbg.h
! 93: if and only if the preprocessor symbol
! 94: .Dv DEBUG_MEMORY
! 95: is defined.
! 96: .It Qq Pa mandoc_dbg.h
! 97: Debugging utility functions and
! 98: debugging wrappers around memory allocation functions.
! 99: .Pp
! 100: Requires
! 101: .In sys/types.h
! 102: for
! 103: .Vt size_t .
! 104: .Pp
! 105: Provides the functions documented in
! 106: .Xr mandoc_dbg_init 3 .
! 107: .Pp
! 108: This header must not be included unless the preprocessor symbol
! 109: .Dv DEBUG_MEMORY
! 110: is defined.
! 111: When this header is included, the same file must not include
! 112: .Qq Pa mandoc_aux.h .
1.8 schwarze 113: .It Qq Pa mandoc_ohash.h
1.20 schwarze 114: Hashing utility functions; can be used everywhere.
115: .Pp
1.11 schwarze 116: Requires
117: .In stddef.h
118: for
119: .Vt ptrdiff_t
120: and
121: .In stdint.h
122: for
123: .Vt uint32_t .
124: .Pp
1.8 schwarze 125: Includes
126: .In ohash.h
127: and provides
128: .Fn mandoc_ohash_init .
1.1 schwarze 129: .It Qq Pa mandoc.h
1.26 schwarze 130: Error handling, escape sequence, and character utilities;
1.20 schwarze 131: can be used everywhere.
132: .Pp
1.1 schwarze 133: Requires
134: .In sys/types.h
135: for
1.27 schwarze 136: .Vt size_t
137: and
138: .In stdio.h
139: for
140: .Vt FILE .
1.1 schwarze 141: .Pp
142: Provides
143: .Vt enum mandoc_esc ,
144: .Vt enum mandocerr ,
145: .Vt enum mandoclevel ,
146: the function
147: .Xr mandoc_escape 3 ,
1.27 schwarze 148: the functions described in
149: .Xr mchars_alloc 3 ,
150: and the
151: .Fn mandoc_msg*
152: functions.
1.26 schwarze 153: .It Qq Pa roff.h
154: Common data types for all syntax trees and related functions;
155: can be used everywhere.
156: .Pp
157: Provides
158: .Vt enum mandoc_os ,
159: .Vt enum mdoc_endbody ,
160: .Vt enum roff_macroset ,
161: .Vt enum roff_sec ,
162: .Vt enum roff_tok ,
163: .Vt enum roff_type ,
164: .Vt struct roff_man ,
165: .Vt struct roff_meta ,
166: .Vt struct roff_node ,
167: the constant array
168: .Va roff_name
1.30 schwarze 169: and the function
170: .Fn deroff .
1.1 schwarze 171: .Pp
1.26 schwarze 172: Uses pointers to the types
173: .Vt struct ohash
1.1 schwarze 174: from
1.31 schwarze 175: .Qq Pa mandoc_ohash.h ,
1.26 schwarze 176: .Vt struct mdoc_arg
177: and
178: .Vt union mdoc_data
1.1 schwarze 179: from
1.31 schwarze 180: .Qq Pa mdoc.h ,
1.30 schwarze 181: .Vt struct tbl_span
182: from
1.31 schwarze 183: .Qq Pa tbl.h ,
1.30 schwarze 184: and
185: .Vt struct eqn_box
186: from
1.31 schwarze 187: .Qq Pa eqn.h
1.26 schwarze 188: as opaque struct members.
1.20 schwarze 189: .It Qq Pa tbl.h
190: Data structures for the
191: .Xr tbl 7
192: parse tree; can be used everywhere.
193: .Pp
194: Requires
195: .In sys/types.h
196: for
1.34 schwarze 197: .Vt size_t
198: and
199: .Qq Pa mandoc.h
200: for
201: .Vt enum mandoc_esc .
1.20 schwarze 202: .Pp
203: Provides
204: .Vt enum tbl_cellt ,
205: .Vt enum tbl_datt ,
206: .Vt enum tbl_spant ,
207: .Vt struct tbl_opts ,
208: .Vt struct tbl_cell ,
209: .Vt struct tbl_row ,
210: .Vt struct tbl_dat ,
211: and
212: .Vt struct tbl_span .
1.23 schwarze 213: .It Qq Pa eqn.h
214: Data structures for the
215: .Xr eqn 7
216: parse tree; can be used everywhere.
217: .Pp
218: Requires
219: .In sys/types.h
220: for
221: .Vt size_t .
222: .Pp
223: Provides
224: .Vt enum eqn_boxt ,
225: .Vt enum eqn_fontt ,
226: .Vt enum eqn_post ,
227: and
228: .Vt struct eqn_box .
1.26 schwarze 229: .It Qq Pa mandoc_parse.h
230: Top level parser interface, for use in the main program
231: and in the main parser, but not in formatters.
232: .Pp
233: Requires
1.31 schwarze 234: .Qq Pa mandoc.h
1.26 schwarze 235: for
1.30 schwarze 236: .Vt enum mandocerr
1.26 schwarze 237: and
1.30 schwarze 238: .Vt enum mandoclevel
1.26 schwarze 239: and
1.31 schwarze 240: .Qq Pa roff.h
1.26 schwarze 241: for
242: .Vt enum mandoc_os .
243: .Pp
1.28 schwarze 244: Uses the opaque type
1.26 schwarze 245: .Vt struct mparse
246: from
247: .Pa read.c
248: for function prototypes.
249: Uses
1.30 schwarze 250: .Vt struct roff_meta
1.26 schwarze 251: from
1.31 schwarze 252: .Qq Pa roff.h
1.26 schwarze 253: as an opaque type for function prototypes.
1.15 schwarze 254: .It Qq Pa mandoc_xr.h
1.20 schwarze 255: Cross reference validation; intended for use in the main program
256: and in parsers, but not in formatters.
257: .Pp
1.15 schwarze 258: Provides
259: .Vt struct mandoc_xr
260: and the functions
261: .Fn mandoc_xr_reset ,
262: .Fn mandoc_xr_add ,
263: .Fn mandoc_xr_get ,
264: and
265: .Fn mandoc_xr_free .
1.33 schwarze 266: .It Qq Pa tag.h
267: Internal interfaces to tag syntax tree nodes,
268: for use by validation modules only.
269: .Pp
270: Requires
271: .In limits.h
272: for
273: .Dv INT_MAX .
274: .Pp
275: Provides the functions
276: .Fn tag_alloc ,
277: .Fn tag_put ,
278: .Fn tag_check ,
279: and
280: .Fn tag_free
281: and some
282: .Dv TAG_*
283: constants.
284: .Pp
285: Uses the type
286: .Vt struct roff_node
287: from
288: .Qq Pa roff.h
289: as an opaque type for function prototypes.
1.4 schwarze 290: .El
291: .Pp
292: The following two require
293: .Qq Pa roff.h
294: but no other mandoc headers.
295: Afterwards, any other mandoc headers can be included as needed.
296: .Bl -tag -width Ds
1.1 schwarze 297: .It Qq Pa mdoc.h
298: Requires
299: .In sys/types.h
300: for
1.8 schwarze 301: .Vt size_t .
1.1 schwarze 302: .Pp
303: Provides
304: .Vt enum mdocargt ,
1.8 schwarze 305: .Vt enum mdoc_auth ,
1.1 schwarze 306: .Vt enum mdoc_disp ,
1.8 schwarze 307: .Vt enum mdoc_font ,
1.1 schwarze 308: .Vt enum mdoc_list ,
309: .Vt struct mdoc_argv ,
310: .Vt struct mdoc_arg ,
1.8 schwarze 311: .Vt struct mdoc_an ,
1.1 schwarze 312: .Vt struct mdoc_bd ,
1.8 schwarze 313: .Vt struct mdoc_bf ,
1.1 schwarze 314: .Vt struct mdoc_bl ,
315: .Vt struct mdoc_rs ,
1.8 schwarze 316: .Vt union mdoc_data ,
1.1 schwarze 317: and the functions
318: .Fn mdoc_*
319: described in
320: .Xr mandoc 3 .
321: .Pp
1.30 schwarze 322: Uses the types
323: .Vt struct roff_node
324: from
1.31 schwarze 325: .Qq Pa roff.h
1.30 schwarze 326: and
1.8 schwarze 327: .Vt struct roff_man
1.1 schwarze 328: from
1.31 schwarze 329: .Qq Pa roff_int.h
1.30 schwarze 330: as opaque types for function prototypes.
1.1 schwarze 331: .Pp
332: When this header is included, the same file should not include
1.22 schwarze 333: internals of different parsers.
1.1 schwarze 334: .It Qq Pa man.h
1.6 schwarze 335: Provides the functions
1.1 schwarze 336: .Fn man_*
337: described in
338: .Xr mandoc 3 .
339: .Pp
340: Uses the type
1.8 schwarze 341: .Vt struct roff_man
1.1 schwarze 342: from
1.31 schwarze 343: .Qq Pa roff.h
1.1 schwarze 344: as an opaque type for function prototypes.
345: .Pp
346: When this header is included, the same file should not include
1.22 schwarze 347: internals of different parsers.
1.1 schwarze 348: .El
349: .Ss Parser internals
1.21 schwarze 350: Most of the following headers require inclusion of a parser interface header
1.9 schwarze 351: before they can be included.
352: All parser interface headers should precede all parser internal headers.
353: When any parser internal headers are included, the same file should
354: not include any formatter headers.
1.1 schwarze 355: .Bl -tag -width Ds
356: .It Qq Pa libmandoc.h
357: Requires
358: .In sys/types.h
359: for
1.8 schwarze 360: .Vt size_t
361: and
1.6 schwarze 362: .Qq Pa mandoc.h
363: for
1.8 schwarze 364: .Vt enum mandocerr .
1.1 schwarze 365: .Pp
366: Provides
367: .Vt struct buf ,
368: utility functions needed by multiple parsers,
369: and the top-level functions to call the parsers.
370: .Pp
1.28 schwarze 371: Uses the opaque type
1.1 schwarze 372: .Vt struct roff
373: from
374: .Pa roff.c
375: for function prototypes.
1.18 schwarze 376: Uses the type
1.8 schwarze 377: .Vt struct roff_man
378: from
1.31 schwarze 379: .Qq Pa roff.h
1.18 schwarze 380: as an opaque type for function prototypes.
1.8 schwarze 381: .It Qq Pa roff_int.h
1.24 schwarze 382: Parser internals shared by multiple parsers.
383: Can be used in all parsers, but not in main programs or formatters.
384: .Pp
1.8 schwarze 385: Requires
386: .Qq Pa roff.h
387: for
1.24 schwarze 388: .Vt enum roff_type
389: and
390: .Vt enum roff_tok .
1.8 schwarze 391: .Pp
1.30 schwarze 392: Provides
393: .Vt enum roff_next ,
394: .Vt struct roff_man ,
395: functions named
1.8 schwarze 396: .Fn roff_*
1.24 schwarze 397: to handle roff nodes,
398: .Fn roffhash_alloc ,
399: .Fn roffhash_find ,
1.30 schwarze 400: .Fn roffhash_free ,
1.24 schwarze 401: and
1.30 schwarze 402: .Fn roff_validate ,
1.24 schwarze 403: and the two special functions
1.8 schwarze 404: .Fn man_breakscope
405: and
406: .Fn mdoc_argv_free
407: because the latter two are needed by
1.31 schwarze 408: .Pa roff.c .
1.8 schwarze 409: .Pp
410: Uses the types
1.30 schwarze 411: .Vt struct ohash
412: from
1.31 schwarze 413: .Qq Pa mandoc_ohash.h ,
1.30 schwarze 414: .Vt struct roff_node
1.8 schwarze 415: and
1.30 schwarze 416: .Vt struct roff_meta
417: from
1.31 schwarze 418: .Qq Pa roff.h ,
1.30 schwarze 419: .Vt struct roff
1.1 schwarze 420: from
1.30 schwarze 421: .Pa roff.c ,
1.1 schwarze 422: and
1.8 schwarze 423: .Vt struct mdoc_arg
1.1 schwarze 424: from
1.31 schwarze 425: .Qq Pa mdoc.h
1.1 schwarze 426: as opaque types for function prototypes.
427: .It Qq Pa libmdoc.h
428: Requires
1.10 schwarze 429: .Qq Pa roff.h
430: for
431: .Vt enum roff_tok
432: and
1.25 schwarze 433: .Vt enum roff_sec .
1.1 schwarze 434: .Pp
435: Provides
436: .Vt enum margserr ,
437: .Vt enum mdelim ,
438: .Vt struct mdoc_macro ,
439: and many functions internal to the
440: .Xr mdoc 7
441: parser.
442: .Pp
1.8 schwarze 443: Uses the types
1.30 schwarze 444: .Vt struct roff_node
445: from
1.31 schwarze 446: .Qq Pa roff.h ,
1.8 schwarze 447: .Vt struct roff_man
1.1 schwarze 448: from
1.31 schwarze 449: .Qq Pa roff_int.h ,
1.25 schwarze 450: and
451: .Vt struct mdoc_arg
452: from
1.31 schwarze 453: .Qq Pa mdoc.h
1.8 schwarze 454: as opaque types for function prototypes.
1.1 schwarze 455: .Pp
456: When this header is included, the same file should not include
1.22 schwarze 457: interfaces of different parsers.
1.1 schwarze 458: .It Qq Pa libman.h
1.10 schwarze 459: Requires
460: .Qq Pa roff.h
461: for
462: .Vt enum roff_tok .
1.11 schwarze 463: .Pp
1.1 schwarze 464: Provides
1.8 schwarze 465: .Vt struct man_macro
466: and some functions internal to the
1.1 schwarze 467: .Xr man 7
468: parser.
469: .Pp
1.8 schwarze 470: Uses the types
471: .Vt struct roff_node
1.1 schwarze 472: from
1.31 schwarze 473: .Qq Pa roff.h
1.30 schwarze 474: and
475: .Vt struct roff_man
476: from
1.31 schwarze 477: .Qq Pa roff_int.h
1.8 schwarze 478: as opaque types for function prototypes.
1.1 schwarze 479: .Pp
480: When this header is included, the same file should not include
1.22 schwarze 481: interfaces of different parsers.
482: .It Qq Pa eqn_parse.h
483: External interface of the
484: .Xr eqn 7
485: parser, for use in the
486: .Xr roff 7
487: and
488: .Xr eqn 7
489: parsers only.
490: .Pp
1.1 schwarze 491: Requires
492: .In sys/types.h
493: for
1.22 schwarze 494: .Vt size_t .
1.1 schwarze 495: .Pp
496: Provides
1.22 schwarze 497: .Vt struct eqn_node
498: and the functions
499: .Fn eqn_alloc ,
1.23 schwarze 500: .Fn eqn_box_new ,
1.22 schwarze 501: .Fn eqn_box_free ,
502: .Fn eqn_free ,
503: .Fn eqn_parse ,
504: .Fn eqn_read ,
505: and
506: .Fn eqn_reset .
1.1 schwarze 507: .Pp
1.22 schwarze 508: Uses the type
509: .Vt struct eqn_box
510: from
1.31 schwarze 511: .Qq Pa mandoc.h
1.22 schwarze 512: as an opaque type for function prototypes.
513: Uses the types
514: .Vt struct roff_node
515: from
1.31 schwarze 516: .Qq Pa roff.h
1.22 schwarze 517: and
518: .Vt struct eqn_def
519: from
520: .Pa eqn.c
521: as opaque struct members.
1.1 schwarze 522: .Pp
523: When this header is included, the same file should not include
1.22 schwarze 524: internals of different parsers.
1.21 schwarze 525: .It Qq Pa tbl_parse.h
526: External interface of the
527: .Xr tbl 7
528: parser, for use in the
529: .Xr roff 7
530: and
531: .Xr tbl 7
532: parsers only.
533: .Pp
534: Provides the functions documented in
535: .Xr tbl 3 .
536: .Pp
537: Uses the types
538: .Vt struct tbl_span
539: from
1.31 schwarze 540: .Qq Pa tbl.h
1.21 schwarze 541: and
542: .Vt struct tbl_node
543: from
1.31 schwarze 544: .Qq Pa tbl_int.h
1.21 schwarze 545: as opaque types for function prototypes.
546: .Pp
547: When this header is included, the same file should not include
1.22 schwarze 548: internals of different parsers.
1.21 schwarze 549: .It Qq Pa tbl_int.h
550: Internal interfaces of the
551: .Xr tbl 7
552: parser, for use inside the
553: .Xr tbl 7
554: parser only.
555: .Pp
556: Requires
557: .Qq Pa tbl.h
558: for
559: .Vt struct tbl_opts .
560: .Pp
561: Provides
562: .Vt enum tbl_part ,
563: .Vt struct tbl_node ,
564: and the functions
565: .Fn tbl_option ,
566: .Fn tbl_layout ,
567: .Fn tbl_data ,
568: .Fn tbl_cdata ,
569: and
570: .Fn tbl_reset .
571: .Pp
572: When this header is included, the same file should not include
573: interfaces of different parsers.
1.1 schwarze 574: .El
575: .Ss Formatter interface
576: These headers should be included after any parser interface headers.
577: No parser internal headers should be included by the same file.
578: .Bl -tag -width Ds
579: .It Qq Pa out.h
580: Requires
581: .In sys/types.h
582: for
583: .Vt size_t .
584: .Pp
585: Provides
586: .Vt enum roffscale ,
587: .Vt struct roffcol ,
588: .Vt struct roffsu ,
589: .Vt struct rofftbl ,
590: .Fn a2roffsu ,
591: and
592: .Fn tblcalc .
593: .Pp
594: Uses
595: .Vt struct tbl_span
596: from
1.31 schwarze 597: .Qq Pa mandoc.h
1.1 schwarze 598: as an opaque type for function prototypes.
599: .Pp
600: When this header is included, the same file should not include
1.31 schwarze 601: .Qq Pa mansearch.h .
1.1 schwarze 602: .It Qq Pa term.h
603: Requires
604: .In sys/types.h
605: for
606: .Vt size_t
607: and
608: .Qq Pa out.h
609: for
610: .Vt struct roffsu
611: and
612: .Vt struct rofftbl .
613: .Pp
614: Provides
615: .Vt enum termenc ,
616: .Vt enum termfont ,
617: .Vt enum termtype ,
618: .Vt struct termp_tbl ,
619: .Vt struct termp ,
1.12 schwarze 620: .Fn roff_term_pre ,
1.1 schwarze 621: and many terminal formatting functions.
622: .Pp
1.7 schwarze 623: Uses the opaque type
1.1 schwarze 624: .Vt struct termp_ps
625: from
626: .Pa term_ps.c .
627: Uses
628: .Vt struct tbl_span
629: and
1.17 schwarze 630: .Vt struct eqn_box
1.1 schwarze 631: from
1.31 schwarze 632: .Qq Pa mandoc.h
1.6 schwarze 633: and
634: .Vt struct roff_meta
1.12 schwarze 635: and
636: .Vt struct roff_node
1.6 schwarze 637: from
1.31 schwarze 638: .Qq Pa roff.h
1.1 schwarze 639: as opaque types for function prototypes.
640: .Pp
641: When this header is included, the same file should not include
1.31 schwarze 642: .Qq Pa html.h
1.1 schwarze 643: or
1.31 schwarze 644: .Qq Pa mansearch.h .
1.33 schwarze 645: .It Qq Pa tag_term.h
646: Requires
647: .In sys/types.h
648: for
649: .Vt size_t
650: and
651: .In stdio.h
652: for
653: .Vt FILE .
654: .Pp
655: Provides an interface to generate
656: .Xr ctags 1
657: files for the
658: .Ic :t
659: functionality mentioned in
660: .Xr man 1 .
661: .Pp
662: Uses the type
663: .Vt struct roff_node
664: from
665: .Qq Pa roff.h
666: as an opaque type for function prototypes.
667: .Pp
668: When this header is included, the same file should not include
669: .Qq Pa html.h
670: or
671: .Qq Pa mansearch.h .
1.1 schwarze 672: .It Qq Pa html.h
673: Requires
674: .In sys/types.h
675: for
1.29 schwarze 676: .Vt size_t ,
1.31 schwarze 677: .Qq Pa mandoc.h
1.29 schwarze 678: for
679: .Vt enum mandoc_esc ,
1.31 schwarze 680: .Qq Pa roff.h
681: for
682: .Vt enum roff_tok ,
1.1 schwarze 683: and
684: .Qq Pa out.h
685: for
686: .Vt struct roffsu
687: and
688: .Vt struct rofftbl .
689: .Pp
690: Provides
691: .Vt enum htmltag ,
692: .Vt enum htmlattr ,
693: .Vt enum htmlfont ,
694: .Vt struct tag ,
695: .Vt struct tagq ,
696: .Vt struct htmlpair ,
697: .Vt struct html ,
1.12 schwarze 698: .Fn roff_html_pre ,
1.1 schwarze 699: and many HTML formatting functions.
1.12 schwarze 700: .Pp
701: Uses
702: .Vt struct tbl_span
703: and
1.17 schwarze 704: .Vt struct eqn_box
1.12 schwarze 705: from
1.31 schwarze 706: .Qq Pa mandoc.h
1.12 schwarze 707: and
708: .Vt struct roff_node
709: from
1.31 schwarze 710: .Qq Pa roff.h
1.12 schwarze 711: as opaque types for function prototypes.
1.1 schwarze 712: .Pp
713: When this header is included, the same file should not include
1.33 schwarze 714: .Qq Pa term.h ,
715: .Qq Pa tab_term.h ,
1.1 schwarze 716: or
1.31 schwarze 717: .Qq Pa mansearch.h .
1.1 schwarze 718: .It Qq Pa main.h
719: Provides the top level steering functions for all formatters.
720: .Pp
1.8 schwarze 721: Uses the type
1.30 schwarze 722: .Vt struct roff_meta
1.1 schwarze 723: from
1.31 schwarze 724: .Qq Pa roff.h
1.8 schwarze 725: as an opaque type for function prototypes.
1.3 schwarze 726: .It Qq Pa manconf.h
1.1 schwarze 727: Requires
728: .In sys/types.h
729: for
730: .Vt size_t .
731: .Pp
732: Provides
1.3 schwarze 733: .Vt struct manconf ,
734: .Vt struct manpaths ,
735: .Vt struct manoutput ,
1.1 schwarze 736: and the functions
1.3 schwarze 737: .Fn manconf_parse ,
738: .Fn manconf_output ,
1.15 schwarze 739: .Fn manconf_free ,
1.1 schwarze 740: and
1.15 schwarze 741: .Fn manpath_base .
1.1 schwarze 742: .It Qq Pa mansearch.h
743: Requires
744: .In sys/types.h
745: for
746: .Vt size_t
747: and
748: .In stdint.h
749: for
750: .Vt uint64_t .
751: .Pp
752: Provides
753: .Vt enum argmode ,
754: .Vt struct manpage ,
755: .Vt struct mansearch ,
756: and the functions
1.9 schwarze 757: .Fn mansearch
1.1 schwarze 758: and
759: .Fn mansearch_free .
760: .Pp
761: Uses
762: .Vt struct manpaths
763: from
1.31 schwarze 764: .Qq Pa manconf.h
1.1 schwarze 765: as an opaque type for function prototypes.
766: .Pp
767: When this header is included, the same file should not include
1.31 schwarze 768: .Qq Pa out.h ,
769: .Qq Pa term.h ,
1.33 schwarze 770: .Qq Pa tab_term.h ,
1.1 schwarze 771: or
1.31 schwarze 772: .Qq Pa html.h .
1.1 schwarze 773: .El
CVSweb