]> git.cameronkatri.com Git - mandoc.git/blobdiff - term.h
Considerably cleaned up list handling.
[mandoc.git] / term.h
diff --git a/term.h b/term.h
index c51ee48d6bc574e3f00153fc5c40301da3263e7c..32f5f5f7e83e08122b402ac0da8aa25769f4a9b4 100644 (file)
--- a/term.h
+++ b/term.h
@@ -1,4 +1,4 @@
-/* $Id: term.h,v 1.6 2009/02/25 12:09:20 kristaps Exp $ */
+/* $Id: term.h,v 1.17 2009/03/04 13:57:35 kristaps Exp $ */
 /*
  * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
  *
 /*
  * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
  *
 
 #include "mdoc.h"
 
 
 #include "mdoc.h"
 
+#define        INDENT            6
+
 __BEGIN_DECLS
 
 __BEGIN_DECLS
 
+enum   tsym {
+       TERMSYM_RBRACK =        0,
+       TERMSYM_LBRACK =        1,
+       TERMSYM_LARROW =        2,
+       TERMSYM_RARROW =        3,
+       TERMSYM_UARROW =        4,
+       TERMSYM_DARROW =        5,
+       TERMSYM_LSQUOTE =       6,
+       TERMSYM_RSQUOTE =       7,
+       TERMSYM_SQUOTE =        8,
+       TERMSYM_LDQUOTE =       9,
+       TERMSYM_RDQUOTE =       10,
+       TERMSYM_DQUOTE =        11,
+       TERMSYM_LT =            12,
+       TERMSYM_GT =            13,
+       TERMSYM_LE =            14,
+       TERMSYM_GE =            15,
+       TERMSYM_EQ =            16,
+       TERMSYM_NEQ =           17,
+       TERMSYM_ACUTE =         18,
+       TERMSYM_GRAVE =         19,
+       TERMSYM_PI =            20,
+       TERMSYM_PLUSMINUS =     21,
+       TERMSYM_INF =           22,
+       TERMSYM_INF2 =          23,
+       TERMSYM_NAN =           24,
+       TERMSYM_BAR =           25,
+       TERMSYM_BULLET =        26,
+       TERMSYM_AMP =           27,
+       TERMSYM_EM =            28,
+       TERMSYM_EN =            29,
+       TERMSYM_COPY =          30,
+       TERMSYM_ASTERISK =      31,
+       TERMSYM_SLASH =         32,
+       TERMSYM_HYPHEN =        33,
+       TERMSYM_SPACE =         34,
+       TERMSYM_PERIOD =        35,
+       TERMSYM_BREAK =         36
+};
+
+
+enum   tstyle {
+       TERMSTYLE_CLEAR =       0,
+       TERMSTYLE_BOLD =        1,
+       TERMSTYLE_UNDER =       2,
+       TERMSTYLE_MAX =         3
+};
+
+struct termsym {
+       const char       *sym;
+       size_t            sz;
+};
+
 struct termp {
        size_t            rmargin;
        size_t            maxrmargin;
 struct termp {
        size_t            rmargin;
        size_t            maxrmargin;
@@ -37,21 +92,28 @@ struct      termp {
 #define        TERMP_NOBREAK    (1 << 4)       /* No break after flush. */
 #define        TERMP_LITERAL    (1 << 5)       /* Literal words. */
 #define        TERMP_IGNDELIM   (1 << 6)       /* Delims like regulars. */
 #define        TERMP_NOBREAK    (1 << 4)       /* No break after flush. */
 #define        TERMP_LITERAL    (1 << 5)       /* Literal words. */
 #define        TERMP_IGNDELIM   (1 << 6)       /* Delims like regulars. */
+#define        TERMP_NONOSPACE  (1 << 7)       /* No space (no autounset). */
        char             *buf;
        char             *buf;
+       struct termsym   *symtab;       /* Special-symbol table. */
+       struct termsym   *styletab;     /* Style table. */
 };
 
 struct termpair {
 };
 
 struct termpair {
+       struct termpair  *ppair;
        int               type;
 #define        TERMPAIR_FLAG    (1 << 0)
        int               type;
 #define        TERMPAIR_FLAG    (1 << 0)
-       union {
-               int       flag;
-       } data;
+       int               flag;
+       size_t            offset;
+       size_t            rmargin;
+       int               count;
 };
 
 };
 
-#define        TERMPAIR_SETFLAG(p, fl) \
+#define        TERMPAIR_SETFLAG(termp, p, fl) \
        do { \
        do { \
-               (p)->data.flag = (fl); \
-               (p)->type = TERMPAIR_FLAG; \
+               assert(! (TERMPAIR_FLAG & (p)->type)); \
+               (termp)->flags |= (fl); \
+               (p)->flag = (fl); \
+               (p)->type |= TERMPAIR_FLAG; \
        } while (0)
 
 struct termact {
        } while (0)
 
 struct termact {
@@ -71,11 +133,11 @@ void                         word(struct termp *, const char *);
 void                     flushln(struct termp *);
 void                     transcode(struct termp *, 
                                const char *, size_t);
 void                     flushln(struct termp *);
 void                     transcode(struct termp *, 
                                const char *, size_t);
-
 void                     subtree(struct termp *,
                                const struct mdoc_meta *,
                                const struct mdoc_node *);
 
 void                     subtree(struct termp *,
                                const struct mdoc_meta *,
                                const struct mdoc_node *);
 
+
 const  struct termact   *termacts;
 
 __END_DECLS
 const  struct termact   *termacts;
 
 __END_DECLS