]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/input.h
Update Copyright years for files modified in 2011 and/or 2012.
[thirdparty/gcc.git] / gcc / input.h
CommitLineData
a75553c8 1/* Declarations for variables relating to reading the source file.
2 Used by parsers, lexical analyzers, and error message routines.
71e45bc2 3 Copyright (C) 1993, 1997, 1998, 2000, 2003, 2004, 2007, 2008, 2009, 2010,
4 2011, 2012 Free Software Foundation, Inc.
a75553c8 5
f12b58b3 6This file is part of GCC.
a75553c8 7
f12b58b3 8GCC is free software; you can redistribute it and/or modify it under
9the terms of the GNU General Public License as published by the Free
8c4c00c1 10Software Foundation; either version 3, or (at your option) any later
f12b58b3 11version.
a75553c8 12
f12b58b3 13GCC is distributed in the hope that it will be useful, but WITHOUT ANY
14WARRANTY; without even the implied warranty of MERCHANTABILITY or
15FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16for more details.
a75553c8 17
18You should have received a copy of the GNU General Public License
8c4c00c1 19along with GCC; see the file COPYING3. If not see
20<http://www.gnu.org/licenses/>. */
a75553c8 21
5a8a92a0 22#ifndef GCC_INPUT_H
23#define GCC_INPUT_H
6fcedfa3 24
fdfe4b3f 25#include "line-map.h"
9c85a98a 26
931b0a0f 27extern GTY(()) struct line_maps *line_table;
ceec9c13 28
9c85a98a 29/* A value which will never be used to represent a real location. */
30#define UNKNOWN_LOCATION ((source_location) 0)
31
fdfe4b3f 32/* The location for declarations in "<built-in>" */
af4d2883 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. */
37extern char builtins_location_check[(BUILTINS_LOCATION
38 < RESERVED_LOCATION_COUNT) ? 1 : -1];
fdfe4b3f 39
fdfe4b3f 40extern expanded_location expand_location (source_location);
5a983084 41extern const char * location_get_source_line(expanded_location xloc);
39107655 42extern expanded_location expand_location_to_spelling_point (source_location);
db30b351 43extern source_location expansion_point_location_if_in_system_header (source_location);
fdfe4b3f 44
9c85a98a 45/* Historically GCC used location_t, while cpp used source_location.
46 This could be removed but it hardly seems worth the effort. */
47typedef source_location location_t;
6fcedfa3 48
5a8a92a0 49extern location_t input_location;
fdfe4b3f 50
51#define LOCATION_FILE(LOC) ((expand_location (LOC)).file)
52#define LOCATION_LINE(LOC) ((expand_location (LOC)).line)
97bfb9ef 53#define LOCATION_COLUMN(LOC)((expand_location (LOC)).column)
5169661d 54#define LOCATION_LOCUS(LOC) \
55 ((IS_ADHOC_LOC(LOC)) ? get_location_from_adhoc_loc (line_table, LOC) : (LOC))
56#define LOCATION_BLOCK(LOC) \
57 ((tree) ((IS_ADHOC_LOC (LOC)) ? get_data_from_adhoc_loc (line_table, (LOC)) \
58 : NULL))
fdfe4b3f 59
9c85a98a 60#define input_line LOCATION_LINE (input_location)
61#define input_filename LOCATION_FILE (input_location)
97bfb9ef 62#define in_system_header_at(LOC) \
63 ((linemap_location_in_system_header_p (line_table, LOC)))
bdbc474b 64#define in_system_header (in_system_header_at (input_location))
6fcedfa3 65
e77b8253 66void dump_line_table_statistics (void);
67
5a8a92a0 68#endif