Annotation of coherent/b/bin/troff/reg.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * reg.h
                      3:  * Nroff/Troff.
                      4:  * Register header.
                      5:  */
                      6: 
                      7: /*
                      8:  * Types of data in macro.
                      9:  */
                     10: #define MTEXT  0                       /* Text */
                     11: #define MDIVN  1                       /* Diversion */
                     12: #define MREQS  2                       /* Request */
                     13: 
                     14: #define RHTSIZE        128                     /* Size of register hash table */
                     15: 
                     16: /*
                     17:  * Data descriptor in macro.
                     18:  */
                     19: typedef        union   MAC     {
                     20:        struct  t_div {                 /* Text and diversions */
                     21:                union MAC *m_next;      /* Pointer to next */
                     22:                int     m_type;         /* Type of data */
                     23:                int     m_size;         /* Count */
                     24:                char    *m_core;        /* Pointer in core */
                     25:                unsigned long   m_seek; /* Seek pointer */
                     26:        } t_div;
                     27:        struct  r_div {                 /* Requests */
                     28:                union MAC *m_next;      /* Pointer to next */
                     29:                int     m_type;         /* Type of data */
                     30:                int     m_size;         /* Count */
                     31:                int     (*m_func)();    /* Function for request */
                     32:        } r_div;
                     33: } MAC;
                     34: 
                     35: /*
                     36:  * Types of registers.
                     37:  */
                     38: #define RTEXT  0                       /* Text register */
                     39: #define RNUMR  1                       /* Number register */
                     40: 
                     41: /*
                     42:  * Register structure.
                     43:  */
                     44: typedef        union   REG     {
                     45:        struct  t_reg {                 /* Text register */
                     46:                union REG *r_next;      /* Pointer to next register */
                     47:                int     r_type;         /* Register type */
                     48:                char    r_name[2];      /* Register name */
                     49:                int     r_maxh;         /* Maximum height in diversion */
                     50:                int     r_maxw;         /* Maximum width in diversion */
                     51:                MAC     r_macd;         /* Macro descriptor */
                     52:        } t_reg;
                     53:        struct  n_reg {                 /* Number register */
                     54:                union REG *r_next;      /* Pointer to next register */
                     55:                int     r_type;         /* Register type */
                     56:                char    r_name[2];      /* Register name */
                     57:                int     r_nval;         /* Value of register */
                     58:                int     r_incr;         /* Increment */
                     59:                char    r_form;         /* Format character */
                     60:        } n_reg;
                     61: } REG;
                     62: 
                     63: /*
                     64:  * Hashing function for registers.
                     65:  */
                     66: #define hash(name)     ((name[0]+name[1])%RHTSIZE)
                     67: 
                     68: /*
                     69:  * Global variables.
                     70:  */
                     71: extern REG     *nrctreg;               /* Character type */
                     72: extern REG     *nrdlreg;               /* Max width of last diversion */
                     73: extern REG     *nrdnreg;               /* Height of last diversion */
                     74: extern REG     *nrdwreg;               /* Day of the week */
                     75: extern REG     *nrdyreg;               /* Day of the month */
                     76: extern REG     *nrhpreg;               /* Current horizontal place */
                     77: extern REG     *nrlnreg;               /* Output line number */
                     78: extern REG     *nrmoreg;               /* Month */
                     79: extern REG     *nrnlreg;               /* Position of last printed line */
                     80: extern REG     *nrpnreg;               /* Current page number */
                     81: extern REG     *nrsbreg;               /* Depth of string below base */
                     82: extern REG     *nrstreg;               /* Height of string above base */
                     83: extern REG     *nryrreg;               /* Year */
                     84: extern REG     *regt[RHTSIZE];         /* Register hash table */
                     85: 
                     86: /* Page number. */
                     87: #define         pno    (nrpnreg->n_reg.r_nval)
                     88: 
                     89: /* end of reg.h */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.