]> git.cameronkatri.com Git - mandoc.git/blobdiff - mdoc.h
Plug in the "head" concept for tables. A tbl_head specifies the full
[mandoc.git] / mdoc.h
diff --git a/mdoc.h b/mdoc.h
index 252cfdd1cfc2904ffc278e51aaf81a6b2ac4b99c..9c22c3364099b135535f8a91ebde7528aece03f1 100644 (file)
--- a/mdoc.h
+++ b/mdoc.h
@@ -1,4 +1,4 @@
-/*     $Id: mdoc.h,v 1.105 2010/10/04 07:01:02 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>
  *
 /*
  * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
  *
@@ -190,6 +190,7 @@ enum        mdoc_type {
        MDOC_TAIL,
        MDOC_BODY,
        MDOC_BLOCK,
        MDOC_TAIL,
        MDOC_BODY,
        MDOC_BLOCK,
+       MDOC_TBL,
        MDOC_ROOT
 };
 
        MDOC_ROOT
 };
 
@@ -283,7 +284,8 @@ enum        mdoc_list {
        LIST_inset,
        LIST_item,
        LIST_ohang,
        LIST_inset,
        LIST_item,
        LIST_ohang,
-       LIST_tag
+       LIST_tag,
+       LIST_MAX
 };
 
 /*
 };
 
 /*
@@ -352,16 +354,21 @@ struct    mdoc_an {
        enum mdoc_auth    auth; /* -split, etc. */
 };
 
        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.
  */
 /*
  * 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_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;
 };
 
 /* 
 };
 
 /* 
@@ -370,6 +377,7 @@ union mdoc_data {
 struct mdoc_node {
        struct mdoc_node *parent; /* parent AST node */
        struct mdoc_node *child; /* first child AST node */
 struct mdoc_node {
        struct mdoc_node *parent; /* parent AST node */
        struct mdoc_node *child; /* first child AST node */
+       struct mdoc_node *last; /* last child AST node */
        struct mdoc_node *next; /* sibling AST node */
        struct mdoc_node *prev; /* prior sibling AST node */
        int               nchild; /* number children */
        struct mdoc_node *next; /* sibling AST node */
        struct mdoc_node *prev; /* prior sibling AST node */
        int               nchild; /* number children */
@@ -378,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 */
        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 */
 #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 */
        /* FIXME: these can be union'd to shave a few bytes. */
        struct mdoc_arg  *args; /* BLOCK/ELEM */
        struct mdoc_node *pending; /* BLOCK */
@@ -392,8 +400,8 @@ struct      mdoc_node {
        struct mdoc_node *body; /* BLOCK */
        struct mdoc_node *tail; /* BLOCK */
        char             *string; /* TEXT */
        struct mdoc_node *body; /* BLOCK */
        struct mdoc_node *tail; /* BLOCK */
        char             *string; /* TEXT */
+       const struct tbl_span *span; /* TBL */
        enum mdoc_endbody end; /* BODY */
        enum mdoc_endbody end; /* BODY */
-       union mdoc_data   data;
 };
 
 /*
 };
 
 /*
@@ -420,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 *);
 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
 
 
 __END_DECLS