|
|
1.1 root 1: /*
2: * code.h
3: * Nroff/Troff.
4: * Data structure for storing character codes and stream directives.
5: */
6:
7: /*
8: * Stream directives.
9: */
10: #define DNULL 0 /* Null */
11: #define DHMOV (-1) /* Move horizontally */
12: #define DVMOV (-2) /* Move vertically */
13: #define DFONT (-3) /* Change font */
14: #define DPSZE (-4) /* Change pointsize */
15: #define DSPAR (-5) /* Space down and return */
16: #define DPADC (-6) /* Paddable character */
17: #define DHYPH (-7) /* Place to hyphenate */
18: #define DHYPC (-8) /* Hyphen character */
19: #define DTRAB (-9) /* Transparent buffer */
20: #define DFPOS (-10) /* Fix position */
21: #define DHLIN (-11) /* Horizontal line */
22: #define DVLIN (-12) /* Vertical line */
23:
24: /*
25: * All characters and commands are stored in this structure.
26: * To identify whether an element is a character or a command,
27: * call the function ifcchar(element) which returns 1 if the
28: * element is a character code and 0 if the element is a command.
29: */
30: typedef union {
31: struct c_arg { /* Structure containing character */
32: int c_code; /* Character code */
33: unsigned c_move; /* Distance to move after char */
34: } c_arg;
35: struct l_arg { /* Command with one int argument */
36: int c_code; /* Type of command */
37: int c_iarg; /* Int parameter */
38: } l_arg;
39: struct b_arg { /* Command with buffer ptr. (dag)*/
40: int c_code; /* Type of command */
41: char *c_bufp; /* Pointer to buffer */
42: } b_arg;
43: } CODE;
44:
45: /*
46: * Macros testing whether an element is a character code
47: * or a stream directive.
48: */
49: #define is_char(c) ((c) > 0)
50: #define is_dir(c) ((c) < 0)
51:
52: /*
53: * Global variables.
54: */
55: extern CODE codeval; /* Diversion struct returned by getl */
56:
57: /* end of code.h */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.