]>
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. | |
447924ef | 3 | Copyright (C) 1993, 1997, 1998, 2000, 2003, 2004, 2007, 2008, 2009, 2010 |
9dcd6f09 | 4 | Free Software Foundation, Inc. |
d7f6896a | 5 | |
1322177d | 6 | This file is part of GCC. |
d7f6896a | 7 | |
1322177d LB |
8 | GCC is free software; you can redistribute it and/or modify it under |
9 | the terms of the GNU General Public License as published by the Free | |
9dcd6f09 | 10 | Software Foundation; either version 3, or (at your option) any later |
1322177d | 11 | version. |
d7f6896a | 12 | |
1322177d LB |
13 | GCC is distributed in the hope that it will be useful, but WITHOUT ANY |
14 | WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
15 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
16 | for more details. | |
d7f6896a RK |
17 | |
18 | You should have received a copy of the GNU General Public License | |
9dcd6f09 NC |
19 | along with GCC; see the file COPYING3. If not see |
20 | <http://www.gnu.org/licenses/>. */ | |
d7f6896a | 21 | |
6060edcb NS |
22 | #ifndef GCC_INPUT_H |
23 | #define GCC_INPUT_H | |
1fa2d22f | 24 | |
c1667470 | 25 | #include "line-map.h" |
2d593c86 | 26 | |
5ffeb913 | 27 | extern GTY(()) struct line_maps *line_table; |
50f59cd7 | 28 | |
2d593c86 TT |
29 | /* A value which will never be used to represent a real location. */ |
30 | #define UNKNOWN_LOCATION ((source_location) 0) | |
31 | ||
c1667470 | 32 | /* The location for declarations in "<built-in>" */ |
96c169e1 JJ |
33 | #define BUILTINS_LOCATION ((source_location) 1) |
34 | ||
35 | /* line-map.c reserves RESERVED_LOCATION_COUNT to the user. Ensure | |
36 | both UNKNOWN_LOCATION and BUILTINS_LOCATION fit into that. */ | |
37 | extern char builtins_location_check[(BUILTINS_LOCATION | |
38 | < RESERVED_LOCATION_COUNT) ? 1 : -1]; | |
c1667470 | 39 | |
2d593c86 | 40 | typedef struct GTY (()) |
6060edcb | 41 | { |
1d088dee | 42 | /* The name of the source file involved. */ |
6060edcb | 43 | const char *file; |
1fa2d22f | 44 | |
6060edcb NS |
45 | /* The line-location in the source file. */ |
46 | int line; | |
c1667470 | 47 | |
aa3c6dc1 | 48 | int column; |
aa14403d RAE |
49 | |
50 | /* In a system header?. */ | |
51 | bool sysp; | |
c1667470 PB |
52 | } expanded_location; |
53 | ||
c1667470 PB |
54 | extern expanded_location expand_location (source_location); |
55 | ||
2d593c86 TT |
56 | /* Historically GCC used location_t, while cpp used source_location. |
57 | This could be removed but it hardly seems worth the effort. */ | |
58 | typedef source_location location_t; | |
1fa2d22f | 59 | |
6060edcb | 60 | extern location_t input_location; |
c1667470 PB |
61 | |
62 | #define LOCATION_FILE(LOC) ((expand_location (LOC)).file) | |
63 | #define LOCATION_LINE(LOC) ((expand_location (LOC)).line) | |
64 | ||
2d593c86 TT |
65 | #define input_line LOCATION_LINE (input_location) |
66 | #define input_filename LOCATION_FILE (input_location) | |
aa14403d RAE |
67 | #define in_system_header_at(LOC) ((expand_location (LOC)).sysp != 0) |
68 | #define in_system_header (in_system_header_at (input_location)) | |
1fa2d22f | 69 | |
6060edcb | 70 | #endif |