]> git.cameronkatri.com Git - mandoc.git/blobdiff - mdoc.h
Handle output encoding for unicode, numbered and named escape sequences
[mandoc.git] / mdoc.h
diff --git a/mdoc.h b/mdoc.h
index 9cee098e7fee570915d21f208a5fc7a6f9ce10a1..58ad81318f5e06037dfcf20f540249fed219370a 100644 (file)
--- a/mdoc.h
+++ b/mdoc.h
@@ -1,4 +1,4 @@
-/*     $Id: mdoc.h,v 1.122 2011/03/22 14:05:45 kristaps Exp $ */
+/*     $Id: mdoc.h,v 1.131 2014/07/29 13:58:18 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  *
@@ -140,6 +140,7 @@ enum        mdoct {
        MDOC_sp,
        MDOC__U,
        MDOC_Ta,
+       MDOC_ll,
        MDOC_MAX
 };
 
@@ -186,7 +187,7 @@ enum        mdoc_type {
        MDOC_ROOT
 };
 
-/* 
+/*
  * Section (named/unnamed) of `Sh'.   Note that these appear in the
  * conventional order imposed by mdoc.7.  In the case of SEC_NONE, no
  * section has been invoked (this shouldn't happen).  SEC_CUSTOM refers
@@ -198,6 +199,7 @@ enum        mdoc_sec {
        SEC_LIBRARY, /* LIBRARY */
        SEC_SYNOPSIS, /* SYNOPSIS */
        SEC_DESCRIPTION, /* DESCRIPTION */
+       SEC_CONTEXT, /* CONTEXT */
        SEC_IMPLEMENTATION, /* IMPLEMENTATION NOTES */
        SEC_RETURN_VALUES, /* RETURN VALUES */
        SEC_ENVIRONMENT,  /* ENVIRONMENT */
@@ -214,7 +216,7 @@ enum        mdoc_sec {
        SEC_CAVEATS, /* CAVEATS */
        SEC_BUGS, /* BUGS */
        SEC_SECURITY, /* SECURITY */
-       SEC_CUSTOM, 
+       SEC_CUSTOM,
        SEC__MAX
 };
 
@@ -228,11 +230,11 @@ struct    mdoc_meta {
        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 {
-       enum mdocargt     arg; /* type of argument */
+       enum mdocargt     arg; /* type of argument */
        int               line;
        int               pos;
        size_t            sz; /* elements in "value" */
@@ -244,7 +246,7 @@ struct      mdoc_argv {
  * blocks have multiple instances of the same arguments spread across
  * the HEAD, BODY, TAIL, and BLOCK node types.
  */
-struct         mdoc_arg {
+struct mdoc_arg {
        size_t            argc;
        struct mdoc_argv *argv;
        unsigned int      refcnt;
@@ -278,7 +280,7 @@ enum        mdoc_list {
 
 enum   mdoc_disp {
        DISP__NONE = 0,
-       DISP_centred, /* -centered */
+       DISP_centered, /* -centered */
        DISP_ragged, /* -ragged */
        DISP_unfilled, /* -unfilled */
        DISP_filled, /* -filled */
@@ -311,6 +313,7 @@ struct      mdoc_bl {
        int               comp; /* -compact */
        size_t            ncols; /* -column arg count */
        const char      **cols; /* -column val ptr */
+       int               count; /* -enum counter */
 };
 
 struct mdoc_bf {
@@ -331,15 +334,16 @@ struct    mdoc_rs {
  * provided, etc.
  */
 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_node *Es;
        struct mdoc_rs    Rs;
 };
 
-/* 
- * Single node in tree-linked AST. 
+/*
+ * Single node in tree-linked AST.
  */
 struct mdoc_node {
        struct mdoc_node *parent; /* parent AST node */
@@ -350,6 +354,7 @@ struct      mdoc_node {
        int               nchild; /* number children */
        int               line; /* parse line */
        int               pos; /* parse column */
+       int               lastline; /* the node ends on this line */
        enum mdoct        tok; /* tok or MDOC__MAX if none */
        int               flags;
 #define        MDOC_VALID       (1 << 0) /* has been validated */
@@ -362,6 +367,7 @@ struct      mdoc_node {
        enum mdoc_type    type; /* AST node type */
        enum mdoc_sec     sec; /* current named section */
        union mdoc_data  *norm; /* normalised args */
+       const void       *prev_font; /* before entering this node */
        /* FIXME: these can be union'd to shave a few bytes. */
        struct mdoc_arg  *args; /* BLOCK/ELEM */
        struct mdoc_node *pending; /* BLOCK */
@@ -386,6 +392,7 @@ struct      mdoc;
 
 const struct mdoc_node *mdoc_node(const struct mdoc *);
 const struct mdoc_meta *mdoc_meta(const struct mdoc *);
+void mdoc_deroff(char **, const struct mdoc_node *);
 
 __END_DECLS