[BACK]Return to tbl_extern.h CVS log [TXT][DIR] Up to [local] / src / usr.bin / mandoc

Annotation of src/usr.bin/mandoc/tbl_extern.h, Revision 1.1

1.1     ! schwarze    1: /*     $Id: extern.h,v 1.10 2009/09/13 12:37:28 kristaps Exp $ */
        !             2: /*
        !             3:  * Copyright (c) 2009 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 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:  */
        !            17: #ifndef TBL_EXTERN_H
        !            18: #define TBL_EXTERN_H
        !            19:
        !            20: enum   tbl_err {
        !            21:        ERR_SYNTAX,
        !            22:        ERR_OPTION,
        !            23:        ERR_MAX
        !            24: };
        !            25:
        !            26: enum   tbl_tok {
        !            27:        TBL_TOK_WORD,
        !            28:        TBL_TOK_OPENPAREN,
        !            29:        TBL_TOK_CLOSEPAREN,
        !            30:        TBL_TOK_COMMA,
        !            31:        TBL_TOK_SEMICOLON,
        !            32:        TBL_TOK_PERIOD,
        !            33:        TBL_TOK_SPACE,
        !            34:        TBL_TOK_TAB,
        !            35:        TBL_TOK_NIL
        !            36: };
        !            37:
        !            38: enum   tbl_part {
        !            39:        TBL_PART_OPTS,
        !            40:        TBL_PART_LAYOUT,
        !            41:        TBL_PART_CLAYOUT,
        !            42:        TBL_PART_DATA,
        !            43:        TBL_PART_ERROR
        !            44: };
        !            45:
        !            46: struct tbl;
        !            47: struct tbl_head;
        !            48: struct tbl_row;
        !            49: struct tbl_cell;
        !            50: struct tbl_span;
        !            51: struct tbl_data;
        !            52:
        !            53: TAILQ_HEAD(tbl_rowh, tbl_row);
        !            54: TAILQ_HEAD(tbl_cellh, tbl_cell);
        !            55: TAILQ_HEAD(tbl_headh, tbl_head);
        !            56: TAILQ_HEAD(tbl_spanh, tbl_span);
        !            57: TAILQ_HEAD(tbl_datah, tbl_data);
        !            58:
        !            59: struct tbl {
        !            60:        enum tbl_part            part;
        !            61:        int                      opts;
        !            62: #define        TBL_OPT_CENTRE          (1 << 0)
        !            63: #define        TBL_OPT_EXPAND          (1 << 1)
        !            64: #define        TBL_OPT_BOX             (1 << 2)
        !            65: #define        TBL_OPT_DBOX            (1 << 3)
        !            66: #define        TBL_OPT_ALLBOX          (1 << 4)
        !            67: #define        TBL_OPT_NOKEEP          (1 << 5)
        !            68: #define        TBL_OPT_NOSPACE         (1 << 6)
        !            69:        char                     tab;
        !            70:        char                     decimal;
        !            71:        int                      linesize;
        !            72:        char                     delims[2];
        !            73:        struct tbl_spanh         span;
        !            74:        struct tbl_headh         head;
        !            75:        struct tbl_rowh          row;
        !            76: };
        !            77:
        !            78: enum   tbl_headt {
        !            79:        TBL_HEAD_DATA,
        !            80:        TBL_HEAD_VERT,
        !            81:        TBL_HEAD_DVERT,
        !            82:        TBL_HEAD_MAX
        !            83: };
        !            84:
        !            85: struct tbl_head {
        !            86:        struct tbl              *tbl;
        !            87:        enum tbl_headt           pos;
        !            88:        int                      width;
        !            89:        int                      decimal;
        !            90:        TAILQ_ENTRY(tbl_head)    entries;
        !            91: };
        !            92:
        !            93: struct tbl_row {
        !            94:        struct tbl              *tbl;
        !            95:        struct tbl_cellh         cell;
        !            96:        TAILQ_ENTRY(tbl_row)     entries;
        !            97: };
        !            98:
        !            99: enum   tbl_cellt {
        !           100:        TBL_CELL_CENTRE,        /* c, C */
        !           101:        TBL_CELL_RIGHT,         /* r, R */
        !           102:        TBL_CELL_LEFT,          /* l, L */
        !           103:        TBL_CELL_NUMBER,        /* n, N */
        !           104:        TBL_CELL_SPAN,          /* s, S */
        !           105:        TBL_CELL_LONG,          /* a, A */
        !           106:        TBL_CELL_DOWN,          /* ^ */
        !           107:        TBL_CELL_HORIZ,         /* _, - */
        !           108:        TBL_CELL_DHORIZ,        /* = */
        !           109:        TBL_CELL_VERT,          /* | */
        !           110:        TBL_CELL_DVERT,         /* || */
        !           111:        TBL_CELL_MAX
        !           112: };
        !           113:
        !           114: struct tbl_cell {
        !           115:        struct tbl_row          *row;
        !           116:        struct tbl_head         *head;
        !           117:        enum tbl_cellt           pos;
        !           118:        int                      spacing;
        !           119:        int                      flags;
        !           120: #define        TBL_CELL_TALIGN         (1 << 0)        /* t, T */
        !           121: #define        TBL_CELL_BALIGN         (1 << 1)        /* d, D */
        !           122: #define        TBL_CELL_BOLD           (1 << 2)        /* fB, B, b */
        !           123: #define        TBL_CELL_ITALIC         (1 << 3)        /* fI, I, i */
        !           124: #define        TBL_CELL_EQUAL          (1 << 4)        /* e, E */
        !           125: #define        TBL_CELL_UP             (1 << 5)        /* u, U */
        !           126: #define        TBL_CELL_WIGN           (1 << 6)        /* z, Z */
        !           127:        TAILQ_ENTRY(tbl_cell)    entries;
        !           128: };
        !           129:
        !           130: struct tbl_data {
        !           131:        struct tbl_span         *span;
        !           132:        struct tbl_cell         *cell;
        !           133:        int                      flags;
        !           134: #define        TBL_DATA_HORIZ          (1 << 0)
        !           135: #define        TBL_DATA_DHORIZ         (1 << 1)
        !           136: #define        TBL_DATA_NHORIZ         (1 << 2)
        !           137: #define        TBL_DATA_NDHORIZ        (1 << 3)
        !           138:        char                    *string;
        !           139:        TAILQ_ENTRY(tbl_data)    entries;
        !           140: };
        !           141:
        !           142: struct tbl_span {
        !           143:        struct tbl_row          *row;
        !           144:        struct tbl              *tbl;
        !           145:        int                      flags;
        !           146: #define        TBL_SPAN_HORIZ          (1 << 0)
        !           147: #define        TBL_SPAN_DHORIZ         (1 << 1)
        !           148:        struct tbl_datah         data;
        !           149:        TAILQ_ENTRY(tbl_span)    entries;
        !           150: };
        !           151:
        !           152: __BEGIN_DECLS
        !           153:
        !           154: int             tbl_option(struct tbl *,
        !           155:                        const char *, int, const char *);
        !           156: int             tbl_layout(struct tbl *,
        !           157:                        const char *, int, const char *);
        !           158: int             tbl_data(struct tbl *,
        !           159:                        const char *, int, const char *);
        !           160: int             tbl_data_close(struct tbl *,  const char *, int);
        !           161:
        !           162: enum tbl_tok    tbl_next(const char *, int *);
        !           163: const char     *tbl_last(void);
        !           164: int             tbl_last_uint(void);
        !           165: int             tbl_errx(struct tbl *, enum tbl_err,
        !           166:                        const char *, int, int);
        !           167: int             tbl_warnx(struct tbl *, enum tbl_err,
        !           168:                        const char *, int, int);
        !           169: int             tbl_err(struct tbl *);
        !           170:
        !           171: struct tbl_row *tbl_row_alloc(struct tbl *);
        !           172: struct tbl_cell        *tbl_cell_alloc(struct tbl_row *, enum tbl_cellt);
        !           173: struct tbl_span        *tbl_span_alloc(struct tbl *);
        !           174: struct tbl_data        *tbl_data_alloc(struct tbl_span *);
        !           175:
        !           176: int             tbl_write_term(const struct tbl *);
        !           177: int             tbl_calc_term(struct tbl *);
        !           178: int             tbl_write_tree(const struct tbl *);
        !           179: int             tbl_calc_tree(struct tbl *);
        !           180:
        !           181: __END_DECLS
        !           182:
        !           183: #endif /*TBL_EXTERN_H*/