aboutsummaryrefslogtreecommitdiff
path: root/gcc/cpplib.h
diff options
context:
space:
mode:
authorZack Weinberg <zack@wolery.cumb.org>2000-03-04 01:42:56 +0000
committerZack Weinberg <zack@gcc.gnu.org>2000-03-04 01:42:56 +0000
commit455d25861f0975d0baed1912bf22deed944770a2 (patch)
treea52521153bf75ca10099523abb8586d4cb5851a7 /gcc/cpplib.h
parentfcd7f76b289ddadbb67057154547d570b94f2b23 (diff)
downloadgcc-455d25861f0975d0baed1912bf22deed944770a2.zip
gcc-455d25861f0975d0baed1912bf22deed944770a2.tar.gz
gcc-455d25861f0975d0baed1912bf22deed944770a2.tar.bz2
cpplib.h (_dollar_ok): New macro.
* cpplib.h (_dollar_ok): New macro. (is_idchar, is_idstart): Use it. (IStable): Rename to _cpp_IStable. Declare it const if gcc >=2.7 or C99. Delete all references to FAKE_CONST. (is_idchar, is_idstart, is_numchar, is_numstart, is_hspace, is_space): Update for renamed IStable. * cppinit.c: Delete all references to FAKE_CONST and CAT macros. Define init_IStable as empty macro if gcc >=2.7 or C99. Change TABLE() to ISTABLE and hardcode name of table. (cpp_start_read): Don't change the IStable based on dollars_in_ident. * cpphash.c (unsafe_chars): Add pfile argument. All callers changed. Handle '$' for char1 correctly. * cpplib.c (cpp_get_token): Use is_numchar when parsing numbers. * cppexp.c (tokentab2): Make const. (cpp_lex): Make toktab const. * cppinit.c (include_defaults_array): Make const. (initialize_standard_includes): Make default_include const. From-SVN: r32321
Diffstat (limited to 'gcc/cpplib.h')
-rw-r--r--gcc/cpplib.h31
1 files changed, 16 insertions, 15 deletions
diff --git a/gcc/cpplib.h b/gcc/cpplib.h
index 85d0744..a9e8f15 100644
--- a/gcc/cpplib.h
+++ b/gcc/cpplib.h
@@ -612,22 +612,23 @@ enum node_type {
#define IShspace 0x08 /* ' ' \t \f \v */
#define ISspace 0x10 /* ' ' \t \f \v \n */
-#define is_idchar(x) (IStable[x] & ISidnum)
-#define is_numchar(x) (IStable[x] & ISidnum)
-#define is_idstart(x) (IStable[x] & ISidstart)
-#define is_numstart(x) (IStable[x] & ISnumstart)
-#define is_hspace(x) (IStable[x] & IShspace)
-#define is_space(x) (IStable[x] & ISspace)
-
-/* This table is not really `const', but it is only modified at
- initialization time, in a separate translation unit from the rest
- of the library. We let the rest of the library think it is `const'
- to get better code and some additional compile-time checks. */
-#ifndef FAKE_CONST
-#define FAKE_CONST const
+#define _dollar_ok(x) ((x) == '$' && CPP_OPTIONS (pfile)->dollars_in_ident)
+
+#define is_idchar(x) ((_cpp_IStable[x] & ISidnum) || _dollar_ok(x))
+#define is_idstart(x) ((_cpp_IStable[x] & ISidstart) || _dollar_ok(x))
+#define is_numchar(x) (_cpp_IStable[x] & ISidnum)
+#define is_numstart(x) (_cpp_IStable[x] & ISnumstart)
+#define is_hspace(x) (_cpp_IStable[x] & IShspace)
+#define is_space(x) (_cpp_IStable[x] & ISspace)
+
+/* This table is constant if it can be initialized at compile time,
+ which is the case if cpp was compiled with GCC >=2.7, or another
+ compiler that supports C99. */
+#if (GCC_VERSION >= 2007) || (__STDC_VERSION__ >= 199901L)
+extern const unsigned char _cpp_IStable[256];
+#else
+extern unsigned char _cpp_IStable[256];
#endif
-extern FAKE_CONST unsigned char IStable[256];
-#undef FAKE_CONST
/* Stack of conditionals currently in progress
(including both successful and failing conditionals). */