|
|
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.