[BACK]Return to mandoc_headers.3 CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Annotation of mandoc/mandoc_headers.3, Revision 1.34

1.34    ! schwarze    1: .\"    $Id: mandoc_headers.3,v 1.33 2020/03/13 15:32:28 schwarze Exp $
1.31      schwarze    2: .\"
1.34    ! schwarze    3: .\" Copyright (c) 2014-2021 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.34    ! schwarze   17: .Dd $Mdocdate: March 13 2020 $
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
                     28: included in a proper order, and that no header is included more
                     29: than once.
                     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.8       schwarze   86: .It Qq Pa mandoc_ohash.h
1.20      schwarze   87: Hashing utility functions; can be used everywhere.
                     88: .Pp
1.11      schwarze   89: Requires
                     90: .In stddef.h
                     91: for
                     92: .Vt ptrdiff_t
                     93: and
                     94: .In stdint.h
                     95: for
                     96: .Vt uint32_t .
                     97: .Pp
1.8       schwarze   98: Includes
                     99: .In ohash.h
                    100: and provides
                    101: .Fn mandoc_ohash_init .
1.1       schwarze  102: .It Qq Pa mandoc.h
1.26      schwarze  103: Error handling, escape sequence, and character utilities;
1.20      schwarze  104: can be used everywhere.
                    105: .Pp
1.1       schwarze  106: Requires
                    107: .In sys/types.h
                    108: for
1.27      schwarze  109: .Vt size_t
                    110: and
                    111: .In stdio.h
                    112: for
                    113: .Vt FILE .
1.1       schwarze  114: .Pp
                    115: Provides
                    116: .Vt enum mandoc_esc ,
                    117: .Vt enum mandocerr ,
                    118: .Vt enum mandoclevel ,
                    119: the function
                    120: .Xr mandoc_escape 3 ,
1.27      schwarze  121: the functions described in
                    122: .Xr mchars_alloc 3 ,
                    123: and the
                    124: .Fn mandoc_msg*
                    125: functions.
1.26      schwarze  126: .It Qq Pa roff.h
                    127: Common data types for all syntax trees and related functions;
                    128: can be used everywhere.
                    129: .Pp
                    130: Provides
                    131: .Vt enum mandoc_os ,
                    132: .Vt enum mdoc_endbody ,
                    133: .Vt enum roff_macroset ,
                    134: .Vt enum roff_sec ,
                    135: .Vt enum roff_tok ,
                    136: .Vt enum roff_type ,
                    137: .Vt struct roff_man ,
                    138: .Vt struct roff_meta ,
                    139: .Vt struct roff_node ,
                    140: the constant array
                    141: .Va roff_name
1.30      schwarze  142: and the function
                    143: .Fn deroff .
1.1       schwarze  144: .Pp
1.26      schwarze  145: Uses pointers to the types
                    146: .Vt struct ohash
1.1       schwarze  147: from
1.31      schwarze  148: .Qq Pa mandoc_ohash.h ,
1.26      schwarze  149: .Vt struct mdoc_arg
                    150: and
                    151: .Vt union mdoc_data
1.1       schwarze  152: from
1.31      schwarze  153: .Qq Pa mdoc.h ,
1.30      schwarze  154: .Vt struct tbl_span
                    155: from
1.31      schwarze  156: .Qq Pa tbl.h ,
1.30      schwarze  157: and
                    158: .Vt struct eqn_box
                    159: from
1.31      schwarze  160: .Qq Pa eqn.h
1.26      schwarze  161: as opaque struct members.
1.20      schwarze  162: .It Qq Pa tbl.h
                    163: Data structures for the
                    164: .Xr tbl 7
                    165: parse tree; can be used everywhere.
                    166: .Pp
                    167: Requires
                    168: .In sys/types.h
                    169: for
1.34    ! schwarze  170: .Vt size_t
        !           171: and
        !           172: .Qq Pa mandoc.h
        !           173: for
        !           174: .Vt enum mandoc_esc .
1.20      schwarze  175: .Pp
                    176: Provides
                    177: .Vt enum tbl_cellt ,
                    178: .Vt enum tbl_datt ,
                    179: .Vt enum tbl_spant ,
                    180: .Vt struct tbl_opts ,
                    181: .Vt struct tbl_cell ,
                    182: .Vt struct tbl_row ,
                    183: .Vt struct tbl_dat ,
                    184: and
                    185: .Vt struct tbl_span .
1.23      schwarze  186: .It Qq Pa eqn.h
                    187: Data structures for the
                    188: .Xr eqn 7
                    189: parse tree; can be used everywhere.
                    190: .Pp
                    191: Requires
                    192: .In sys/types.h
                    193: for
                    194: .Vt size_t .
                    195: .Pp
                    196: Provides
                    197: .Vt enum eqn_boxt ,
                    198: .Vt enum eqn_fontt ,
                    199: .Vt enum eqn_post ,
                    200: and
                    201: .Vt struct eqn_box .
1.26      schwarze  202: .It Qq Pa mandoc_parse.h
                    203: Top level parser interface, for use in the main program
                    204: and in the main parser, but not in formatters.
                    205: .Pp
                    206: Requires
1.31      schwarze  207: .Qq Pa mandoc.h
1.26      schwarze  208: for
1.30      schwarze  209: .Vt enum mandocerr
1.26      schwarze  210: and
1.30      schwarze  211: .Vt enum mandoclevel
1.26      schwarze  212: and
1.31      schwarze  213: .Qq Pa roff.h
1.26      schwarze  214: for
                    215: .Vt enum mandoc_os .
                    216: .Pp
1.28      schwarze  217: Uses the opaque type
1.26      schwarze  218: .Vt struct mparse
                    219: from
                    220: .Pa read.c
                    221: for function prototypes.
                    222: Uses
1.30      schwarze  223: .Vt struct roff_meta
1.26      schwarze  224: from
1.31      schwarze  225: .Qq Pa roff.h
1.26      schwarze  226: as an opaque type for function prototypes.
1.15      schwarze  227: .It Qq Pa mandoc_xr.h
1.20      schwarze  228: Cross reference validation; intended for use in the main program
                    229: and in parsers, but not in formatters.
                    230: .Pp
1.15      schwarze  231: Provides
                    232: .Vt struct mandoc_xr
                    233: and the functions
                    234: .Fn mandoc_xr_reset ,
                    235: .Fn mandoc_xr_add ,
                    236: .Fn mandoc_xr_get ,
                    237: and
                    238: .Fn mandoc_xr_free .
1.33      schwarze  239: .It Qq Pa tag.h
                    240: Internal interfaces to tag syntax tree nodes,
                    241: for use by validation modules only.
                    242: .Pp
                    243: Requires
                    244: .In limits.h
                    245: for
                    246: .Dv INT_MAX .
                    247: .Pp
                    248: Provides the functions
                    249: .Fn tag_alloc ,
                    250: .Fn tag_put ,
                    251: .Fn tag_check ,
                    252: and
                    253: .Fn tag_free
                    254: and some
                    255: .Dv TAG_*
                    256: constants.
                    257: .Pp
                    258: Uses the type
                    259: .Vt struct roff_node
                    260: from
                    261: .Qq Pa roff.h
                    262: as an opaque type for function prototypes.
1.4       schwarze  263: .El
                    264: .Pp
                    265: The following two require
                    266: .Qq Pa roff.h
                    267: but no other mandoc headers.
                    268: Afterwards, any other mandoc headers can be included as needed.
                    269: .Bl -tag -width Ds
1.1       schwarze  270: .It Qq Pa mdoc.h
                    271: Requires
                    272: .In sys/types.h
                    273: for
1.8       schwarze  274: .Vt size_t .
1.1       schwarze  275: .Pp
                    276: Provides
                    277: .Vt enum mdocargt ,
1.8       schwarze  278: .Vt enum mdoc_auth ,
1.1       schwarze  279: .Vt enum mdoc_disp ,
1.8       schwarze  280: .Vt enum mdoc_font ,
1.1       schwarze  281: .Vt enum mdoc_list ,
                    282: .Vt struct mdoc_argv ,
                    283: .Vt struct mdoc_arg ,
1.8       schwarze  284: .Vt struct mdoc_an ,
1.1       schwarze  285: .Vt struct mdoc_bd ,
1.8       schwarze  286: .Vt struct mdoc_bf ,
1.1       schwarze  287: .Vt struct mdoc_bl ,
                    288: .Vt struct mdoc_rs ,
1.8       schwarze  289: .Vt union mdoc_data ,
1.1       schwarze  290: and the functions
                    291: .Fn mdoc_*
                    292: described in
                    293: .Xr mandoc 3 .
                    294: .Pp
1.30      schwarze  295: Uses the types
                    296: .Vt struct roff_node
                    297: from
1.31      schwarze  298: .Qq Pa roff.h
1.30      schwarze  299: and
1.8       schwarze  300: .Vt struct roff_man
1.1       schwarze  301: from
1.31      schwarze  302: .Qq Pa roff_int.h
1.30      schwarze  303: as opaque types for function prototypes.
1.1       schwarze  304: .Pp
                    305: When this header is included, the same file should not include
1.22      schwarze  306: internals of different parsers.
1.1       schwarze  307: .It Qq Pa man.h
1.6       schwarze  308: Provides the functions
1.1       schwarze  309: .Fn man_*
                    310: described in
                    311: .Xr mandoc 3 .
                    312: .Pp
                    313: Uses the type
1.8       schwarze  314: .Vt struct roff_man
1.1       schwarze  315: from
1.31      schwarze  316: .Qq Pa roff.h
1.1       schwarze  317: as an opaque type for function prototypes.
                    318: .Pp
                    319: When this header is included, the same file should not include
1.22      schwarze  320: internals of different parsers.
1.1       schwarze  321: .El
                    322: .Ss Parser internals
1.21      schwarze  323: Most of the following headers require inclusion of a parser interface header
1.9       schwarze  324: before they can be included.
                    325: All parser interface headers should precede all parser internal headers.
                    326: When any parser internal headers are included, the same file should
                    327: not include any formatter headers.
1.1       schwarze  328: .Bl -tag -width Ds
                    329: .It Qq Pa libmandoc.h
                    330: Requires
                    331: .In sys/types.h
                    332: for
1.8       schwarze  333: .Vt size_t
                    334: and
1.6       schwarze  335: .Qq Pa mandoc.h
                    336: for
1.8       schwarze  337: .Vt enum mandocerr .
1.1       schwarze  338: .Pp
                    339: Provides
                    340: .Vt struct buf ,
                    341: utility functions needed by multiple parsers,
                    342: and the top-level functions to call the parsers.
                    343: .Pp
1.28      schwarze  344: Uses the opaque type
1.1       schwarze  345: .Vt struct roff
                    346: from
                    347: .Pa roff.c
                    348: for function prototypes.
1.18      schwarze  349: Uses the type
1.8       schwarze  350: .Vt struct roff_man
                    351: from
1.31      schwarze  352: .Qq Pa roff.h
1.18      schwarze  353: as an opaque type for function prototypes.
1.8       schwarze  354: .It Qq Pa roff_int.h
1.24      schwarze  355: Parser internals shared by multiple parsers.
                    356: Can be used in all parsers, but not in main programs or formatters.
                    357: .Pp
1.8       schwarze  358: Requires
                    359: .Qq Pa roff.h
                    360: for
1.24      schwarze  361: .Vt enum roff_type
                    362: and
                    363: .Vt enum roff_tok .
1.8       schwarze  364: .Pp
1.30      schwarze  365: Provides
                    366: .Vt enum roff_next ,
                    367: .Vt struct roff_man ,
                    368: functions named
1.8       schwarze  369: .Fn roff_*
1.24      schwarze  370: to handle roff nodes,
                    371: .Fn roffhash_alloc ,
                    372: .Fn roffhash_find ,
1.30      schwarze  373: .Fn roffhash_free ,
1.24      schwarze  374: and
1.30      schwarze  375: .Fn roff_validate ,
1.24      schwarze  376: and the two special functions
1.8       schwarze  377: .Fn man_breakscope
                    378: and
                    379: .Fn mdoc_argv_free
                    380: because the latter two are needed by
1.31      schwarze  381: .Pa roff.c .
1.8       schwarze  382: .Pp
                    383: Uses the types
1.30      schwarze  384: .Vt struct ohash
                    385: from
1.31      schwarze  386: .Qq Pa mandoc_ohash.h ,
1.30      schwarze  387: .Vt struct roff_node
1.8       schwarze  388: and
1.30      schwarze  389: .Vt struct roff_meta
                    390: from
1.31      schwarze  391: .Qq Pa roff.h ,
1.30      schwarze  392: .Vt struct roff
1.1       schwarze  393: from
1.30      schwarze  394: .Pa roff.c ,
1.1       schwarze  395: and
1.8       schwarze  396: .Vt struct mdoc_arg
1.1       schwarze  397: from
1.31      schwarze  398: .Qq Pa mdoc.h
1.1       schwarze  399: as opaque types for function prototypes.
                    400: .It Qq Pa libmdoc.h
                    401: Requires
1.10      schwarze  402: .Qq Pa roff.h
                    403: for
                    404: .Vt enum roff_tok
                    405: and
1.25      schwarze  406: .Vt enum roff_sec .
1.1       schwarze  407: .Pp
                    408: Provides
                    409: .Vt enum margserr ,
                    410: .Vt enum mdelim ,
                    411: .Vt struct mdoc_macro ,
                    412: and many functions internal to the
                    413: .Xr mdoc 7
                    414: parser.
                    415: .Pp
1.8       schwarze  416: Uses the types
1.30      schwarze  417: .Vt struct roff_node
                    418: from
1.31      schwarze  419: .Qq Pa roff.h ,
1.8       schwarze  420: .Vt struct roff_man
1.1       schwarze  421: from
1.31      schwarze  422: .Qq Pa roff_int.h ,
1.25      schwarze  423: and
                    424: .Vt struct mdoc_arg
                    425: from
1.31      schwarze  426: .Qq Pa mdoc.h
1.8       schwarze  427: as opaque types for function prototypes.
1.1       schwarze  428: .Pp
                    429: When this header is included, the same file should not include
1.22      schwarze  430: interfaces of different parsers.
1.1       schwarze  431: .It Qq Pa libman.h
1.10      schwarze  432: Requires
                    433: .Qq Pa roff.h
                    434: for
                    435: .Vt enum roff_tok .
1.11      schwarze  436: .Pp
1.1       schwarze  437: Provides
1.8       schwarze  438: .Vt struct man_macro
                    439: and some functions internal to the
1.1       schwarze  440: .Xr man 7
                    441: parser.
                    442: .Pp
1.8       schwarze  443: Uses the types
                    444: .Vt struct roff_node
1.1       schwarze  445: from
1.31      schwarze  446: .Qq Pa roff.h
1.30      schwarze  447: and
                    448: .Vt struct roff_man
                    449: from
1.31      schwarze  450: .Qq Pa roff_int.h
1.8       schwarze  451: as opaque types for function prototypes.
1.1       schwarze  452: .Pp
                    453: When this header is included, the same file should not include
1.22      schwarze  454: interfaces of different parsers.
                    455: .It Qq Pa eqn_parse.h
                    456: External interface of the
                    457: .Xr eqn 7
                    458: parser, for use in the
                    459: .Xr roff 7
                    460: and
                    461: .Xr eqn 7
                    462: parsers only.
                    463: .Pp
1.1       schwarze  464: Requires
                    465: .In sys/types.h
                    466: for
1.22      schwarze  467: .Vt size_t .
1.1       schwarze  468: .Pp
                    469: Provides
1.22      schwarze  470: .Vt struct eqn_node
                    471: and the functions
                    472: .Fn eqn_alloc ,
1.23      schwarze  473: .Fn eqn_box_new ,
1.22      schwarze  474: .Fn eqn_box_free ,
                    475: .Fn eqn_free ,
                    476: .Fn eqn_parse ,
                    477: .Fn eqn_read ,
                    478: and
                    479: .Fn eqn_reset .
1.1       schwarze  480: .Pp
1.22      schwarze  481: Uses the type
                    482: .Vt struct eqn_box
                    483: from
1.31      schwarze  484: .Qq Pa mandoc.h
1.22      schwarze  485: as an opaque type for function prototypes.
                    486: Uses the types
                    487: .Vt struct roff_node
                    488: from
1.31      schwarze  489: .Qq Pa roff.h
1.22      schwarze  490: and
                    491: .Vt struct eqn_def
                    492: from
                    493: .Pa eqn.c
                    494: as opaque struct members.
1.1       schwarze  495: .Pp
                    496: When this header is included, the same file should not include
1.22      schwarze  497: internals of different parsers.
1.21      schwarze  498: .It Qq Pa tbl_parse.h
                    499: External interface of the
                    500: .Xr tbl 7
                    501: parser, for use in the
                    502: .Xr roff 7
                    503: and
                    504: .Xr tbl 7
                    505: parsers only.
                    506: .Pp
                    507: Provides the functions documented in
                    508: .Xr tbl 3 .
                    509: .Pp
                    510: Uses the types
                    511: .Vt struct tbl_span
                    512: from
1.31      schwarze  513: .Qq Pa tbl.h
1.21      schwarze  514: and
                    515: .Vt struct tbl_node
                    516: from
1.31      schwarze  517: .Qq Pa tbl_int.h
1.21      schwarze  518: as opaque types for function prototypes.
                    519: .Pp
                    520: When this header is included, the same file should not include
1.22      schwarze  521: internals of different parsers.
1.21      schwarze  522: .It Qq Pa tbl_int.h
                    523: Internal interfaces of the
                    524: .Xr tbl 7
                    525: parser, for use inside the
                    526: .Xr tbl 7
                    527: parser only.
                    528: .Pp
                    529: Requires
                    530: .Qq Pa tbl.h
                    531: for
                    532: .Vt struct tbl_opts .
                    533: .Pp
                    534: Provides
                    535: .Vt enum tbl_part ,
                    536: .Vt struct tbl_node ,
                    537: and the functions
                    538: .Fn tbl_option ,
                    539: .Fn tbl_layout ,
                    540: .Fn tbl_data ,
                    541: .Fn tbl_cdata ,
                    542: and
                    543: .Fn tbl_reset .
                    544: .Pp
                    545: When this header is included, the same file should not include
                    546: interfaces of different parsers.
1.1       schwarze  547: .El
                    548: .Ss Formatter interface
                    549: These headers should be included after any parser interface headers.
                    550: No parser internal headers should be included by the same file.
                    551: .Bl -tag -width Ds
                    552: .It Qq Pa out.h
                    553: Requires
                    554: .In sys/types.h
                    555: for
                    556: .Vt size_t .
                    557: .Pp
                    558: Provides
                    559: .Vt enum roffscale ,
                    560: .Vt struct roffcol ,
                    561: .Vt struct roffsu ,
                    562: .Vt struct rofftbl ,
                    563: .Fn a2roffsu ,
                    564: and
                    565: .Fn tblcalc .
                    566: .Pp
                    567: Uses
                    568: .Vt struct tbl_span
                    569: from
1.31      schwarze  570: .Qq Pa mandoc.h
1.1       schwarze  571: as an opaque type for function prototypes.
                    572: .Pp
                    573: When this header is included, the same file should not include
1.31      schwarze  574: .Qq Pa mansearch.h .
1.1       schwarze  575: .It Qq Pa term.h
                    576: Requires
                    577: .In sys/types.h
                    578: for
                    579: .Vt size_t
                    580: and
                    581: .Qq Pa out.h
                    582: for
                    583: .Vt struct roffsu
                    584: and
                    585: .Vt struct rofftbl .
                    586: .Pp
                    587: Provides
                    588: .Vt enum termenc ,
                    589: .Vt enum termfont ,
                    590: .Vt enum termtype ,
                    591: .Vt struct termp_tbl ,
                    592: .Vt struct termp ,
1.12      schwarze  593: .Fn roff_term_pre ,
1.1       schwarze  594: and many terminal formatting functions.
                    595: .Pp
1.7       schwarze  596: Uses the opaque type
1.1       schwarze  597: .Vt struct termp_ps
                    598: from
                    599: .Pa term_ps.c .
                    600: Uses
                    601: .Vt struct tbl_span
                    602: and
1.17      schwarze  603: .Vt struct eqn_box
1.1       schwarze  604: from
1.31      schwarze  605: .Qq Pa mandoc.h
1.6       schwarze  606: and
                    607: .Vt struct roff_meta
1.12      schwarze  608: and
                    609: .Vt struct roff_node
1.6       schwarze  610: from
1.31      schwarze  611: .Qq Pa roff.h
1.1       schwarze  612: as opaque types for function prototypes.
                    613: .Pp
                    614: When this header is included, the same file should not include
1.31      schwarze  615: .Qq Pa html.h
1.1       schwarze  616: or
1.31      schwarze  617: .Qq Pa mansearch.h .
1.33      schwarze  618: .It Qq Pa tag_term.h
                    619: Requires
                    620: .In sys/types.h
                    621: for
                    622: .Vt size_t
                    623: and
                    624: .In stdio.h
                    625: for
                    626: .Vt FILE .
                    627: .Pp
                    628: Provides an interface to generate
                    629: .Xr ctags 1
                    630: files for the
                    631: .Ic :t
                    632: functionality mentioned in
                    633: .Xr man 1 .
                    634: .Pp
                    635: Uses the type
                    636: .Vt struct roff_node
                    637: from
                    638: .Qq Pa roff.h
                    639: as an opaque type for function prototypes.
                    640: .Pp
                    641: When this header is included, the same file should not include
                    642: .Qq Pa html.h
                    643: or
                    644: .Qq Pa mansearch.h .
1.1       schwarze  645: .It Qq Pa html.h
                    646: Requires
                    647: .In sys/types.h
                    648: for
1.29      schwarze  649: .Vt size_t ,
1.31      schwarze  650: .Qq Pa mandoc.h
1.29      schwarze  651: for
                    652: .Vt enum mandoc_esc ,
1.31      schwarze  653: .Qq Pa roff.h
                    654: for
                    655: .Vt enum roff_tok ,
1.1       schwarze  656: and
                    657: .Qq Pa out.h
                    658: for
                    659: .Vt struct roffsu
                    660: and
                    661: .Vt struct rofftbl .
                    662: .Pp
                    663: Provides
                    664: .Vt enum htmltag ,
                    665: .Vt enum htmlattr ,
                    666: .Vt enum htmlfont ,
                    667: .Vt struct tag ,
                    668: .Vt struct tagq ,
                    669: .Vt struct htmlpair ,
                    670: .Vt struct html ,
1.12      schwarze  671: .Fn roff_html_pre ,
1.1       schwarze  672: and many HTML formatting functions.
1.12      schwarze  673: .Pp
                    674: Uses
                    675: .Vt struct tbl_span
                    676: and
1.17      schwarze  677: .Vt struct eqn_box
1.12      schwarze  678: from
1.31      schwarze  679: .Qq Pa mandoc.h
1.12      schwarze  680: and
                    681: .Vt struct roff_node
                    682: from
1.31      schwarze  683: .Qq Pa roff.h
1.12      schwarze  684: as opaque types for function prototypes.
1.1       schwarze  685: .Pp
                    686: When this header is included, the same file should not include
1.33      schwarze  687: .Qq Pa term.h ,
                    688: .Qq Pa tab_term.h ,
1.1       schwarze  689: or
1.31      schwarze  690: .Qq Pa mansearch.h .
1.1       schwarze  691: .It Qq Pa main.h
                    692: Provides the top level steering functions for all formatters.
                    693: .Pp
1.8       schwarze  694: Uses the type
1.30      schwarze  695: .Vt struct roff_meta
1.1       schwarze  696: from
1.31      schwarze  697: .Qq Pa roff.h
1.8       schwarze  698: as an opaque type for function prototypes.
1.3       schwarze  699: .It Qq Pa manconf.h
1.1       schwarze  700: Requires
                    701: .In sys/types.h
                    702: for
                    703: .Vt size_t .
                    704: .Pp
                    705: Provides
1.3       schwarze  706: .Vt struct manconf ,
                    707: .Vt struct manpaths ,
                    708: .Vt struct manoutput ,
1.1       schwarze  709: and the functions
1.3       schwarze  710: .Fn manconf_parse ,
                    711: .Fn manconf_output ,
1.15      schwarze  712: .Fn manconf_free ,
1.1       schwarze  713: and
1.15      schwarze  714: .Fn manpath_base .
1.1       schwarze  715: .It Qq Pa mansearch.h
                    716: Requires
                    717: .In sys/types.h
                    718: for
                    719: .Vt size_t
                    720: and
                    721: .In stdint.h
                    722: for
                    723: .Vt uint64_t .
                    724: .Pp
                    725: Provides
                    726: .Vt enum argmode ,
                    727: .Vt struct manpage ,
                    728: .Vt struct mansearch ,
                    729: and the functions
1.9       schwarze  730: .Fn mansearch
1.1       schwarze  731: and
                    732: .Fn mansearch_free .
                    733: .Pp
                    734: Uses
                    735: .Vt struct manpaths
                    736: from
1.31      schwarze  737: .Qq Pa manconf.h
1.1       schwarze  738: as an opaque type for function prototypes.
                    739: .Pp
                    740: When this header is included, the same file should not include
1.31      schwarze  741: .Qq Pa out.h ,
                    742: .Qq Pa term.h ,
1.33      schwarze  743: .Qq Pa tab_term.h ,
1.1       schwarze  744: or
1.31      schwarze  745: .Qq Pa html.h .
1.1       schwarze  746: .El

CVSweb