]>
Commit | Line | Data |
---|---|---|
d7f6896a RK |
1 | /* Declarations for variables relating to reading the source file. |
2 | Used by parsers, lexical analyzers, and error message routines. | |
d479d37f | 3 | Copyright (C) 1993, 1997, 1998, 2000, 2003 Free Software Foundation, Inc. |
d7f6896a | 4 | |
1322177d | 5 | This file is part of GCC. |
d7f6896a | 6 | |
1322177d LB |
7 | GCC is free software; you can redistribute it and/or modify it under |
8 | the terms of the GNU General Public License as published by the Free | |
9 | Software Foundation; either version 2, or (at your option) any later | |
10 | version. | |
d7f6896a | 11 | |
1322177d LB |
12 | GCC is distributed in the hope that it will be useful, but WITHOUT ANY |
13 | WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 | for more details. | |
d7f6896a RK |
16 | |
17 | You should have received a copy of the GNU General Public License | |
1322177d LB |
18 | along with GCC; see the file COPYING. If not, write to the Free |
19 | Software Foundation, 59 Temple Place - Suite 330, Boston, MA | |
20 | 02111-1307, USA. */ | |
d7f6896a | 21 | |
6060edcb NS |
22 | #ifndef GCC_INPUT_H |
23 | #define GCC_INPUT_H | |
1fa2d22f | 24 | |
6060edcb | 25 | /* The data structure used to record a location in a translation unit. */ |
59e4e217 | 26 | /* Long-term, we want to get rid of this and typedef fileline location_t. */ |
6060edcb NS |
27 | struct location_s GTY (()) |
28 | { | |
1d088dee | 29 | /* The name of the source file involved. */ |
6060edcb | 30 | const char *file; |
1fa2d22f | 31 | |
6060edcb NS |
32 | /* The line-location in the source file. */ |
33 | int line; | |
34 | }; | |
35 | typedef struct location_s location_t; | |
1fa2d22f RS |
36 | |
37 | struct file_stack | |
6060edcb NS |
38 | { |
39 | struct file_stack *next; | |
40 | location_t location; | |
41 | }; | |
42 | ||
43 | /* Top-level source file. */ | |
44 | extern const char *main_input_filename; | |
45 | ||
46 | extern location_t input_location; | |
47 | #define input_line (input_location.line) | |
48 | #define input_filename (input_location.file) | |
1fa2d22f RS |
49 | |
50 | /* Stack of currently pending input files. | |
51 | The line member is not accurate for the innermost file on the stack. */ | |
52 | extern struct file_stack *input_file_stack; | |
53 | ||
72954a4f JM |
54 | /* Stack of EXPR_WITH_FILE_LOCATION nested expressions. */ |
55 | extern struct file_stack *expr_wfl_stack; | |
56 | ||
1fa2d22f RS |
57 | /* Incremented on each change to input_file_stack. */ |
58 | extern int input_file_stack_tick; | |
68723fae | 59 | |
1d088dee AJ |
60 | extern void push_srcloc (const char *name, int line); |
61 | extern void pop_srcloc (void); | |
6060edcb NS |
62 | |
63 | #endif |