=================================================================== RCS file: /cvs/texi2mdoc/extern.h,v retrieving revision 1.2 retrieving revision 1.7 diff -u -p -r1.2 -r1.7 --- texi2mdoc/extern.h 2015/02/20 12:25:25 1.2 +++ texi2mdoc/extern.h 2015/02/23 12:28:20 1.7 @@ -1,4 +1,4 @@ -/* $Id: extern.h,v 1.2 2015/02/20 12:25:25 kristaps Exp $ */ +/* $Id: extern.h,v 1.7 2015/02/23 12:28:20 kristaps Exp $ */ /* * Copyright (c) 2015 Kristaps Dzonsons * @@ -54,8 +54,10 @@ enum texicmd { TEXICMD_CONTENTS, TEXICMD_COPYING, TEXICMD_COPYRIGHT, + TEXICMD_DEFCODEINDEX, TEXICMD_DEFFN, TEXICMD_DEFFNX, + TEXICMD_DEFINDEX, TEXICMD_DEFMAC, TEXICMD_DEFMACX, TEXICMD_DEFTP, @@ -79,12 +81,14 @@ enum texicmd { TEXICMD_DIRCATEGORY, TEXICMD_DIRENTRY, TEXICMD_DISPLAY, + TEXICMD_DMN, TEXICMD_DOTS, TEXICMD_EMAIL, TEXICMD_EMPH, TEXICMD_END, TEXICMD_ENUMERATE, TEXICMD_ENV, + TEXICMD_EQUIV, TEXICMD_ERROR, TEXICMD_EXAMPLE, TEXICMD_EXDENT, @@ -92,6 +96,7 @@ enum texicmd { TEXICMD_FILE, TEXICMD_FINALOUT, TEXICMD_FINDEX, + TEXICMD_FOOTNOTE, TEXICMD_FTABLE, TEXICMD_FORMAT, TEXICMD_GRAVE, @@ -120,6 +125,7 @@ enum texicmd { TEXICMD_IMAGE, TEXICMD_INCLUDE, TEXICMD_INDENTBLOCK, + TEXICMD_USER_INDEX, TEXICMD_INSERTCOPYING, TEXICMD_ITEM, TEXICMD_ITEMIZE, @@ -129,6 +135,7 @@ enum texicmd { TEXICMD_KINDEX, TEXICMD_LATEX, TEXICMD_LOWERSECTIONS, + TEXICMD_MACRO, TEXICMD_MATH, TEXICMD_MENU, TEXICMD_MINUS, @@ -144,10 +151,12 @@ enum texicmd { TEXICMD_PAGE, TEXICMD_PARINDENT, TEXICMD_PERIOD, + TEXICMD_PINDEX, TEXICMD_PRINTINDEX, TEXICMD_R, TEXICMD_RAISESECTIONS, TEXICMD_REF, + TEXICMD_REFILL, TEXICMD_RESULT, TEXICMD_SAMP, TEXICMD_SANSSERIF, @@ -171,9 +180,11 @@ enum texicmd { TEXICMD_STRONG, TEXICMD_SUBHEADING, TEXICMD_SUBSECTION, + TEXICMD_SUBSUBHEADING, TEXICMD_SUBSUBSECTION, TEXICMD_SUBTITLE, TEXICMD_SUMMARYCONTENTS, + TEXICMD_SYNINDEX, TEXICMD_SYNCODEINDEX, TEXICMD_T, TEXICMD_TAB, @@ -247,6 +258,13 @@ struct texivalue { char *value; }; +struct teximacro { + char *key; + char *value; + char **args; + size_t argsz; +}; + /* * The main parse structure. * This keeps any necessary information handy. @@ -254,14 +272,20 @@ struct texivalue { struct texi { struct texifile files[64]; /* stack of open files */ size_t filepos; /* number of open files */ + const char *valstack[64]; /* stack of opened values */ + size_t valstackpos; /* position in valstack */ size_t outcol; /* column in output line */ char **dirs; /* texi directories */ size_t dirsz; /* number of texi directories */ char *title; /* title of document */ char *subtitle; /* subtitle of document */ int secoffs; /* see sectioner() */ - struct texivalue *vals; - size_t valsz; + char **indexs; /* @defindex indices */ + size_t indexsz; /* entries in indexs */ + struct texivalue *vals; /* @value entries */ + size_t valsz; /* entries in vals */ + struct teximacro *macros; + size_t macrosz; /* * The following control what we output to the screen. * The complexity is required to accomodate for mdoc(7). @@ -285,20 +309,26 @@ void advance(struct texi *, const char *, size_t *); size_t advanceeoln(struct texi *, const char *, size_t, size_t *, int); void advanceto(struct texi *, const char *, size_t *, size_t); +char **argparse(struct texi *, const char *, size_t, size_t *, size_t *, size_t); + int parsearg(struct texi *, const char *, size_t, size_t *, size_t); void parsebracket(struct texi *, const char *, size_t, size_t *); void parsefile(struct texi *, const char *, int); int parselinearg(struct texi *, const char *, size_t, size_t *); void parseeof(struct texi *, const char *, size_t); +void parsemembuf(struct texi *, const char *, size_t); void parseeoln(struct texi *, const char *, size_t, size_t *); void parsesingle(struct texi *, const char *, size_t, size_t *); void parseto(struct texi *, const char *, size_t, size_t *, const char *); -void texiabort(struct texi *, const char *); +void texiabort(struct texi *, const char *) + __attribute__((noreturn)); enum texicmd - texicmd(struct texi *, const char *, size_t, size_t, size_t *); + texicmd(struct texi *, const char *, size_t, size_t, + size_t *, struct teximacro **); void texierr(struct texi *, const char *, ...) - __attribute__((format(printf, 2, 3))); + __attribute__((format(printf, 2, 3))) + __attribute__((noreturn)); void texiexit(struct texi *p); void texifilepop(struct texi *); void teximacro(struct texi *, const char *);