]>
Commit | Line | Data |
---|---|---|
44bd5ea7 A |
1 | /* $NetBSD: context.h,v 1.3 1995/09/28 10:34:17 tls Exp $ */ |
2 | ||
3 | /* | |
4 | * Copyright (c) 1983, 1993 | |
5 | * The Regents of the University of California. All rights reserved. | |
6 | * | |
7 | * This code is derived from software contributed to Berkeley by | |
8 | * Edward Wang at The University of California, Berkeley. | |
9 | * | |
10 | * Redistribution and use in source and binary forms, with or without | |
11 | * modification, are permitted provided that the following conditions | |
12 | * are met: | |
13 | * 1. Redistributions of source code must retain the above copyright | |
14 | * notice, this list of conditions and the following disclaimer. | |
15 | * 2. Redistributions in binary form must reproduce the above copyright | |
16 | * notice, this list of conditions and the following disclaimer in the | |
17 | * documentation and/or other materials provided with the distribution. | |
18 | * 3. All advertising materials mentioning features or use of this software | |
19 | * must display the following acknowledgement: | |
20 | * This product includes software developed by the University of | |
21 | * California, Berkeley and its contributors. | |
22 | * 4. Neither the name of the University nor the names of its contributors | |
23 | * may be used to endorse or promote products derived from this software | |
24 | * without specific prior written permission. | |
25 | * | |
26 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | |
27 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
28 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
29 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | |
30 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
31 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
32 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
33 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
34 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
35 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
36 | * SUCH DAMAGE. | |
37 | * | |
38 | * @(#)context.h 8.1 (Berkeley) 6/6/93 | |
39 | */ | |
40 | ||
41 | #include <stdio.h> | |
42 | ||
43 | #ifndef EXTERN | |
44 | #define EXTERN extern | |
45 | #endif | |
46 | ||
47 | struct context { | |
48 | struct context *x_link; /* nested contexts */ | |
49 | char x_type; /* tag for union */ | |
50 | union { | |
51 | struct { /* input is a file */ | |
52 | char *X_filename; /* input file name */ | |
53 | FILE *X_fp; /* input stream */ | |
54 | short X_lineno; /* current line number */ | |
55 | char X_bol; /* at beginning of line */ | |
56 | char X_noerr; /* don't report errors */ | |
57 | struct ww *X_errwin; /* error window */ | |
58 | } x_f; | |
59 | struct { /* input is a buffer */ | |
60 | char *X_buf; /* input buffer */ | |
61 | char *X_bufp; /* current position in buf */ | |
62 | struct value *X_arg; /* argument for alias */ | |
63 | int X_narg; /* number of arguments */ | |
64 | } x_b; | |
65 | } x_un; | |
66 | /* holding place for current token */ | |
67 | int x_token; /* the token */ | |
68 | struct value x_val; /* values associated with token */ | |
69 | /* parser error flags */ | |
70 | unsigned x_erred :1; /* had an error */ | |
71 | unsigned x_synerred :1; /* had syntax error */ | |
72 | unsigned x_abort :1; /* fatal error */ | |
73 | }; | |
74 | #define x_buf x_un.x_b.X_buf | |
75 | #define x_bufp x_un.x_b.X_bufp | |
76 | #define x_arg x_un.x_b.X_arg | |
77 | #define x_narg x_un.x_b.X_narg | |
78 | #define x_filename x_un.x_f.X_filename | |
79 | #define x_fp x_un.x_f.X_fp | |
80 | #define x_lineno x_un.x_f.X_lineno | |
81 | #define x_bol x_un.x_f.X_bol | |
82 | #define x_errwin x_un.x_f.X_errwin | |
83 | #define x_noerr x_un.x_f.X_noerr | |
84 | ||
85 | /* x_type values, 0 is reserved */ | |
86 | #define X_FILE 1 /* input is a file */ | |
87 | #define X_BUF 2 /* input is a buffer */ | |
88 | ||
89 | EXTERN struct context cx; /* the current context */ |