xref: /original-bsd/usr.bin/window/context.h (revision f052b07a)
1 /*
2  * Copyright (c) 1983 Regents of the University of California.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms are permitted
6  * provided that the above copyright notice and this paragraph are
7  * duplicated in all such forms and that any documentation,
8  * advertising materials, and other materials related to such
9  * distribution and use acknowledge that the software was developed
10  * by the University of California, Berkeley.  The name of the
11  * University may not be used to endorse or promote products derived
12  * from this software without specific prior written permission.
13  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16  *
17  *	@(#)context.h	3.9 (Berkeley) 06/29/88
18  */
19 
20 #include <stdio.h>
21 
22 struct context {
23 	struct context *x_link;		/* nested contexts */
24 	char x_type;			/* tag for union */
25 	union {
26 		struct {	/* input is a file */
27 			char *X_filename;	/* input file name */
28 			FILE *X_fp;		/* input stream */
29 			short X_lineno;		/* current line number */
30 			char X_bol;		/* at beginning of line */
31 			char X_noerr;		/* don't report errors */
32 			struct ww *X_errwin;	/* error window */
33 		} x_f;
34 		struct {	/* input is a buffer */
35 			char *X_buf;		/* input buffer */
36 			char *X_bufp;		/* current position in buf */
37 			struct value *X_arg;	/* argument for alias */
38 			int X_narg;		/* number of arguments */
39 		} x_b;
40 	} x_un;
41 		/* holding place for current token */
42 	int x_token;			/* the token */
43 	struct value x_val;		/* values associated with token */
44 		/* parser error flags */
45 	unsigned x_erred :1;		/* had an error */
46 	unsigned x_synerred :1;		/* had syntax error */
47 	unsigned x_abort :1;		/* fatal error */
48 };
49 #define x_buf		x_un.x_b.X_buf
50 #define x_bufp		x_un.x_b.X_bufp
51 #define x_arg		x_un.x_b.X_arg
52 #define x_narg		x_un.x_b.X_narg
53 #define x_filename	x_un.x_f.X_filename
54 #define x_fp		x_un.x_f.X_fp
55 #define x_lineno	x_un.x_f.X_lineno
56 #define x_bol		x_un.x_f.X_bol
57 #define x_errwin	x_un.x_f.X_errwin
58 #define x_noerr		x_un.x_f.X_noerr
59 
60 	/* x_type values, 0 is reserved */
61 #define X_FILE		1		/* input is a file */
62 #define X_BUF		2		/* input is a buffer */
63 
64 struct context cx;			/* the current context */
65