|
|
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 */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.