=================================================================== RCS file: /cvs/texi2mdoc/extern.h,v retrieving revision 1.3 retrieving revision 1.7 diff -u -p -r1.3 -r1.7 --- texi2mdoc/extern.h 2015/02/21 17:00:33 1.3 +++ texi2mdoc/extern.h 2015/02/23 12:28:20 1.7 @@ -1,4 +1,4 @@ -/* $Id: extern.h,v 1.3 2015/02/21 17:00:33 kristaps Exp $ */ +/* $Id: extern.h,v 1.7 2015/02/23 12:28:20 kristaps Exp $ */ /* * Copyright (c) 2015 Kristaps Dzonsons * @@ -81,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, @@ -94,6 +96,7 @@ enum texicmd { TEXICMD_FILE, TEXICMD_FINALOUT, TEXICMD_FINDEX, + TEXICMD_FOOTNOTE, TEXICMD_FTABLE, TEXICMD_FORMAT, TEXICMD_GRAVE, @@ -122,7 +125,7 @@ enum texicmd { TEXICMD_IMAGE, TEXICMD_INCLUDE, TEXICMD_INDENTBLOCK, - TEXICMD_INDEX, + TEXICMD_USER_INDEX, TEXICMD_INSERTCOPYING, TEXICMD_ITEM, TEXICMD_ITEMIZE, @@ -132,6 +135,7 @@ enum texicmd { TEXICMD_KINDEX, TEXICMD_LATEX, TEXICMD_LOWERSECTIONS, + TEXICMD_MACRO, TEXICMD_MATH, TEXICMD_MENU, TEXICMD_MINUS, @@ -147,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, @@ -174,6 +180,7 @@ enum texicmd { TEXICMD_STRONG, TEXICMD_SUBHEADING, TEXICMD_SUBSECTION, + TEXICMD_SUBSUBHEADING, TEXICMD_SUBSUBSECTION, TEXICMD_SUBTITLE, TEXICMD_SUMMARYCONTENTS, @@ -251,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. @@ -258,6 +272,8 @@ 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 */ @@ -268,6 +284,8 @@ struct texi { 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). @@ -291,11 +309,14 @@ 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 *); @@ -303,7 +324,8 @@ void parseto(struct texi *, const char *, size_t, size 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__((noreturn));