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

Diff for /mandoc/mdoc.h between version 1.128 and 1.137

version 1.128, 2014/03/31 01:05:32 version 1.137, 2015/04/02 21:36:50
Line 1 
Line 1 
 /*      $Id$ */  /*      $Id$ */
 /*  /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
    * Copyright (c) 2014, 2015 Ingo Schwarze <schwarze@openbsd.org>
  *   *
  * 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
  * copyright notice and this permission notice appear in all copies.   * copyright notice and this permission notice appear in all copies.
  *   *
  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES
  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */   */
 #ifndef MDOC_H  
 #define MDOC_H  
   
 enum    mdoct {  enum    mdoct {
         MDOC_Ap = 0,          MDOC_Ap = 0,
Line 175  enum mdocargt {
Line 174  enum mdocargt {
         MDOC_ARG_MAX          MDOC_ARG_MAX
 };  };
   
 enum    mdoc_type {  /*
         MDOC_TEXT,  
         MDOC_ELEM,  
         MDOC_HEAD,  
         MDOC_TAIL,  
         MDOC_BODY,  
         MDOC_BLOCK,  
         MDOC_TBL,  
         MDOC_EQN,  
         MDOC_ROOT  
 };  
   
 /*  
  * Section (named/unnamed) of `Sh'.   Note that these appear in the   * Section (named/unnamed) of `Sh'.   Note that these appear in the
  * conventional order imposed by mdoc.7.  In the case of SEC_NONE, no   * conventional order imposed by mdoc.7.  In the case of SEC_NONE, no
  * section has been invoked (this shouldn't happen).  SEC_CUSTOM refers   * section has been invoked (this shouldn't happen).  SEC_CUSTOM refers
Line 216  enum mdoc_sec {
Line 203  enum mdoc_sec {
         SEC_CAVEATS, /* CAVEATS */          SEC_CAVEATS, /* CAVEATS */
         SEC_BUGS, /* BUGS */          SEC_BUGS, /* BUGS */
         SEC_SECURITY, /* SECURITY */          SEC_SECURITY, /* SECURITY */
         SEC_CUSTOM,          SEC_CUSTOM,
         SEC__MAX          SEC__MAX
 };  };
   
Line 230  struct mdoc_meta {
Line 217  struct mdoc_meta {
         char             *name; /* leading `Nm' name */          char             *name; /* leading `Nm' name */
 };  };
   
 /*  /*
  * An argument to a macro (multiple values = `-column xxx yyy').   * An argument to a macro (multiple values = `-column xxx yyy').
  */   */
 struct  mdoc_argv {  struct  mdoc_argv {
         enum mdocargt     arg; /* type of argument */          enum mdocargt     arg; /* type of argument */
         int               line;          int               line;
         int               pos;          int               pos;
         size_t            sz; /* elements in "value" */          size_t            sz; /* elements in "value" */
Line 246  struct mdoc_argv {
Line 233  struct mdoc_argv {
  * blocks have multiple instances of the same arguments spread across   * blocks have multiple instances of the same arguments spread across
  * the HEAD, BODY, TAIL, and BLOCK node types.   * the HEAD, BODY, TAIL, and BLOCK node types.
  */   */
 struct  mdoc_arg {  struct  mdoc_arg {
         size_t            argc;          size_t            argc;
         struct mdoc_argv *argv;          struct mdoc_argv *argv;
         unsigned int      refcnt;          unsigned int      refcnt;
Line 280  enum mdoc_list {
Line 267  enum mdoc_list {
   
 enum    mdoc_disp {  enum    mdoc_disp {
         DISP__NONE = 0,          DISP__NONE = 0,
         DISP_centred, /* -centered */          DISP_centered, /* -centered */
         DISP_ragged, /* -ragged */          DISP_ragged, /* -ragged */
         DISP_unfilled, /* -unfilled */          DISP_unfilled, /* -unfilled */
         DISP_filled, /* -filled */          DISP_filled, /* -filled */
Line 334  struct mdoc_rs {
Line 321  struct mdoc_rs {
  * provided, etc.   * provided, etc.
  */   */
 union   mdoc_data {  union   mdoc_data {
         struct mdoc_an    An;          struct mdoc_an    An;
         struct mdoc_bd    Bd;          struct mdoc_bd    Bd;
         struct mdoc_bf    Bf;          struct mdoc_bf    Bf;
         struct mdoc_bl    Bl;          struct mdoc_bl    Bl;
           struct mdoc_node *Es;
         struct mdoc_rs    Rs;          struct mdoc_rs    Rs;
 };  };
   
 /*  /*
  * Single node in tree-linked AST.   * Single node in tree-linked AST.
  */   */
 struct  mdoc_node {  struct  mdoc_node {
         struct mdoc_node *parent; /* parent AST node */          struct mdoc_node *parent; /* parent AST node */
Line 353  struct mdoc_node {
Line 341  struct mdoc_node {
         int               nchild; /* number children */          int               nchild; /* number children */
         int               line; /* parse line */          int               line; /* parse line */
         int               pos; /* parse column */          int               pos; /* parse column */
         int               lastline; /* the node ends on this line */  
         enum mdoct        tok; /* tok or MDOC__MAX if none */          enum mdoct        tok; /* tok or MDOC__MAX if none */
         int               flags;          int               flags;
 #define MDOC_VALID       (1 << 0) /* has been validated */  #define MDOC_VALID       (1 << 0) /* has been validated */
   #define MDOC_ENDED       (1 << 1) /* gone past body end mark */
 #define MDOC_EOS         (1 << 2) /* at sentence boundary */  #define MDOC_EOS         (1 << 2) /* at sentence boundary */
 #define MDOC_LINE        (1 << 3) /* first macro/text on line */  #define MDOC_LINE        (1 << 3) /* first macro/text on line */
 #define MDOC_SYNPRETTY   (1 << 4) /* SYNOPSIS-style formatting */  #define MDOC_SYNPRETTY   (1 << 4) /* SYNOPSIS-style formatting */
 #define MDOC_ENDED       (1 << 5) /* rendering has been ended */  #define MDOC_BROKEN      (1 << 5) /* must validate parent when ending */
 #define MDOC_DELIMO      (1 << 6)  #define MDOC_DELIMO      (1 << 6)
 #define MDOC_DELIMC      (1 << 7)  #define MDOC_DELIMC      (1 << 7)
         enum mdoc_type    type; /* AST node type */          enum roff_type    type; /* AST node type */
         enum mdoc_sec     sec; /* current named section */          enum mdoc_sec     sec; /* current named section */
         union mdoc_data  *norm; /* normalised args */          union mdoc_data  *norm; /* normalised args */
         const void       *prev_font; /* before entering this node */          int               prev_font; /* before entering this node */
         /* FIXME: these can be union'd to shave a few bytes. */          /* FIXME: these can be union'd to shave a few bytes. */
         struct mdoc_arg  *args; /* BLOCK/ELEM */          struct mdoc_arg  *args; /* BLOCK/ELEM */
         struct mdoc_node *pending; /* BLOCK */  
         struct mdoc_node *head; /* BLOCK */          struct mdoc_node *head; /* BLOCK */
         struct mdoc_node *body; /* BLOCK */          struct mdoc_node *body; /* BLOCK/ENDBODY */
         struct mdoc_node *tail; /* BLOCK */          struct mdoc_node *tail; /* BLOCK */
         char             *string; /* TEXT */          char             *string; /* TEXT */
         const struct tbl_span *span; /* TBL */          const struct tbl_span *span; /* TBL */
Line 394  const struct mdoc_meta *mdoc_meta(const struct mdoc *)
Line 381  const struct mdoc_meta *mdoc_meta(const struct mdoc *)
 void mdoc_deroff(char **, const struct mdoc_node *);  void mdoc_deroff(char **, const struct mdoc_node *);
   
 __END_DECLS  __END_DECLS
   
 #endif /*!MDOC_H*/  

Legend:
Removed from v.1.128  
changed lines
  Added in v.1.137

CVSweb