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

Diff for /mandoc/libmdoc.h between version 1.35 and 1.63

version 1.35, 2010/05/07 05:34:56 version 1.63, 2010/11/30 13:04:14
Line 1 
Line 1 
 /*      $Id$ */  /*      $Id$ */
 /*  /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>   * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
  *   *
  * Permission to use, copy, modify, and distribute this software for any   * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above   * purpose with or without fee is hereby granted, provided that the above
Line 25  enum mdoc_next {
Line 25  enum mdoc_next {
 };  };
   
 struct  mdoc {  struct  mdoc {
         void             *data;          void             *data; /* private application data */
         struct mdoc_cb    cb;          mandocmsg         msg; /* message callback */
         int               flags;          int               flags;
 #define MDOC_HALT        (1 << 0)       /* Error in parse. Halt. */  #define MDOC_HALT        (1 << 0) /* error in parse: halt */
 #define MDOC_LITERAL     (1 << 1)       /* In a literal scope. */  #define MDOC_LITERAL     (1 << 1) /* in a literal scope */
 #define MDOC_PBODY       (1 << 2)       /* In the document body. */  #define MDOC_PBODY       (1 << 2) /* in the document body */
         int               pflags;  #define MDOC_NEWLINE     (1 << 3) /* first macro/text in a line */
         enum mdoc_next    next;  #define MDOC_PHRASELIT   (1 << 4) /* literal within a partila phrase */
         struct mdoc_node *last;  #define MDOC_PPHRASE     (1 << 5) /* within a partial phrase */
         struct mdoc_node *first;  #define MDOC_FREECOL     (1 << 6) /* `It' invocation should close */
         struct mdoc_meta  meta;  #define MDOC_SYNOPSIS    (1 << 7) /* SYNOPSIS-style formatting */
           enum mdoc_next    next; /* where to put the next node */
           struct mdoc_node *last; /* the last node parsed */
           struct mdoc_node *first; /* the first node parsed */
           struct mdoc_meta  meta; /* document meta-data */
         enum mdoc_sec     lastnamed;          enum mdoc_sec     lastnamed;
         enum mdoc_sec     lastsec;          enum mdoc_sec     lastsec;
           struct regset    *regs; /* registers */
 };  };
   
 enum    merr {  #define MACRO_PROT_ARGS struct mdoc *m, \
         ETAILWS = 0,                          enum mdoct tok, \
         EQUOTPARM,                          int line, \
         EQUOTTERM,                          int ppos, \
         EARGVAL,                          int *pos, \
         EBODYPROL,                          char *buf
         EPROLBODY,  
         ETEXTPROL,  
         ENOBLANK,  
         ETOOLONG,  
         EESCAPE,  
         EPRINT,  
         ENODAT,  
         ENOPROLOGUE,  
         ELINE,  
         EATT,  
         ENAME,  
         ELISTTYPE,  
         EDISPTYPE,  
         EMULTIDISP,  
         EMULTILIST,  
         ESECNAME,  
         ENAMESECINC,  
         EARGREP,  
         EBOOL,  
         ECOLMIS,  
         ENESTDISP,  
         EMISSWIDTH,  
         EWRONGMSEC,  
         ESECOOO,  
         ESECREP,  
         EBADSTAND,  
         ENOMULTILINE,  
         EMULTILINE,  
         ENOLINE,  
         EPROLOOO,  
         EPROLREP,  
         EBADMSEC,  
         EBADSEC,  
         EFONT,  
         EBADDATE,  
         ENUMFMT,  
         ENOWIDTH,  
         EUTSNAME,  
         EOBS,  
         EIMPBRK,  
         EIGNE,  
         EOPEN,  
         EQUOTPHR,  
         ENOCTX,  
         ELIB,  
         EBADCHILD,  
         ENOTYPE,  
         EBADCOMMENT,  
         MERRMAX  
 };  
   
 #define MACRO_PROT_ARGS struct mdoc *m, enum mdoct tok, \  
                         int line, int ppos, int *pos, char *buf  
   
 struct  mdoc_macro {  struct  mdoc_macro {
         int             (*fp)(MACRO_PROT_ARGS);          int             (*fp)(MACRO_PROT_ARGS);
         int               flags;          int               flags;
Line 111  struct mdoc_macro {
Line 63  struct mdoc_macro {
         /* Reserved words in arguments treated as text. */          /* Reserved words in arguments treated as text. */
 };  };
   
 enum    margerr {  enum    margserr {
         ARGS_ERROR,          ARGS_ERROR,
         ARGS_EOLN,          ARGS_EOLN,
         ARGS_WORD,          ARGS_WORD,
         ARGS_PUNCT,          ARGS_PUNCT,
         ARGS_QWORD,          ARGS_QWORD,
         ARGS_PHRASE          ARGS_PHRASE,
           ARGS_PPHRASE,
           ARGS_PEND
 };  };
   
   enum    margverr {
           ARGV_ERROR,
           ARGV_EOLN,
           ARGV_ARG,
           ARGV_WORD
   };
   
   enum    mdelim {
           DELIM_NONE = 0,
           DELIM_OPEN,
           DELIM_MIDDLE,
           DELIM_CLOSE
   };
   
 extern  const struct mdoc_macro *const mdoc_macros;  extern  const struct mdoc_macro *const mdoc_macros;
   
 __BEGIN_DECLS  __BEGIN_DECLS
   
 #define           mdoc_perr(m, l, p, t) \  #define           mdoc_pmsg(m, l, p, t) \
                   mdoc_err((m), (l), (p), 1, (t))                    (*(m)->msg)((t), (m)->data, (l), (p), NULL)
 #define           mdoc_pwarn(m, l, p, t) \  #define           mdoc_nmsg(m, n, t) \
                   mdoc_err((m), (l), (p), 0, (t))                    (*(m)->msg)((t), (m)->data, (n)->line, (n)->pos, NULL)
 #define           mdoc_nerr(m, n, t) \  int               mdoc_vmsg(struct mdoc *, enum mandocerr,
                   mdoc_err((m), (n)->line, (n)->pos, 1, (t))                          int, int, const char *, ...);
 #define           mdoc_nwarn(m, n, t) \  
                   mdoc_err((m), (n)->line, (n)->pos, 0, (t))  
   
 int               mdoc_err(struct mdoc *, int, int, int, enum merr);  
 int               mdoc_verr(struct mdoc *, int, int, const char *, ...);  
 int               mdoc_vwarn(struct mdoc *, int, int, const char *, ...);  
   
 int               mdoc_macro(MACRO_PROT_ARGS);  int               mdoc_macro(MACRO_PROT_ARGS);
 int               mdoc_word_alloc(struct mdoc *,  int               mdoc_word_alloc(struct mdoc *,
                         int, int, const char *);                          int, int, const char *);
Line 147  int    mdoc_block_alloc(struct mdoc *, int, int, 
Line 108  int    mdoc_block_alloc(struct mdoc *, int, int, 
 int               mdoc_head_alloc(struct mdoc *, int, int, enum mdoct);  int               mdoc_head_alloc(struct mdoc *, int, int, enum mdoct);
 int               mdoc_tail_alloc(struct mdoc *, int, int, enum mdoct);  int               mdoc_tail_alloc(struct mdoc *, int, int, enum mdoct);
 int               mdoc_body_alloc(struct mdoc *, int, int, enum mdoct);  int               mdoc_body_alloc(struct mdoc *, int, int, enum mdoct);
   int               mdoc_endbody_alloc(struct mdoc *m, int line, int pos,
                           enum mdoct tok, struct mdoc_node *body,
                           enum mdoc_endbody end);
 void              mdoc_node_delete(struct mdoc *, struct mdoc_node *);  void              mdoc_node_delete(struct mdoc *, struct mdoc_node *);
 void              mdoc_hash_init(void);  void              mdoc_hash_init(void);
 enum mdoct        mdoc_hash_find(const char *);  enum mdoct        mdoc_hash_find(const char *);
 int               mdoc_iscdelim(char);  enum mdelim       mdoc_iscdelim(char);
 int               mdoc_isdelim(const char *);  enum mdelim       mdoc_isdelim(const char *);
 size_t            mdoc_isescape(const char *);  size_t            mdoc_isescape(const char *);
 enum    mdoc_sec  mdoc_atosec(const char *);  enum    mdoc_sec  mdoc_str2sec(const char *);
 time_t            mdoc_atotime(const char *);  time_t            mdoc_atotime(const char *);
   size_t            mdoc_macro2len(enum mdoct);
 size_t            mdoc_macro2len(int);  
 const char       *mdoc_a2att(const char *);  const char       *mdoc_a2att(const char *);
 const char       *mdoc_a2lib(const char *);  const char       *mdoc_a2lib(const char *);
 const char       *mdoc_a2st(const char *);  const char       *mdoc_a2st(const char *);
 const char       *mdoc_a2arch(const char *);  const char       *mdoc_a2arch(const char *);
 const char       *mdoc_a2vol(const char *);  const char       *mdoc_a2vol(const char *);
 const char       *mdoc_a2msec(const char *);  const char       *mdoc_a2msec(const char *);
 int               mdoc_valid_pre(struct mdoc *,  int               mdoc_valid_pre(struct mdoc *, struct mdoc_node *);
                         const struct mdoc_node *);  
 int               mdoc_valid_post(struct mdoc *);  int               mdoc_valid_post(struct mdoc *);
 int               mdoc_action_pre(struct mdoc *,  enum margverr     mdoc_argv(struct mdoc *, int, enum mdoct,
                         const struct mdoc_node *);  
 int               mdoc_action_post(struct mdoc *);  
 int               mdoc_argv(struct mdoc *, int, enum mdoct,  
                         struct mdoc_arg **, int *, char *);                          struct mdoc_arg **, int *, char *);
 #define ARGV_ERROR      (-1)  
 #define ARGV_EOLN       (0)  
 #define ARGV_ARG        (1)  
 #define ARGV_WORD       (2)  
 void              mdoc_argv_free(struct mdoc_arg *);  void              mdoc_argv_free(struct mdoc_arg *);
 void              mdoc_argn_free(struct mdoc_arg *, int);  void              mdoc_argn_free(struct mdoc_arg *, int);
 enum margerr      mdoc_args(struct mdoc *, int,  enum margserr     mdoc_args(struct mdoc *, int,
                         int *, char *, enum mdoct, char **);                          int *, char *, enum mdoct, char **);
 enum margerr      mdoc_zargs(struct mdoc *, int,  enum margserr     mdoc_zargs(struct mdoc *, int,
                         int *, char *, int, char **);                          int *, char *, int, char **);
 #define ARGS_DELIM      (1 << 1)        /* See args(). */  #define ARGS_DELIM      (1 << 1)
 #define ARGS_TABSEP     (1 << 2)        /* See args(). */  #define ARGS_TABSEP     (1 << 2)
 #define ARGS_NOWARN     (1 << 3)        /* See args(). */  #define ARGS_NOWARN     (1 << 3)
   
 int               mdoc_macroend(struct mdoc *);  int               mdoc_macroend(struct mdoc *);
   

Legend:
Removed from v.1.35  
changed lines
  Added in v.1.63

CVSweb