]> git.cameronkatri.com Git - mandoc.git/blobdiff - mdoc.h
Refactoring in preparation for .rm support:
[mandoc.git] / mdoc.h
diff --git a/mdoc.h b/mdoc.h
index 675e8dab5ddc626a4fcae9ee8cba35974235c902..9c22c3364099b135535f8a91ebde7528aece03f1 100644 (file)
--- a/mdoc.h
+++ b/mdoc.h
@@ -1,4 +1,4 @@
-/*     $Id: mdoc.h,v 1.107 2010/12/15 23:39:40 kristaps Exp $ */
+/*     $Id: mdoc.h,v 1.114 2011/01/01 12:18:37 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
  *
@@ -190,6 +190,7 @@ enum        mdoc_type {
        MDOC_TAIL,
        MDOC_BODY,
        MDOC_BLOCK,
+       MDOC_TBL,
        MDOC_ROOT
 };
 
@@ -353,16 +354,21 @@ struct    mdoc_an {
        enum mdoc_auth    auth; /* -split, etc. */
 };
 
+struct mdoc_rs {
+       struct mdoc_node *child_J; /* pointer to %J */
+};
+
 /*
  * Consists of normalised node arguments.  These should be used instead
  * of iterating through the mdoc_arg pointers of a node: defaults are
  * provided, etc.
  */
-union mdoc_data {
+union  mdoc_data {
        struct mdoc_an    An;
-       struct mdoc_bd   *Bd;
-       struct mdoc_bf   *Bf;
-       struct mdoc_bl   *Bl;
+       struct mdoc_bd    Bd;
+       struct mdoc_bf    Bf;
+       struct mdoc_bl    Bl;
+       struct mdoc_rs    Rs;
 };
 
 /* 
@@ -380,13 +386,13 @@ struct    mdoc_node {
        enum mdoct        tok; /* tok or MDOC__MAX if none */
        int               flags;
 #define        MDOC_VALID       (1 << 0) /* has been validated */
-#define        MDOC_ACTED       (1 << 1) /* has been acted upon */
 #define        MDOC_EOS         (1 << 2) /* at sentence boundary */
 #define        MDOC_LINE        (1 << 3) /* first macro/text on line */
 #define        MDOC_SYNPRETTY   (1 << 4) /* SYNOPSIS-style formatting */
 #define        MDOC_ENDED       (1 << 5) /* rendering has been ended */
        enum mdoc_type    type; /* AST node type */
        enum mdoc_sec     sec; /* current named section */
+       union mdoc_data  *norm; /* normalised args */
        /* FIXME: these can be union'd to shave a few bytes. */
        struct mdoc_arg  *args; /* BLOCK/ELEM */
        struct mdoc_node *pending; /* BLOCK */
@@ -394,8 +400,8 @@ struct      mdoc_node {
        struct mdoc_node *body; /* BLOCK */
        struct mdoc_node *tail; /* BLOCK */
        char             *string; /* TEXT */
+       const struct tbl_span *span; /* TBL */
        enum mdoc_endbody end; /* BODY */
-       union mdoc_data   data;
 };
 
 /*
@@ -422,6 +428,8 @@ int           mdoc_parseln(struct mdoc *, int, char *, int);
 const struct mdoc_node *mdoc_node(const struct mdoc *);
 const struct mdoc_meta *mdoc_meta(const struct mdoc *);
 int              mdoc_endparse(struct mdoc *);
+int              mdoc_addspan(struct mdoc *,
+                       const struct tbl_span *);
 
 __END_DECLS