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

Diff for /mandoc/mdoc.h between version 1.1 and 1.28

version 1.1, 2008/12/15 01:54:58 version 1.28, 2009/01/20 13:44:05
Line 19 
Line 19 
 #ifndef MDOC_H  #ifndef MDOC_H
 #define MDOC_H  #define MDOC_H
   
 #define MDOC_LINEARG_MAX 9  /* What follows is a list of ALL possible macros. */
   
 #define MDOC___          0  #define MDOC___          0
 #define MDOC_Dd          1  #define MDOC_Dd          1
Line 129 
Line 129 
 #define MDOC_Ud          105  #define MDOC_Ud          105
 #define MDOC_MAX         106  #define MDOC_MAX         106
   
   /* What follows is a list of ALL possible macro arguments. */
   
 #define MDOC_Split       0  #define MDOC_Split       0
 #define MDOC_Nosplit     1  #define MDOC_Nosplit     1
 #define MDOC_Ragged      2  #define MDOC_Ragged      2
Line 189 
Line 191 
 #define MDOC_svid4       57  #define MDOC_svid4       57
 #define MDOC_Filled      58  #define MDOC_Filled      58
 #define MDOC_Words       59  #define MDOC_Words       59
 #define MDOC_ARG_MAX     60  #define MDOC_Emphasis    60
   #define MDOC_Symbolic    61
   #define MDOC_ARG_MAX     62
   
 enum    mdoc_err {  enum    mdoc_warn {
         ERR_SYNTAX_QUOTE,          WARN_SYNTAX,            /* Syntax warn (at line/col). */
         ERR_SYNTAX_WS,          WARN_COMPAT             /* Groff compat warn (at line/col). */
         ERR_MACRO_NOTSUP,  
         ERR_MACRO_NOTCALL,  
         ERR_SCOPE_BREAK,  
         ERR_ARGS_GE1  
 };  };
   
 enum    mdoc_warn {  /* Possible values for the `At' macro. */
         WARN_SYNTAX_WS_EOLN,  enum    mdoc_att {
         WARN_SYNTAX_MACLIKE,          ATT_DEFAULT = 0,
         WARN_ARGS_GE1          ATT_v1,
           ATT_v2,
           ATT_v3,
           ATT_v4,
           ATT_v5,
           ATT_v6,
           ATT_v7,
           ATT_32v,
           ATT_V1,
           ATT_V2,
           ATT_V3,
           ATT_V4
 };  };
   
   /* An argument to a macro (multiple values = `It -column'). */
 struct  mdoc_arg {  struct  mdoc_arg {
         int               arg;          int               arg;
           int               line;
           int               pos;
         size_t            sz;          size_t            sz;
         char            **value;          char            **value;
 };  };
   
   /*
    * Simplified grammar of syntax tree:
    *
    * MDOC_ROOT: root of tree
    * MDOC_TEXT: free-form text
    * MDOC_ELEM: elem [args] MDOC_TEXT...
    * MDOC_BLOCK, MDOC_HEAD, MDOC_BODY, MDOC_TAIL:
    *   MDOC_BLOCK:
    *     MDOC_HEAD [args] (MDOC_TEXT|MDOC_ELEM|MDOC_BLOCK)...
    *     MDOC_BODY (MDOC_TEXT|MDOC_ELEM|MDOC_BLOCK)...
    *     MDOC_TAIL (optional) (MDOC_TEXT|MDOC_ELEM|MDOC_BLOCK)...
    */
   
   /* Type of a syntax node. */
 enum    mdoc_type {  enum    mdoc_type {
         MDOC_TEXT,          MDOC_TEXT,
         MDOC_ELEM,          MDOC_ELEM,
         MDOC_HEAD,          MDOC_HEAD,
           MDOC_TAIL,
         MDOC_BODY,          MDOC_BODY,
         MDOC_BLOCK          MDOC_BLOCK,
           MDOC_ROOT
 };  };
   
   /* Manual section. */
   enum    mdoc_msec {
           MSEC_DEFAULT = 0,
           MSEC_1,
           MSEC_2,
           MSEC_3,
           MSEC_3f,
           MSEC_3p,
           MSEC_4,
           MSEC_5,
           MSEC_6,
           MSEC_7,
           MSEC_8,
           MSEC_9,
           MSEC_X11,
           MSEC_X11R6,
           MSEC_local,
           MSEC_n,
           MSEC_unass,
           MSEC_draft,
           MSEC_paper
   };
   
   /* Section (named/unnamed) of `Ss'. */
   enum    mdoc_sec {
           SEC_PROLOGUE = 0,
           SEC_BODY,
           SEC_NAME,
           SEC_SYNOPSIS,
           SEC_DESCRIPTION,
           SEC_RETURN_VALUES,
           SEC_ENVIRONMENT,
           SEC_FILES,
           SEC_EXAMPLES,
           SEC_DIAGNOSTICS,
           SEC_ERRORS,
           SEC_SEE_ALSO,
           SEC_STANDARDS,
           SEC_HISTORY,
           SEC_AUTHORS,
           SEC_CAVEATS,
           SEC_BUGS,
           SEC_CUSTOM
   };
   
   /* Volume of `Dt'. */
   enum    mdoc_vol {
           VOL_DEFAULT = 0,
           VOL_AMD,
           VOL_IND,
           VOL_KM,
           VOL_LOCAL,
           VOL_PRM,
           VOL_PS1,
           VOL_SMM,
           VOL_URM,
           VOL_USD
   };
   
   /* Architecture of `Dt'. */
   enum    mdoc_arch {
           ARCH_DEFAULT = 0,
           ARCH_alpha,
           ARCH_amd64,
           ARCH_amiga,
           ARCH_arc,
           ARCH_arm,
           ARCH_armish,
           ARCH_aviion,
           ARCH_hp300,
           ARCH_hppa,
           ARCH_hppa64,
           ARCH_i386,
           ARCH_landisk,
           ARCH_luna88k,
           ARCH_mac68k,
           ARCH_macppc,
           ARCH_mvme68k,
           ARCH_mvme88k,
           ARCH_mvmeppc,
           ARCH_pmax,
           ARCH_sgi,
           ARCH_socppc,
           ARCH_sparc,
           ARCH_sparc64,
           ARCH_sun3,
           ARCH_vax,
           ARCH_zaurus
   };
   
   /* Meta-information from prologue. */
   struct  mdoc_meta {
           enum mdoc_msec    msec;
           enum mdoc_vol     vol;
           enum mdoc_arch    arch;
           time_t            date;
           char             *title;
           char             *os;
           char             *name;
   };
   
 struct  mdoc_text {  struct  mdoc_text {
         char             *string;          char             *string;
 };  };
   
 struct  mdoc_block {  struct  mdoc_block {
         int               tok;  
         size_t            argc;          size_t            argc;
         struct mdoc_arg  *argv;          struct mdoc_arg  *argv;
           struct mdoc_node *head;
           struct mdoc_node *body;
           struct mdoc_node *tail;
 };  };
   
 struct  mdoc_head {  
         size_t            sz;  
         char            **args;  
         int               tok;  
 };  
   
 struct  mdoc_body {  
         int               tok;  
 };  
   
 struct  mdoc_elem {  struct  mdoc_elem {
         size_t            sz;          size_t            sz;
         char            **args;          char            **args;
         int               tok;  
         size_t            argc;          size_t            argc;
         struct mdoc_arg  *argv;          struct mdoc_arg  *argv;
 };  };
Line 251  struct mdoc_elem {
Line 373  struct mdoc_elem {
 union   mdoc_data {  union   mdoc_data {
         struct mdoc_text  text;          struct mdoc_text  text;
         struct mdoc_elem  elem;          struct mdoc_elem  elem;
         struct mdoc_body  body;  
         struct mdoc_head  head;  
         struct mdoc_block block;          struct mdoc_block block;
 };  };
   
   /* Syntax node in parse tree. */
 struct  mdoc_node {  struct  mdoc_node {
         struct mdoc_node *parent;          struct mdoc_node *parent;
         struct mdoc_node *child;          struct mdoc_node *child;
         struct mdoc_node *next;          struct mdoc_node *next;
           struct mdoc_node *prev;
           int               line;
           int               pos;
           int               tok;
           int               flags;
   #define MDOC_VALID       (1 << 0)
   #define MDOC_ACTED       (1 << 1)
         enum mdoc_type    type;          enum mdoc_type    type;
         union mdoc_data   data;          union mdoc_data   data;
           /* FIXME: have an enum mdoc_sec. */
 };  };
   
   /* Call-backs for parse messages. */
 struct  mdoc_cb {  struct  mdoc_cb {
         int     (*mdoc_err)(void *, int, int, enum mdoc_err);          void    (*mdoc_msg)(void *, int, int, const char *);
         int     (*mdoc_warn)(void *, int, int, enum mdoc_warn);          int     (*mdoc_err)(void *, int, int, const char *);
         void    (*mdoc_msg)(void *, int, const char *);          int     (*mdoc_warn)(void *, int, int,
                           enum mdoc_warn, const char *);
 };  };
   
 extern  const char *const *mdoc_macronames;  extern  const char *const *mdoc_macronames;
Line 277  __BEGIN_DECLS
Line 408  __BEGIN_DECLS
   
 struct  mdoc;  struct  mdoc;
   
   /* Free memory allocated with mdoc_alloc. */
 void              mdoc_free(struct mdoc *);  void              mdoc_free(struct mdoc *);
   
   /* Allocate a new parser instance. */
 struct  mdoc     *mdoc_alloc(void *data, const struct mdoc_cb *);  struct  mdoc     *mdoc_alloc(void *data, const struct mdoc_cb *);
 int               mdoc_parseln(struct mdoc *, char *buf);  
   
 const struct mdoc_node  /* Parse a single line (boolean retval). */
                  *mdoc_result(struct mdoc *);  int               mdoc_parseln(struct mdoc *, int, char *buf);
   
   /* Get result first node. */
   const struct mdoc_node *mdoc_node(struct mdoc *);
   
   /* Get result meta-information. */
   const struct mdoc_meta *mdoc_meta(struct mdoc *);
   
   /* Signal end of parse sequence (boolean retval). */
   int               mdoc_endparse(struct mdoc *);
   
 __END_DECLS  __END_DECLS
   

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.28

CVSweb