=================================================================== RCS file: /cvs/texi2mdoc/extern.h,v retrieving revision 1.3 retrieving revision 1.9 diff -u -p -r1.3 -r1.9 --- texi2mdoc/extern.h 2015/02/21 17:00:33 1.3 +++ texi2mdoc/extern.h 2015/02/23 14:36:03 1.9 @@ -1,4 +1,4 @@ -/* $Id: extern.h,v 1.3 2015/02/21 17:00:33 kristaps Exp $ */ +/* $Id: extern.h,v 1.9 2015/02/23 14:36:03 kristaps Exp $ */ /* * Copyright (c) 2015 Kristaps Dzonsons * @@ -39,6 +39,8 @@ enum texicmd { TEXICMD_BANG, TEXICMD_BULLET, TEXICMD_BYE, + TEXICMD_CARTOUCHE, + TEXICMD_CEDILLA, TEXICMD_CENTER, TEXICMD_CHAPTER, TEXICMD_CINDEX, @@ -66,6 +68,8 @@ enum texicmd { TEXICMD_DEFTYPEFNX, TEXICMD_DEFTYPEFUN, TEXICMD_DEFTYPEFUNX, + TEXICMD_DEFTYPEMETHOD, + TEXICMD_DEFTYPEMETHODX, TEXICMD_DEFTYPEVAR, TEXICMD_DEFTYPEVARX, TEXICMD_DEFTYPEVR, @@ -81,12 +85,15 @@ enum texicmd { TEXICMD_DIRCATEGORY, TEXICMD_DIRENTRY, TEXICMD_DISPLAY, + TEXICMD_DMN, TEXICMD_DOTS, TEXICMD_EMAIL, TEXICMD_EMPH, TEXICMD_END, + TEXICMD_ENDDOTS, TEXICMD_ENUMERATE, TEXICMD_ENV, + TEXICMD_EQUIV, TEXICMD_ERROR, TEXICMD_EXAMPLE, TEXICMD_EXDENT, @@ -94,6 +101,7 @@ enum texicmd { TEXICMD_FILE, TEXICMD_FINALOUT, TEXICMD_FINDEX, + TEXICMD_FOOTNOTE, TEXICMD_FTABLE, TEXICMD_FORMAT, TEXICMD_GRAVE, @@ -122,7 +130,7 @@ enum texicmd { TEXICMD_IMAGE, TEXICMD_INCLUDE, TEXICMD_INDENTBLOCK, - TEXICMD_INDEX, + TEXICMD_INFOREF, TEXICMD_INSERTCOPYING, TEXICMD_ITEM, TEXICMD_ITEMIZE, @@ -132,6 +140,7 @@ enum texicmd { TEXICMD_KINDEX, TEXICMD_LATEX, TEXICMD_LOWERSECTIONS, + TEXICMD_MACRO, TEXICMD_MATH, TEXICMD_MENU, TEXICMD_MINUS, @@ -147,10 +156,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, @@ -162,6 +173,7 @@ enum texicmd { TEXICMD_SETTITLE, TEXICMD_SHORTCONTENTS, TEXICMD_SLANTED, + TEXICMD_SLASH, TEXICMD_SP, TEXICMD_SPACE, TEXICMD_SMALLBOOK, @@ -174,6 +186,7 @@ enum texicmd { TEXICMD_STRONG, TEXICMD_SUBHEADING, TEXICMD_SUBSECTION, + TEXICMD_SUBSUBHEADING, TEXICMD_SUBSUBSECTION, TEXICMD_SUBTITLE, TEXICMD_SUMMARYCONTENTS, @@ -198,8 +211,10 @@ enum texicmd { TEXICMD_UNNUMBEREDSUBSUBSEC, TEXICMD_UREF, TEXICMD_URL, + TEXICMD_USER_INDEX, TEXICMD_VALUE, TEXICMD_VAR, + TEXICMD_VERB, TEXICMD_VERBATIM, TEXICMD_VERBATIMINCLUDE, TEXICMD_VINDEX, @@ -251,6 +266,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 +280,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 +292,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 +317,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 +332,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)); @@ -313,6 +343,7 @@ void teximacro(struct texi *, const char *); void teximacroclose(struct texi *); void teximacroopen(struct texi *, const char *); void texipunctuate(struct texi *, const char *, size_t, size_t *); +void texiputbuf(struct texi *p, const char *, size_t, size_t); void texiputchar(struct texi *p, char); void texiputchars(struct texi *, const char *); void texivspace(struct texi *);