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

Annotation of texi2mdoc/extern.h, Revision 1.29

1.29    ! kristaps    1: /*     $Id: extern.h,v 1.28 2015/03/12 04:24:19 kristaps Exp $ */
1.1       kristaps    2: /*
                      3:  * Copyright (c) 2015 Kristaps Dzonsons <kristaps@bsd.lv>
                      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 EXTERN_H
                     18: #define EXTERN_H
1.17      kristaps   19:
                     20: #if !defined(__BEGIN_DECLS)
                     21: #  ifdef __cplusplus
                     22: #  define      __BEGIN_DECLS           extern "C" {
                     23: #  else
                     24: #  define      __BEGIN_DECLS
                     25: #  endif
                     26: #endif
                     27: #if !defined(__END_DECLS)
                     28: #  ifdef __cplusplus
                     29: #  define      __END_DECLS             }
                     30: #  else
                     31: #  define      __END_DECLS
                     32: #  endif
                     33: #endif
1.1       kristaps   34:
1.27      kristaps   35: #define HAVE_INDEX 1
                     36:
1.1       kristaps   37: /*
                     38:  * This defines each one of the Texinfo commands that we understand.
                     39:  * Obviously this only refers to native commands; overriden names are a
                     40:  * different story.
                     41:  */
                     42: enum   texicmd {
1.12      kristaps   43:        TEXICMD_A4PAPER,
                     44:        TEXICMD_AA,
                     45:        TEXICMD_AASMALL,
1.1       kristaps   46:        TEXICMD_ACRONYM,
                     47:        TEXICMD_ACUTE,
1.12      kristaps   48:        TEXICMD_AE,
                     49:        TEXICMD_AESMALL,
1.1       kristaps   50:        TEXICMD_ANCHOR,
                     51:        TEXICMD_APPENDIX,
                     52:        TEXICMD_APPENDIXSEC,
                     53:        TEXICMD_APPENDIXSUBSEC,
                     54:        TEXICMD_APPENDIXSUBSUBSEC,
1.2       kristaps   55:        TEXICMD_ASIS,
1.1       kristaps   56:        TEXICMD_ASTERISK,
                     57:        TEXICMD_AT,
                     58:        TEXICMD_AUTHOR,
                     59:        TEXICMD_B,
1.25      kristaps   60:        TEXICMD_BACKSLASH,
1.1       kristaps   61:        TEXICMD_BANG,
                     62:        TEXICMD_BULLET,
                     63:        TEXICMD_BYE,
1.9       kristaps   64:        TEXICMD_CARTOUCHE,
                     65:        TEXICMD_CEDILLA,
1.1       kristaps   66:        TEXICMD_CENTER,
                     67:        TEXICMD_CHAPTER,
                     68:        TEXICMD_CINDEX,
                     69:        TEXICMD_CIRCUMFLEX,
                     70:        TEXICMD_CITE,
                     71:        TEXICMD_CLEAR,
                     72:        TEXICMD_CODE,
                     73:        TEXICMD_COLON,
                     74:        TEXICMD_COLUMNFRACTIONS,
1.10      kristaps   75:        TEXICMD_COMMA,
1.1       kristaps   76:        TEXICMD_COMMAND,
                     77:        TEXICMD_COMMENT,
                     78:        TEXICMD_COMMENT_LONG,
                     79:        TEXICMD_CONTENTS,
                     80:        TEXICMD_COPYING,
                     81:        TEXICMD_COPYRIGHT,
1.3       kristaps   82:        TEXICMD_DEFCODEINDEX,
1.1       kristaps   83:        TEXICMD_DEFFN,
                     84:        TEXICMD_DEFFNX,
1.3       kristaps   85:        TEXICMD_DEFINDEX,
1.1       kristaps   86:        TEXICMD_DEFMAC,
                     87:        TEXICMD_DEFMACX,
1.29    ! kristaps   88:        TEXICMD_DEFOP,
        !            89:        TEXICMD_DEFOPX,
        !            90:        TEXICMD_DEFOPT,
        !            91:        TEXICMD_DEFOPTX,
1.1       kristaps   92:        TEXICMD_DEFTP,
                     93:        TEXICMD_DEFTPX,
                     94:        TEXICMD_DEFTYPEFN,
                     95:        TEXICMD_DEFTYPEFNX,
                     96:        TEXICMD_DEFTYPEFUN,
                     97:        TEXICMD_DEFTYPEFUNX,
1.9       kristaps   98:        TEXICMD_DEFTYPEMETHOD,
                     99:        TEXICMD_DEFTYPEMETHODX,
1.1       kristaps  100:        TEXICMD_DEFTYPEVAR,
                    101:        TEXICMD_DEFTYPEVARX,
                    102:        TEXICMD_DEFTYPEVR,
                    103:        TEXICMD_DEFTYPEVRX,
                    104:        TEXICMD_DEFUN,
                    105:        TEXICMD_DEFUNX,
                    106:        TEXICMD_DEFVAR,
                    107:        TEXICMD_DEFVARX,
                    108:        TEXICMD_DEFVR,
                    109:        TEXICMD_DEFVRX,
                    110:        TEXICMD_DETAILMENU,
                    111:        TEXICMD_DFN,
1.12      kristaps  112:        TEXICMD_DH,
                    113:        TEXICMD_DHSMALL,
1.1       kristaps  114:        TEXICMD_DIRCATEGORY,
                    115:        TEXICMD_DIRENTRY,
                    116:        TEXICMD_DISPLAY,
1.4       kristaps  117:        TEXICMD_DMN,
1.11      kristaps  118:        TEXICMD_DOCUMENTDESCRPITION,
                    119:        TEXICMD_DOCUMENTENCODING,
1.14      kristaps  120:        TEXICMD_DOCUMENTLANGUAGE,
1.12      kristaps  121:        TEXICMD_DOTACCENT,
                    122:        TEXICMD_DOTLESS,
1.1       kristaps  123:        TEXICMD_DOTS,
                    124:        TEXICMD_EMAIL,
                    125:        TEXICMD_EMPH,
                    126:        TEXICMD_END,
1.9       kristaps  127:        TEXICMD_ENDDOTS,
1.1       kristaps  128:        TEXICMD_ENUMERATE,
                    129:        TEXICMD_ENV,
1.4       kristaps  130:        TEXICMD_EQUIV,
1.1       kristaps  131:        TEXICMD_ERROR,
1.13      kristaps  132:        TEXICMD_EURO,
1.1       kristaps  133:        TEXICMD_EXAMPLE,
1.12      kristaps  134:        TEXICMD_EXCLAMDOWN,
1.2       kristaps  135:        TEXICMD_EXDENT,
1.1       kristaps  136:        TEXICMD_EXPANSION,
                    137:        TEXICMD_FILE,
                    138:        TEXICMD_FINALOUT,
                    139:        TEXICMD_FINDEX,
1.14      kristaps  140:        TEXICMD_FLUSHLEFT,
                    141:        TEXICMD_FLUSHRIGHT,
                    142:        TEXICMD_FIRSTPARAGRAPHINDENT,
1.7       kristaps  143:        TEXICMD_FOOTNOTE,
1.14      kristaps  144:        TEXICMD_FOOTNOTESTYLE,
1.1       kristaps  145:        TEXICMD_FTABLE,
                    146:        TEXICMD_FORMAT,
1.13      kristaps  147:        TEXICMD_GEQ,
1.1       kristaps  148:        TEXICMD_GRAVE,
                    149:        TEXICMD_GROUP,
1.13      kristaps  150:        TEXICMD_GUILLEMETLEFT,
                    151:        TEXICMD_GUILLEMETRIGHT,
                    152:        TEXICMD_GUILLEMOTLEFT,
                    153:        TEXICMD_GUILLEMOTRIGHT,
                    154:        TEXICMD_GUILSINGLLEFT,
                    155:        TEXICMD_GUILSINGLRIGHT,
1.12      kristaps  156:        TEXICMD_H,
1.1       kristaps  157:        TEXICMD_HEADING,
                    158:        TEXICMD_HEADINGS,
                    159:        TEXICMD_HEADITEM,
1.2       kristaps  160:        TEXICMD_HTML,
1.1       kristaps  161:        TEXICMD_HYPHEN,
                    162:        TEXICMD_I,
                    163:        TEXICMD_IFCLEAR,
                    164:        TEXICMD_IFDOCBOOK,
                    165:        TEXICMD_IFHTML,
                    166:        TEXICMD_IFINFO,
                    167:        TEXICMD_IFNOTDOCBOOK,
                    168:        TEXICMD_IFNOTHTML,
                    169:        TEXICMD_IFNOTINFO,
                    170:        TEXICMD_IFNOTPLAINTEXT,
                    171:        TEXICMD_IFNOTTEX,
                    172:        TEXICMD_IFNOTXML,
                    173:        TEXICMD_IFPLAINTEXT,
                    174:        TEXICMD_IFTEX,
                    175:        TEXICMD_IFSET,
                    176:        TEXICMD_IFXML,
                    177:        TEXICMD_IGNORE,
                    178:        TEXICMD_IMAGE,
                    179:        TEXICMD_INCLUDE,
                    180:        TEXICMD_INDENTBLOCK,
1.14      kristaps  181:        TEXICMD_INDICATEURL,
1.9       kristaps  182:        TEXICMD_INFOREF,
1.1       kristaps  183:        TEXICMD_INSERTCOPYING,
                    184:        TEXICMD_ITEM,
                    185:        TEXICMD_ITEMIZE,
                    186:        TEXICMD_ITEMX,
                    187:        TEXICMD_KBD,
                    188:        TEXICMD_KEY,
                    189:        TEXICMD_KINDEX,
1.12      kristaps  190:        TEXICMD_L,
1.1       kristaps  191:        TEXICMD_LATEX,
1.13      kristaps  192:        TEXICMD_LEQ,
1.1       kristaps  193:        TEXICMD_LOWERSECTIONS,
1.12      kristaps  194:        TEXICMD_LSMALL,
1.5       kristaps  195:        TEXICMD_MACRO,
1.12      kristaps  196:        TEXICMD_MACRON,
1.1       kristaps  197:        TEXICMD_MATH,
                    198:        TEXICMD_MENU,
1.2       kristaps  199:        TEXICMD_MINUS,
1.1       kristaps  200:        TEXICMD_MULTITABLE,
                    201:        TEXICMD_NEED,
                    202:        TEXICMD_NEWLINE,
                    203:        TEXICMD_NODE,
                    204:        TEXICMD_NOINDENT,
1.12      kristaps  205:        TEXICMD_O,
                    206:        TEXICMD_OE,
                    207:        TEXICMD_OESMALL,
                    208:        TEXICMD_OGONEK,
1.1       kristaps  209:        TEXICMD_OPTION,
1.12      kristaps  210:        TEXICMD_ORDF,
                    211:        TEXICMD_ORDM,
                    212:        TEXICMD_OSMALL,
1.1       kristaps  213:        TEXICMD_PAGE,
                    214:        TEXICMD_PARINDENT,
1.2       kristaps  215:        TEXICMD_PERIOD,
1.4       kristaps  216:        TEXICMD_PINDEX,
1.13      kristaps  217:        TEXICMD_POUNDS,
1.1       kristaps  218:        TEXICMD_PRINTINDEX,
1.12      kristaps  219:        TEXICMD_PXREF,
                    220:        TEXICMD_QUESTIONDOWN,
                    221:        TEXICMD_QUESTIONMARK,
                    222:        TEXICMD_QUOTATION,
1.13      kristaps  223:        TEXICMD_QUOTEDBLBASE,
                    224:        TEXICMD_QUOTEDBLLEFT,
                    225:        TEXICMD_QUOTEDBLRIGHT,
                    226:        TEXICMD_QUOTESINGLBASE,
                    227:        TEXICMD_QUOTELEFT,
                    228:        TEXICMD_QUOTERIGHT,
1.1       kristaps  229:        TEXICMD_R,
                    230:        TEXICMD_RAISESECTIONS,
                    231:        TEXICMD_REF,
1.4       kristaps  232:        TEXICMD_REFILL,
1.13      kristaps  233:        TEXICMD_REGISTEREDSYMBOL,
1.1       kristaps  234:        TEXICMD_RESULT,
1.12      kristaps  235:        TEXICMD_RINGACCENT,
1.1       kristaps  236:        TEXICMD_SAMP,
                    237:        TEXICMD_SANSSERIF,
                    238:        TEXICMD_SC,
                    239:        TEXICMD_SECTION,
                    240:        TEXICMD_SET,
                    241:        TEXICMD_SETCHAPNEWPAGE,
1.10      kristaps  242:        TEXICMD_SETCONTENTSAFTER,
1.1       kristaps  243:        TEXICMD_SETFILENAME,
                    244:        TEXICMD_SETTITLE,
1.2       kristaps  245:        TEXICMD_SHORTCONTENTS,
1.1       kristaps  246:        TEXICMD_SLANTED,
1.9       kristaps  247:        TEXICMD_SLASH,
1.1       kristaps  248:        TEXICMD_SP,
                    249:        TEXICMD_SPACE,
                    250:        TEXICMD_SMALLBOOK,
                    251:        TEXICMD_SMALLDISPLAY,
                    252:        TEXICMD_SMALLEXAMPLE,
                    253:        TEXICMD_SMALLFORMAT,
                    254:        TEXICMD_SMALLINDENTBLOCK,
                    255:        TEXICMD_SQUIGGLE_LEFT,
                    256:        TEXICMD_SQUIGGLE_RIGHT,
1.10      kristaps  257:        TEXICMD_SS,
1.1       kristaps  258:        TEXICMD_STRONG,
                    259:        TEXICMD_SUBHEADING,
                    260:        TEXICMD_SUBSECTION,
1.4       kristaps  261:        TEXICMD_SUBSUBHEADING,
1.1       kristaps  262:        TEXICMD_SUBSUBSECTION,
                    263:        TEXICMD_SUBTITLE,
1.2       kristaps  264:        TEXICMD_SUMMARYCONTENTS,
1.3       kristaps  265:        TEXICMD_SYNINDEX,
1.1       kristaps  266:        TEXICMD_SYNCODEINDEX,
                    267:        TEXICMD_T,
                    268:        TEXICMD_TAB,
                    269:        TEXICMD_TABSYM,
                    270:        TEXICMD_TABLE,
                    271:        TEXICMD_TEX,
                    272:        TEXICMD_TEXSYM,
1.13      kristaps  273:        TEXICMD_TEXTDEGREE,
1.12      kristaps  274:        TEXICMD_TH,
                    275:        TEXICMD_THSMALL,
1.10      kristaps  276:        TEXICMD_TIE,
1.12      kristaps  277:        TEXICMD_TIEACCENT,
1.1       kristaps  278:        TEXICMD_TILDE,
1.2       kristaps  279:        TEXICMD_TINDEX,
1.1       kristaps  280:        TEXICMD_TITLE,
                    281:        TEXICMD_TITLEFONT,
                    282:        TEXICMD_TITLEPAGE,
                    283:        TEXICMD_TOP,
1.27      kristaps  284:        TEXICMD_TPINDEX,
1.12      kristaps  285:        TEXICMD_U,
                    286:        TEXICMD_UBARACCENT,
                    287:        TEXICMD_UDOTACCENT,
1.1       kristaps  288:        TEXICMD_UMLAUT,
                    289:        TEXICMD_UNNUMBERED,
                    290:        TEXICMD_UNNUMBEREDSEC,
                    291:        TEXICMD_UNNUMBEREDSUBSEC,
                    292:        TEXICMD_UNNUMBEREDSUBSUBSEC,
                    293:        TEXICMD_UREF,
                    294:        TEXICMD_URL,
1.9       kristaps  295:        TEXICMD_USER_INDEX,
1.12      kristaps  296:        TEXICMD_V,
1.1       kristaps  297:        TEXICMD_VALUE,
                    298:        TEXICMD_VAR,
1.8       kristaps  299:        TEXICMD_VERB,
1.2       kristaps  300:        TEXICMD_VERBATIM,
1.1       kristaps  301:        TEXICMD_VERBATIMINCLUDE,
                    302:        TEXICMD_VINDEX,
1.27      kristaps  303:        TEXICMD_VRINDEX,
1.1       kristaps  304:        TEXICMD_VSKIP,
                    305:        TEXICMD_VTABLE,
                    306:        TEXICMD_W,
                    307:        TEXICMD_XREF,
                    308:        TEXICMD__MAX
                    309: };
                    310:
1.11      kristaps  311: enum   texisrc {
                    312:        TEXISRC_FILE,
                    313:        TEXISRC_STDIN
                    314: };
                    315:
1.1       kristaps  316: /*
                    317:  * The file currently being parsed.
                    318:  * This keeps track of our location within that file.
                    319:  */
                    320: struct texifile {
1.11      kristaps  321:        enum texisrc     type; /* type of file */
1.1       kristaps  322:        const char      *name; /* name of the file */
                    323:        size_t           line; /* current line (from zero) */
                    324:        size_t           col; /* current column in line (from zero) */
1.15      kristaps  325:        char            *map; /* allocated file buffer */
                    326:        size_t           mapsz; /* size of map */
                    327:        size_t           mapmaxsz; /* full size of map */
1.16      kristaps  328:        size_t           insplice; /* how many bytes left in splice */
1.18      kristaps  329:        size_t           depth; /* pasted macro recursive depth */
1.1       kristaps  330: };
                    331:
                    332: struct texi;
                    333:
                    334: /*
                    335:  * Callback for functions implementing texi commands.
                    336:  */
1.15      kristaps  337: typedef        void (*texicmdfp)(struct texi *, enum texicmd, size_t *);
1.1       kristaps  338:
                    339: /*
                    340:  * Describes Texinfo commands, whether native or overriden.
                    341:  */
                    342: struct texitok {
                    343:        texicmdfp        fp; /* callback (or NULL if none) */
                    344:        const char      *tok; /* name of the token */
                    345:        size_t           len; /* strlen(tok) */
                    346: };
                    347:
1.11      kristaps  348: /*
                    349:  * These values instruct us on whether a list (or table) of some type is
                    350:  * currently being parsed.
                    351:  */
1.1       kristaps  352: enum   texilist {
                    353:        TEXILIST_NONE = 0,
                    354:        TEXILIST_ITEM,
                    355:        TEXILIST_NOITEM,
                    356:        TEXILIST_TABLE
                    357: };
                    358:
1.11      kristaps  359: /*
                    360:  * Hold values assigned with @set and retrieved with @value.
                    361:  * These values can contain arbitrary Texinfo.
                    362:  */
1.1       kristaps  363: struct texivalue {
1.11      kristaps  364:        char            *key; /* the nil-terminated value name */
                    365:        char            *value; /* the nil-terminated value */
1.1       kristaps  366: };
                    367:
1.11      kristaps  368: /*
                    369:  * Macros are (possibly-recursive) Texinfo sequences created with @macro
                    370:  * and filled in by arguments when invoked.
                    371:  */
1.5       kristaps  372: struct teximacro {
1.11      kristaps  373:        char             *key; /* nil-terminated macro name */
                    374:        char             *value; /* nil-terminated value */
                    375:        char            **args; /* array of argument names (or NULL) */
                    376:        size_t            argsz; /* array size */
1.5       kristaps  377: };
                    378:
1.1       kristaps  379: /*
1.28      kristaps  380:  * A term is a word in an index.
                    381:  * For example "@cindex foo" adds the term "foo" to the "cp" index.
                    382:  * This occurs within a chapter ("nodes" in struct texi)
                    383:  */
                    384: struct texiterm {
                    385:        char            *term;
1.29    ! kristaps  386:        ssize_t          chapter;
1.28      kristaps  387: };
                    388:
                    389: /*
1.27      kristaps  390:  * Index tables.
                    391:  * These have a two or three letter name (usually) and any number of
                    392:  * terms that are associated with it.
                    393:  */
                    394: struct texidex {
                    395:        char             *name;
1.28      kristaps  396:        struct texiterm  *index;
1.27      kristaps  397:        size_t            indexsz;
                    398: };
                    399:
1.29    ! kristaps  400: struct texinode {
        !           401:        char             *name;
        !           402:        ssize_t           up;
        !           403:        ssize_t           prev;
        !           404:        ssize_t           next;
        !           405: };
        !           406:
1.27      kristaps  407: /*
1.1       kristaps  408:  * The main parse structure.
                    409:  * This keeps any necessary information handy.
                    410:  */
                    411: struct texi {
1.21      kristaps  412:        const char       *chapters; /* are we splitting chapters */
                    413:        char            **dirs; /* texi directories */
                    414:        size_t            dirsz; /* number of texi directories */
1.26      kristaps  415:        FILE             *outfile; /* current output stream */
1.21      kristaps  416:        /*
                    417:         * Run-time parameters.
                    418:         */
1.1       kristaps  419:        struct texifile   files[64]; /* stack of open files */
                    420:        size_t            filepos; /* number of open files */
1.4       kristaps  421:        const char       *valstack[64]; /* stack of opened values */
                    422:        size_t            valstackpos; /* position in valstack */
1.1       kristaps  423:        char             *title; /* title of document */
                    424:        char             *subtitle; /* subtitle of document */
                    425:        int               secoffs; /* see sectioner() */
1.27      kristaps  426:        struct texidex   *indexs; /* index entries */
1.3       kristaps  427:        size_t            indexsz; /* entries in indexs */
                    428:        struct texivalue *vals; /* @value entries */
                    429:        size_t            valsz; /* entries in vals */
1.11      kristaps  430:        struct teximacro *macros; /* @macro entries */
                    431:        size_t            macrosz; /* entries in macros */
1.26      kristaps  432:        char             *copying; /* the @copying block */
                    433:        size_t            copyingsz; /* length of @copying */
1.29    ! kristaps  434:        struct texinode  *nodecache; /* index of node names */
        !           435:        size_t            nodecachesz; /* nodes in nodecache */
        !           436:        size_t            nodesz; /* parsing node (sequential) */
        !           437:        ssize_t           nodecur; /* parsing node (cache position) */
1.1       kristaps  438:        /*
                    439:         * The following control what we output to the screen.
                    440:         * The complexity is required to accomodate for mdoc(7).
                    441:         */
                    442:        enum texilist     list; /* current list (set recursively) */
                    443:        int               outmacro; /* if >0, output is in line macro */
1.21      kristaps  444:        size_t            outcol; /* column in output line */
1.1       kristaps  445:        int               seenws; /* ws has been seen (and ignored) */
                    446:        int               seenvs; /* newline has been Pp'd */
                    447:        int               ign; /* if >0, don't print anything */
                    448:        int               literal; /* if >0, literal context */
1.24      kristaps  449:        int               uppercase; /* if >0, uppercase */
1.1       kristaps  450: };
                    451:
1.15      kristaps  452: #define        BUF(_p) ((_p)->files[(_p)->filepos - 1].map)
                    453: #define        BUFSZ(_p) ((_p)->files[(_p)->filepos - 1].mapsz)
                    454:
1.1       kristaps  455: #define        isws(_x) \
                    456:        (' ' == (_x) || '\t' == (_x))
                    457: #define        ismspace(_x) \
                    458:        (isws((_x)) || '\n' == (_x))
                    459:
                    460: __BEGIN_DECLS
                    461:
1.15      kristaps  462: void   advance(struct texi *, size_t *);
                    463: size_t advanceeoln(struct texi *, size_t *, int);
                    464: void   advanceto(struct texi *, size_t *, size_t);
1.1       kristaps  465:
1.15      kristaps  466: char  **argparse(struct texi *, size_t *, size_t *, size_t);
1.5       kristaps  467:
1.15      kristaps  468: int    parsearg(struct texi *, size_t *, size_t);
1.19      kristaps  469: void   parsebracket(struct texi *, size_t *, int);
1.11      kristaps  470: void   parsestdin(struct texi *);
1.1       kristaps  471: void   parsefile(struct texi *, const char *, int);
1.15      kristaps  472: int    parselinearg(struct texi *, size_t *);
                    473: void   parseeoln(struct texi *, size_t *);
                    474: void   parseto(struct texi *, size_t *, const char *);
1.29    ! kristaps  475: void   parsesingle(struct texi *, size_t *);
1.1       kristaps  476:
1.3       kristaps  477: void   texiabort(struct texi *, const char *)
                    478:                __attribute__((noreturn));
1.1       kristaps  479: enum texicmd
1.20      kristaps  480:        texicmd(const struct texi *, size_t, size_t *, struct teximacro **);
                    481: enum texicmd
                    482:        peekcmd(const struct texi *, size_t);
1.27      kristaps  483: enum texicmd
                    484:        peeklinecmd(const struct texi *, size_t);
1.29    ! kristaps  485: ssize_t        texicache(struct texi *, const char *, size_t);
1.1       kristaps  486: void   texierr(struct texi *, const char *, ...)
1.3       kristaps  487:                __attribute__((format(printf, 2, 3)))
                    488:                __attribute__((noreturn));
1.1       kristaps  489: void   texiexit(struct texi *p);
                    490: void   texifilepop(struct texi *);
                    491: void   teximacro(struct texi *, const char *);
                    492: void   teximacroclose(struct texi *);
                    493: void   teximacroopen(struct texi *, const char *);
1.22      kristaps  494: void   teximdocopen(struct texi *, size_t *);
1.21      kristaps  495: void   teximdocclose(struct texi *, int);
1.27      kristaps  496: void   texindex(struct texi *, const char *,
                    497:                size_t, const char *, size_t);
                    498: void   texindex_add(struct texi *, const char *, size_t);
1.15      kristaps  499: void   texipunctuate(struct texi *, size_t *);
                    500: void   texiputbuf(struct texi *p, size_t, size_t);
1.1       kristaps  501: void   texiputchar(struct texi *p, char);
                    502: void   texiputchars(struct texi *, const char *);
                    503: void   texivspace(struct texi *);
                    504: void   texiwarn(const struct texi *, const char *, ...)
                    505:                __attribute__((format(printf, 2, 3)));
1.22      kristaps  506: void   texisplice(struct texi *, const char *, size_t, size_t);
1.2       kristaps  507:
                    508: void   valueadd(struct texi *, char *, char *);
                    509: const char *
1.15      kristaps  510:        valueblookup(struct texi *, size_t *);
                    511: void   valuelclear(struct texi *, size_t *);
1.2       kristaps  512: const char *
1.15      kristaps  513:        valuellookup(struct texi *, size_t *);
1.1       kristaps  514:
                    515: extern const struct texitok *const texitoks;
                    516:
                    517: __END_DECLS
                    518:
                    519: #endif

CVSweb