xref: /csrg-svn/usr.bin/window/context.h (revision 16448)
115567Sedward /*
2*16448Sedward  *	@(#)context.h	3.5 84/05/06
315567Sedward  */
415567Sedward 
516124Sedward #include <stdio.h>
616124Sedward 
715567Sedward struct context {
815567Sedward 	struct context *x_link;		/* nested contexts */
915855Sedward 	char x_type;			/* tag for union */
1015855Sedward 	union {
1115855Sedward 		struct {	/* input is a file */
1215855Sedward 			char *X_filename;	/* input file name */
1315855Sedward 			FILE *X_fp;		/* input stream */
1415855Sedward 			short X_lineno;		/* current line number */
1515855Sedward 			char X_bol;		/* at beginning of line */
1615855Sedward 			char X_noerr;		/* don't report errors */
1715855Sedward 			struct ww *X_errwin;	/* error window */
1815567Sedward 		} x_f;
1915855Sedward 		struct {	/* input is a buffer */
2015855Sedward 			char *X_buf;		/* input buffer */
2115855Sedward 			char *X_bufp;		/* current position in buf */
22*16448Sedward 			struct value *X_arg;	/* argument for alias */
23*16448Sedward 			int X_narg;		/* number of arguments */
2415567Sedward 		} x_b;
2515567Sedward 	} x_un;
2615855Sedward 		/* holding place for current token */
2715855Sedward 	int x_token;			/* the token */
2815855Sedward 	struct value x_val;		/* values associated with token */
2915855Sedward 		/* parser error flags */
3015855Sedward 	unsigned x_erred :1;		/* had an error */
3115855Sedward 	unsigned x_synerred :1;		/* had syntax error */
3215855Sedward 	unsigned x_abort :1;		/* fatal error */
3315567Sedward };
3415567Sedward #define x_buf		x_un.x_b.X_buf
3515567Sedward #define x_bufp		x_un.x_b.X_bufp
36*16448Sedward #define x_arg		x_un.x_b.X_arg
37*16448Sedward #define x_narg		x_un.x_b.X_narg
3815567Sedward #define x_filename	x_un.x_f.X_filename
3915567Sedward #define x_fp		x_un.x_f.X_fp
4015567Sedward #define x_lineno	x_un.x_f.X_lineno
4115567Sedward #define x_bol		x_un.x_f.X_bol
4215567Sedward #define x_errwin	x_un.x_f.X_errwin
4315855Sedward #define x_noerr		x_un.x_f.X_noerr
4415567Sedward 
4515855Sedward 	/* x_type values, 0 is reserved */
4615855Sedward #define X_FILE		1		/* input is a file */
4715855Sedward #define X_BUF		2		/* input is a buffer */
4815567Sedward 
4915855Sedward struct context cx;			/* the current context */
50