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

Diff for /texi2mdoc/extern.h between version 1.11 and 1.30

version 1.11, 2015/02/23 22:50:11 version 1.30, 2018/11/13 08:45:29
Line 17 
Line 17 
 #ifndef EXTERN_H  #ifndef EXTERN_H
 #define EXTERN_H  #define EXTERN_H
   
   #if !defined(__BEGIN_DECLS)
   #  ifdef __cplusplus
   #  define       __BEGIN_DECLS           extern "C" {
   #  else
   #  define       __BEGIN_DECLS
   #  endif
   #endif
   #if !defined(__END_DECLS)
   #  ifdef __cplusplus
   #  define       __END_DECLS             }
   #  else
   #  define       __END_DECLS
   #  endif
   #endif
   
   #define HAVE_INDEX 1
   
 /*  /*
  * This defines each one of the Texinfo commands that we understand.   * This defines each one of the Texinfo commands that we understand.
  * Obviously this only refers to native commands; overriden names are a   * Obviously this only refers to native commands; overriden names are a
  * different story.   * different story.
  */   */
 enum    texicmd {  enum    texicmd {
           TEXICMD_A4PAPER,
           TEXICMD_AA,
           TEXICMD_AASMALL,
         TEXICMD_ACRONYM,          TEXICMD_ACRONYM,
         TEXICMD_ACUTE,          TEXICMD_ACUTE,
         TEXICMD_A4PAPER,          TEXICMD_AE,
           TEXICMD_AESMALL,
         TEXICMD_ANCHOR,          TEXICMD_ANCHOR,
         TEXICMD_APPENDIX,          TEXICMD_APPENDIX,
         TEXICMD_APPENDIXSEC,          TEXICMD_APPENDIXSEC,
Line 36  enum texicmd {
Line 57  enum texicmd {
         TEXICMD_AT,          TEXICMD_AT,
         TEXICMD_AUTHOR,          TEXICMD_AUTHOR,
         TEXICMD_B,          TEXICMD_B,
           TEXICMD_BACKSLASH,
         TEXICMD_BANG,          TEXICMD_BANG,
         TEXICMD_BULLET,          TEXICMD_BULLET,
         TEXICMD_BYE,          TEXICMD_BYE,
Line 63  enum texicmd {
Line 85  enum texicmd {
         TEXICMD_DEFINDEX,          TEXICMD_DEFINDEX,
         TEXICMD_DEFMAC,          TEXICMD_DEFMAC,
         TEXICMD_DEFMACX,          TEXICMD_DEFMACX,
           TEXICMD_DEFOP,
           TEXICMD_DEFOPX,
           TEXICMD_DEFOPT,
           TEXICMD_DEFOPTX,
         TEXICMD_DEFTP,          TEXICMD_DEFTP,
         TEXICMD_DEFTPX,          TEXICMD_DEFTPX,
         TEXICMD_DEFTYPEFN,          TEXICMD_DEFTYPEFN,
Line 83  enum texicmd {
Line 109  enum texicmd {
         TEXICMD_DEFVRX,          TEXICMD_DEFVRX,
         TEXICMD_DETAILMENU,          TEXICMD_DETAILMENU,
         TEXICMD_DFN,          TEXICMD_DFN,
           TEXICMD_DH,
           TEXICMD_DHSMALL,
         TEXICMD_DIRCATEGORY,          TEXICMD_DIRCATEGORY,
         TEXICMD_DIRENTRY,          TEXICMD_DIRENTRY,
         TEXICMD_DISPLAY,          TEXICMD_DISPLAY,
         TEXICMD_DMN,          TEXICMD_DMN,
         TEXICMD_DOCUMENTDESCRPITION,          TEXICMD_DOCUMENTDESCRPITION,
         TEXICMD_DOCUMENTENCODING,          TEXICMD_DOCUMENTENCODING,
           TEXICMD_DOCUMENTLANGUAGE,
           TEXICMD_DOTACCENT,
           TEXICMD_DOTLESS,
         TEXICMD_DOTS,          TEXICMD_DOTS,
         TEXICMD_EMAIL,          TEXICMD_EMAIL,
         TEXICMD_EMPH,          TEXICMD_EMPH,
Line 98  enum texicmd {
Line 129  enum texicmd {
         TEXICMD_ENV,          TEXICMD_ENV,
         TEXICMD_EQUIV,          TEXICMD_EQUIV,
         TEXICMD_ERROR,          TEXICMD_ERROR,
           TEXICMD_EURO,
         TEXICMD_EXAMPLE,          TEXICMD_EXAMPLE,
           TEXICMD_EXCLAMDOWN,
         TEXICMD_EXDENT,          TEXICMD_EXDENT,
         TEXICMD_EXPANSION,          TEXICMD_EXPANSION,
         TEXICMD_FILE,          TEXICMD_FILE,
         TEXICMD_FINALOUT,          TEXICMD_FINALOUT,
         TEXICMD_FINDEX,          TEXICMD_FINDEX,
           TEXICMD_FLUSHLEFT,
           TEXICMD_FLUSHRIGHT,
           TEXICMD_FIRSTPARAGRAPHINDENT,
         TEXICMD_FOOTNOTE,          TEXICMD_FOOTNOTE,
           TEXICMD_FOOTNOTESTYLE,
         TEXICMD_FTABLE,          TEXICMD_FTABLE,
         TEXICMD_FORMAT,          TEXICMD_FORMAT,
           TEXICMD_GEQ,
         TEXICMD_GRAVE,          TEXICMD_GRAVE,
         TEXICMD_GROUP,          TEXICMD_GROUP,
           TEXICMD_GUILLEMETLEFT,
           TEXICMD_GUILLEMETRIGHT,
           TEXICMD_GUILLEMOTLEFT,
           TEXICMD_GUILLEMOTRIGHT,
           TEXICMD_GUILSINGLLEFT,
           TEXICMD_GUILSINGLRIGHT,
           TEXICMD_H,
         TEXICMD_HEADING,          TEXICMD_HEADING,
         TEXICMD_HEADINGS,          TEXICMD_HEADINGS,
         TEXICMD_HEADITEM,          TEXICMD_HEADITEM,
Line 133  enum texicmd {
Line 178  enum texicmd {
         TEXICMD_IMAGE,          TEXICMD_IMAGE,
         TEXICMD_INCLUDE,          TEXICMD_INCLUDE,
         TEXICMD_INDENTBLOCK,          TEXICMD_INDENTBLOCK,
           TEXICMD_INDICATEURL,
         TEXICMD_INFOREF,          TEXICMD_INFOREF,
         TEXICMD_INSERTCOPYING,          TEXICMD_INSERTCOPYING,
         TEXICMD_ITEM,          TEXICMD_ITEM,
Line 141  enum texicmd {
Line 187  enum texicmd {
         TEXICMD_KBD,          TEXICMD_KBD,
         TEXICMD_KEY,          TEXICMD_KEY,
         TEXICMD_KINDEX,          TEXICMD_KINDEX,
           TEXICMD_L,
         TEXICMD_LATEX,          TEXICMD_LATEX,
           TEXICMD_LEQ,
         TEXICMD_LOWERSECTIONS,          TEXICMD_LOWERSECTIONS,
           TEXICMD_LSMALL,
         TEXICMD_MACRO,          TEXICMD_MACRO,
           TEXICMD_MACRON,
         TEXICMD_MATH,          TEXICMD_MATH,
         TEXICMD_MENU,          TEXICMD_MENU,
         TEXICMD_MINUS,          TEXICMD_MINUS,
Line 152  enum texicmd {
Line 202  enum texicmd {
         TEXICMD_NEWLINE,          TEXICMD_NEWLINE,
         TEXICMD_NODE,          TEXICMD_NODE,
         TEXICMD_NOINDENT,          TEXICMD_NOINDENT,
           TEXICMD_O,
           TEXICMD_OE,
           TEXICMD_OESMALL,
           TEXICMD_OGONEK,
         TEXICMD_OPTION,          TEXICMD_OPTION,
         TEXICMD_PXREF,          TEXICMD_ORDF,
         TEXICMD_QUESTIONMARK,          TEXICMD_ORDM,
         TEXICMD_QUOTATION,          TEXICMD_OSMALL,
         TEXICMD_PAGE,          TEXICMD_PAGE,
         TEXICMD_PARINDENT,          TEXICMD_PARINDENT,
         TEXICMD_PERIOD,          TEXICMD_PERIOD,
         TEXICMD_PINDEX,          TEXICMD_PINDEX,
           TEXICMD_POUNDS,
         TEXICMD_PRINTINDEX,          TEXICMD_PRINTINDEX,
           TEXICMD_PXREF,
           TEXICMD_QUESTIONDOWN,
           TEXICMD_QUESTIONMARK,
           TEXICMD_QUOTATION,
           TEXICMD_QUOTEDBLBASE,
           TEXICMD_QUOTEDBLLEFT,
           TEXICMD_QUOTEDBLRIGHT,
           TEXICMD_QUOTESINGLBASE,
           TEXICMD_QUOTELEFT,
           TEXICMD_QUOTERIGHT,
         TEXICMD_R,          TEXICMD_R,
         TEXICMD_RAISESECTIONS,          TEXICMD_RAISESECTIONS,
         TEXICMD_REF,          TEXICMD_REF,
         TEXICMD_REFILL,          TEXICMD_REFILL,
           TEXICMD_REGISTEREDSYMBOL,
         TEXICMD_RESULT,          TEXICMD_RESULT,
           TEXICMD_RINGACCENT,
         TEXICMD_SAMP,          TEXICMD_SAMP,
         TEXICMD_SANSSERIF,          TEXICMD_SANSSERIF,
         TEXICMD_SC,          TEXICMD_SC,
Line 203  enum texicmd {
Line 270  enum texicmd {
         TEXICMD_TABLE,          TEXICMD_TABLE,
         TEXICMD_TEX,          TEXICMD_TEX,
         TEXICMD_TEXSYM,          TEXICMD_TEXSYM,
           TEXICMD_TEXTDEGREE,
           TEXICMD_TH,
           TEXICMD_THSMALL,
         TEXICMD_TIE,          TEXICMD_TIE,
           TEXICMD_TIEACCENT,
         TEXICMD_TILDE,          TEXICMD_TILDE,
         TEXICMD_TINDEX,          TEXICMD_TINDEX,
         TEXICMD_TITLE,          TEXICMD_TITLE,
         TEXICMD_TITLEFONT,          TEXICMD_TITLEFONT,
         TEXICMD_TITLEPAGE,          TEXICMD_TITLEPAGE,
         TEXICMD_TOP,          TEXICMD_TOP,
           TEXICMD_TPINDEX,
           TEXICMD_U,
           TEXICMD_UBARACCENT,
           TEXICMD_UDOTACCENT,
         TEXICMD_UMLAUT,          TEXICMD_UMLAUT,
         TEXICMD_UNNUMBERED,          TEXICMD_UNNUMBERED,
         TEXICMD_UNNUMBEREDSEC,          TEXICMD_UNNUMBEREDSEC,
Line 218  enum texicmd {
Line 293  enum texicmd {
         TEXICMD_UREF,          TEXICMD_UREF,
         TEXICMD_URL,          TEXICMD_URL,
         TEXICMD_USER_INDEX,          TEXICMD_USER_INDEX,
           TEXICMD_V,
         TEXICMD_VALUE,          TEXICMD_VALUE,
         TEXICMD_VAR,          TEXICMD_VAR,
         TEXICMD_VERB,          TEXICMD_VERB,
         TEXICMD_VERBATIM,          TEXICMD_VERBATIM,
         TEXICMD_VERBATIMINCLUDE,          TEXICMD_VERBATIMINCLUDE,
         TEXICMD_VINDEX,          TEXICMD_VINDEX,
           TEXICMD_VRINDEX,
         TEXICMD_VSKIP,          TEXICMD_VSKIP,
         TEXICMD_VTABLE,          TEXICMD_VTABLE,
         TEXICMD_W,          TEXICMD_W,
Line 245  struct texifile {
Line 322  struct texifile {
         const char      *name; /* name of the file */          const char      *name; /* name of the file */
         size_t           line; /* current line (from zero) */          size_t           line; /* current line (from zero) */
         size_t           col; /* current column in line (from zero) */          size_t           col; /* current column in line (from zero) */
         char            *map; /* mmap'd file OR allocated buffer */          char            *map; /* allocated file buffer */
         size_t           mapsz; /* size of mmap */          size_t           mapsz; /* size of map */
           size_t           mapmaxsz; /* full size of map */
           size_t           insplice; /* how many bytes left in splice */
           size_t           depth; /* pasted macro recursive depth */
 };  };
   
 struct  texi;  struct  texi;
Line 254  struct texi;
Line 334  struct texi;
 /*  /*
  * Callback for functions implementing texi commands.   * Callback for functions implementing texi commands.
  */   */
 typedef void (*texicmdfp)(struct texi *,  typedef void (*texicmdfp)(struct texi *, enum texicmd, size_t *);
         enum texicmd, const char *, size_t, size_t *);  
   
 /*  /*
  * Describes Texinfo commands, whether native or overriden.   * Describes Texinfo commands, whether native or overriden.
Line 298  struct teximacro {
Line 377  struct teximacro {
 };  };
   
 /*  /*
    * A term is a word in an index.
    * For example "@cindex foo" adds the term "foo" to the "cp" index.
    * This occurs within a chapter ("nodes" in struct texi)
    */
   struct  texiterm {
           char            *term;
           ssize_t          chapter;
   };
   
   /*
    * Index tables.
    * These have a two or three letter name (usually) and any number of
    * terms that are associated with it.
    */
   struct  texidex {
           char             *name;
           struct texiterm  *index;
           size_t            indexsz;
   };
   
   struct  texinode {
           char             *name;
           ssize_t           up;
           ssize_t           prev;
           ssize_t           next;
   };
   
   /*
  * The main parse structure.   * The main parse structure.
  * This keeps any necessary information handy.   * This keeps any necessary information handy.
  */   */
 struct  texi {  struct  texi {
           const char       *chapters; /* are we splitting chapters */
           char            **dirs; /* texi directories */
           size_t            dirsz; /* number of texi directories */
           FILE             *outfile; /* current output stream */
           /*
            * Run-time parameters.
            */
         struct texifile   files[64]; /* stack of open files */          struct texifile   files[64]; /* stack of open files */
         size_t            filepos; /* number of open files */          size_t            filepos; /* number of open files */
         const char       *valstack[64]; /* stack of opened values */          const char       *valstack[64]; /* stack of opened values */
         size_t            valstackpos; /* position in valstack */          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             *title; /* title of document */
         char             *subtitle; /* subtitle of document */          char             *subtitle; /* subtitle of document */
           char             *date; /* date of document */
         int               secoffs; /* see sectioner() */          int               secoffs; /* see sectioner() */
         char            **indexs; /* @defindex indices */          struct texidex   *indexs; /* index entries */
         size_t            indexsz; /* entries in indexs */          size_t            indexsz; /* entries in indexs */
         struct texivalue *vals; /* @value entries */          struct texivalue *vals; /* @value entries */
         size_t            valsz; /* entries in vals */          size_t            valsz; /* entries in vals */
         struct teximacro *macros; /* @macro entries */          struct teximacro *macros; /* @macro entries */
         size_t            macrosz; /* entries in macros */          size_t            macrosz; /* entries in macros */
           char             *copying; /* the @copying block */
           size_t            copyingsz; /* length of @copying */
           struct texinode  *nodecache; /* index of node names */
           size_t            nodecachesz; /* nodes in nodecache */
           size_t            nodesz; /* parsing node (sequential) */
           ssize_t           nodecur; /* parsing node (cache position) */
         /*          /*
          * The following control what we output to the screen.           * The following control what we output to the screen.
          * The complexity is required to accomodate for mdoc(7).           * The complexity is required to accomodate for mdoc(7).
          */           */
         enum texilist     list; /* current list (set recursively) */          enum texilist     list; /* current list (set recursively) */
         int               outmacro; /* if >0, output is in line macro */          int               outmacro; /* if >0, output is in line macro */
           size_t            outcol; /* column in output line */
         int               seenws; /* ws has been seen (and ignored) */          int               seenws; /* ws has been seen (and ignored) */
         int               seenvs; /* newline has been Pp'd */          int               seenvs; /* newline has been Pp'd */
         int               ign; /* if >0, don't print anything */          int               ign; /* if >0, don't print anything */
         int               literal; /* if >0, literal context */          int               literal; /* if >0, literal context */
           int               uppercase; /* if >0, uppercase */
 };  };
   
   #define BUF(_p) ((_p)->files[(_p)->filepos - 1].map)
   #define BUFSZ(_p) ((_p)->files[(_p)->filepos - 1].mapsz)
   
 #define isws(_x) \  #define isws(_x) \
         (' ' == (_x) || '\t' == (_x))          (' ' == (_x) || '\t' == (_x))
 #define ismspace(_x) \  #define ismspace(_x) \
Line 337  struct texi {
Line 460  struct texi {
   
 __BEGIN_DECLS  __BEGIN_DECLS
   
 void    advance(struct texi *, const char *, size_t *);  void    advance(struct texi *, size_t *);
 size_t  advanceeoln(struct texi *, const char *, size_t, size_t *, int);  size_t  advanceeoln(struct texi *, size_t *, int);
 void    advanceto(struct texi *, const char *, size_t *, size_t);  void    advanceto(struct texi *, size_t *, size_t);
   
 char  **argparse(struct texi *, const char *, size_t, size_t *, size_t *, size_t);  char  **argparse(struct texi *, size_t *, size_t *, size_t);
   
 int     parsearg(struct texi *, const char *, size_t, size_t *, size_t);  int     parsearg(struct texi *, size_t *, size_t);
 void    parsebracket(struct texi *, const char *, size_t, size_t *);  void    parsebracket(struct texi *, size_t *, int);
 void    parsestdin(struct texi *);  void    parsestdin(struct texi *);
 void    parsefile(struct texi *, const char *, int);  void    parsefile(struct texi *, const char *, int);
 int     parselinearg(struct texi *, const char *, size_t, size_t *);  int     parselinearg(struct texi *, size_t *);
 void    parseeof(struct texi *, const char *, size_t);  void    parseeoln(struct texi *, size_t *);
 void    parsemembuf(struct texi *, const char *, size_t);  void    parseto(struct texi *, size_t *, const char *);
 void    parseeoln(struct texi *, const char *, size_t, size_t *);  void    parsesingle(struct texi *, 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));                  __attribute__((noreturn));
 enum texicmd  enum texicmd
         texicmd(struct texi *, const char *, size_t, size_t,          texicmd(const struct texi *, size_t, size_t *, struct teximacro **);
                 size_t *, struct teximacro **);  enum texicmd
           peekcmd(const struct texi *, size_t);
   enum texicmd
           peeklinecmd(const struct texi *, size_t);
   ssize_t texicache(struct texi *, const char *, size_t);
 void    texierr(struct texi *, const char *, ...)  void    texierr(struct texi *, const char *, ...)
                 __attribute__((format(printf, 2, 3)))                  __attribute__((format(printf, 2, 3)))
                 __attribute__((noreturn));                  __attribute__((noreturn));
Line 367  void texifilepop(struct texi *);
Line 492  void texifilepop(struct texi *);
 void    teximacro(struct texi *, const char *);  void    teximacro(struct texi *, const char *);
 void    teximacroclose(struct texi *);  void    teximacroclose(struct texi *);
 void    teximacroopen(struct texi *, const char *);  void    teximacroopen(struct texi *, const char *);
 void    texipunctuate(struct texi *, const char *, size_t, size_t *);  void    teximdocopen(struct texi *, size_t *);
 void    texiputbuf(struct texi *p, const char *, size_t, size_t);  void    teximdocclose(struct texi *, int);
   void    texindex(struct texi *, const char *,
                   size_t, const char *, size_t);
   void    texindex_add(struct texi *, const char *, size_t);
   void    texipunctuate(struct texi *, size_t *);
   void    texiputbuf(struct texi *p, size_t, size_t);
 void    texiputchar(struct texi *p, char);  void    texiputchar(struct texi *p, char);
 void    texiputchars(struct texi *, const char *);  void    texiputchars(struct texi *, const char *);
 void    texivspace(struct texi *);  void    texivspace(struct texi *);
 void    texiwarn(const struct texi *, const char *, ...)  void    texiwarn(const struct texi *, const char *, ...)
                 __attribute__((format(printf, 2, 3)));                  __attribute__((format(printf, 2, 3)));
   void    texisplice(struct texi *, const char *, size_t, size_t);
   
 void    valueadd(struct texi *, char *, char *);  void    valueadd(struct texi *, char *, char *);
 const char *  const char *
         valueblookup(struct texi *, const char *, size_t, size_t *);          valueblookup(struct texi *, size_t *);
 void    valuelclear(struct texi *, const char *, size_t, size_t *);  void    valuelclear(struct texi *, size_t *);
 const char *  const char *
         valuellookup(struct texi *, const char *, size_t, size_t *);          valuellookup(struct texi *, size_t *);
   
 extern  const struct texitok *const texitoks;  extern  const struct texitok *const texitoks;
   

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.30

CVSweb