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

Annotation of mandoc/mdoc.h, Revision 1.1

1.1     ! kristaps    1: /* $Id: roff.h,v 1.10 2008/12/10 17:31:57 kristaps Exp $ */
        !             2: /*
        !             3:  * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
        !             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
        !             7:  * above copyright notice and this permission notice appear in all
        !             8:  * copies.
        !             9:  *
        !            10:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
        !            11:  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
        !            12:  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
        !            13:  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
        !            14:  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
        !            15:  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
        !            16:  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
        !            17:  * PERFORMANCE OF THIS SOFTWARE.
        !            18:  */
        !            19: #ifndef MDOC_H
        !            20: #define MDOC_H
        !            21:
        !            22: #define        MDOC_LINEARG_MAX 9
        !            23:
        !            24: #define        MDOC___          0
        !            25: #define        MDOC_Dd          1
        !            26: #define        MDOC_Dt          2
        !            27: #define        MDOC_Os          3
        !            28: #define        MDOC_Sh          4
        !            29: #define        MDOC_Ss          5
        !            30: #define        MDOC_Pp          6
        !            31: #define        MDOC_D1          7
        !            32: #define        MDOC_Dl          8
        !            33: #define        MDOC_Bd          9
        !            34: #define        MDOC_Ed          10
        !            35: #define        MDOC_Bl          11
        !            36: #define        MDOC_El          12
        !            37: #define        MDOC_It          13
        !            38: #define        MDOC_Ad          14
        !            39: #define        MDOC_An          15
        !            40: #define        MDOC_Ar          16
        !            41: #define        MDOC_Cd          17
        !            42: #define        MDOC_Cm          18
        !            43: #define        MDOC_Dv          19
        !            44: #define        MDOC_Er          20
        !            45: #define        MDOC_Ev          21
        !            46: #define        MDOC_Ex          22
        !            47: #define        MDOC_Fa          23
        !            48: #define        MDOC_Fd          24
        !            49: #define        MDOC_Fl          25
        !            50: #define        MDOC_Fn          26
        !            51: #define        MDOC_Ft          27
        !            52: #define        MDOC_Ic          28
        !            53: #define        MDOC_In          29
        !            54: #define        MDOC_Li          30
        !            55: #define        MDOC_Nd          31
        !            56: #define        MDOC_Nm          32
        !            57: #define        MDOC_Op          33
        !            58: #define        MDOC_Ot          34
        !            59: #define        MDOC_Pa          35
        !            60: #define        MDOC_Rv          36
        !            61: #define        MDOC_St          37
        !            62: #define        MDOC_Va          38
        !            63: #define        MDOC_Vt          39
        !            64: #define        MDOC_Xr          40
        !            65: #define        MDOC__A          41
        !            66: #define        MDOC__B          42
        !            67: #define        MDOC__D          43
        !            68: #define        MDOC__I          44
        !            69: #define        MDOC__J          45
        !            70: #define        MDOC__N          46
        !            71: #define        MDOC__O          47
        !            72: #define        MDOC__P          48
        !            73: #define        MDOC__R          49
        !            74: #define        MDOC__T          50
        !            75: #define        MDOC__V          51
        !            76: #define MDOC_Ac                 52
        !            77: #define MDOC_Ao                 53
        !            78: #define MDOC_Aq                 54
        !            79: #define MDOC_At                 55
        !            80: #define MDOC_Bc                 56
        !            81: #define MDOC_Bf                 57
        !            82: #define MDOC_Bo                 58
        !            83: #define MDOC_Bq                 59
        !            84: #define MDOC_Bsx        60
        !            85: #define MDOC_Bx                 61
        !            86: #define MDOC_Db                 62
        !            87: #define MDOC_Dc                 63
        !            88: #define MDOC_Do                 64
        !            89: #define MDOC_Dq                 65
        !            90: #define MDOC_Ec                 66
        !            91: #define MDOC_Ef                 67
        !            92: #define MDOC_Em                 68
        !            93: #define MDOC_Eo                 69
        !            94: #define MDOC_Fx                 70
        !            95: #define MDOC_Ms                 71
        !            96: #define MDOC_No                 72
        !            97: #define MDOC_Ns                 73
        !            98: #define MDOC_Nx                 74
        !            99: #define MDOC_Ox                 75
        !           100: #define MDOC_Pc                 76
        !           101: #define MDOC_Pf                 77
        !           102: #define MDOC_Po                 78
        !           103: #define MDOC_Pq                 79
        !           104: #define MDOC_Qc                 80
        !           105: #define MDOC_Ql                 81
        !           106: #define MDOC_Qo                 82
        !           107: #define MDOC_Qq                 83
        !           108: #define MDOC_Re                 84
        !           109: #define MDOC_Rs                 85
        !           110: #define MDOC_Sc                 86
        !           111: #define MDOC_So                 87
        !           112: #define MDOC_Sq                 88
        !           113: #define MDOC_Sm                 89
        !           114: #define MDOC_Sx                 90
        !           115: #define MDOC_Sy                 91
        !           116: #define MDOC_Tn                 92
        !           117: #define MDOC_Ux                 93
        !           118: #define MDOC_Xc                 94
        !           119: #define MDOC_Xo                 95
        !           120: #define        MDOC_Fo          96
        !           121: #define        MDOC_Fc          97
        !           122: #define        MDOC_Oo          98
        !           123: #define        MDOC_Oc          99
        !           124: #define        MDOC_Bk          100
        !           125: #define        MDOC_Ek          101
        !           126: #define        MDOC_Bt          102
        !           127: #define        MDOC_Hf          103
        !           128: #define        MDOC_Fr          104
        !           129: #define        MDOC_Ud          105
        !           130: #define        MDOC_MAX         106
        !           131:
        !           132: #define        MDOC_Split       0
        !           133: #define        MDOC_Nosplit     1
        !           134: #define        MDOC_Ragged      2
        !           135: #define        MDOC_Unfilled    3
        !           136: #define        MDOC_Literal     4
        !           137: #define        MDOC_File        5
        !           138: #define        MDOC_Offset      6
        !           139: #define        MDOC_Bullet      7
        !           140: #define        MDOC_Dash        8
        !           141: #define        MDOC_Hyphen      9
        !           142: #define        MDOC_Item        10
        !           143: #define        MDOC_Enum        11
        !           144: #define        MDOC_Tag         12
        !           145: #define        MDOC_Diag        13
        !           146: #define        MDOC_Hang        14
        !           147: #define        MDOC_Ohang       15
        !           148: #define        MDOC_Inset       16
        !           149: #define        MDOC_Column      17
        !           150: #define        MDOC_Width       18
        !           151: #define        MDOC_Compact     19
        !           152: #define        MDOC_Std         20
        !           153: #define MDOC_p1003_1_88         21
        !           154: #define MDOC_p1003_1_90         22
        !           155: #define MDOC_p1003_1_96         23
        !           156: #define MDOC_p1003_1_2001 24
        !           157: #define MDOC_p1003_1_2004 25
        !           158: #define MDOC_p1003_1    26
        !           159: #define MDOC_p1003_1b   27
        !           160: #define MDOC_p1003_1b_93 28
        !           161: #define MDOC_p1003_1c_95 29
        !           162: #define MDOC_p1003_1g_2000 30
        !           163: #define MDOC_p1003_2_92         31
        !           164: #define MDOC_p1387_2_95         32
        !           165: #define MDOC_p1003_2    33
        !           166: #define MDOC_p1387_2    34
        !           167: #define MDOC_isoC_90    35
        !           168: #define MDOC_isoC_amd1  36
        !           169: #define MDOC_isoC_tcor1         37
        !           170: #define MDOC_isoC_tcor2         38
        !           171: #define MDOC_isoC_99    39
        !           172: #define MDOC_ansiC      40
        !           173: #define MDOC_ansiC_89   41
        !           174: #define MDOC_ansiC_99   42
        !           175: #define MDOC_ieee754    43
        !           176: #define MDOC_iso8802_3  44
        !           177: #define MDOC_xpg3       45
        !           178: #define MDOC_xpg4       46
        !           179: #define MDOC_xpg4_2     47
        !           180: #define MDOC_xpg4_3     48
        !           181: #define MDOC_xbd5       49
        !           182: #define MDOC_xcu5       50
        !           183: #define MDOC_xsh5       51
        !           184: #define MDOC_xns5       52
        !           185: #define MDOC_xns5_2d2_0         53
        !           186: #define MDOC_xcurses4_2         54
        !           187: #define MDOC_susv2      55
        !           188: #define MDOC_susv3      56
        !           189: #define MDOC_svid4      57
        !           190: #define        MDOC_Filled      58
        !           191: #define        MDOC_Words       59
        !           192: #define        MDOC_ARG_MAX     60
        !           193:
        !           194: enum   mdoc_err {
        !           195:        ERR_SYNTAX_QUOTE,
        !           196:        ERR_SYNTAX_WS,
        !           197:        ERR_MACRO_NOTSUP,
        !           198:        ERR_MACRO_NOTCALL,
        !           199:        ERR_SCOPE_BREAK,
        !           200:        ERR_ARGS_GE1
        !           201: };
        !           202:
        !           203: enum   mdoc_warn {
        !           204:        WARN_SYNTAX_WS_EOLN,
        !           205:        WARN_SYNTAX_MACLIKE,
        !           206:        WARN_ARGS_GE1
        !           207: };
        !           208:
        !           209: struct mdoc_arg {
        !           210:        int               arg;
        !           211:        size_t            sz;
        !           212:        char            **value;
        !           213: };
        !           214:
        !           215: enum   mdoc_type {
        !           216:        MDOC_TEXT,
        !           217:        MDOC_ELEM,
        !           218:        MDOC_HEAD,
        !           219:        MDOC_BODY,
        !           220:        MDOC_BLOCK
        !           221: };
        !           222:
        !           223: struct mdoc_text {
        !           224:        char             *string;
        !           225: };
        !           226:
        !           227: struct mdoc_block {
        !           228:        int               tok;
        !           229:        size_t            argc;
        !           230:        struct mdoc_arg  *argv;
        !           231: };
        !           232:
        !           233: struct mdoc_head {
        !           234:        size_t            sz;
        !           235:        char            **args;
        !           236:        int               tok;
        !           237: };
        !           238:
        !           239: struct mdoc_body {
        !           240:        int               tok;
        !           241: };
        !           242:
        !           243: struct mdoc_elem {
        !           244:        size_t            sz;
        !           245:        char            **args;
        !           246:        int               tok;
        !           247:        size_t            argc;
        !           248:        struct mdoc_arg  *argv;
        !           249: };
        !           250:
        !           251: union  mdoc_data {
        !           252:        struct mdoc_text  text;
        !           253:        struct mdoc_elem  elem;
        !           254:        struct mdoc_body  body;
        !           255:        struct mdoc_head  head;
        !           256:        struct mdoc_block block;
        !           257: };
        !           258:
        !           259: struct mdoc_node {
        !           260:        struct mdoc_node *parent;
        !           261:        struct mdoc_node *child;
        !           262:        struct mdoc_node *next;
        !           263:        enum mdoc_type    type;
        !           264:        union mdoc_data   data;
        !           265: };
        !           266:
        !           267: struct mdoc_cb {
        !           268:        int     (*mdoc_err)(void *, int, int, enum mdoc_err);
        !           269:        int     (*mdoc_warn)(void *, int, int, enum mdoc_warn);
        !           270:        void    (*mdoc_msg)(void *, int, const char *);
        !           271: };
        !           272:
        !           273: extern const char *const *mdoc_macronames;
        !           274: extern const char *const *mdoc_argnames;
        !           275:
        !           276: __BEGIN_DECLS
        !           277:
        !           278: struct mdoc;
        !           279:
        !           280: void             mdoc_free(struct mdoc *);
        !           281: struct mdoc     *mdoc_alloc(void *data, const struct mdoc_cb *);
        !           282: int              mdoc_parseln(struct mdoc *, char *buf);
        !           283:
        !           284: const struct mdoc_node
        !           285:                 *mdoc_result(struct mdoc *);
        !           286:
        !           287: __END_DECLS
        !           288:
        !           289: #endif /*!MDOC_H*/

CVSweb