aboutsummaryrefslogtreecommitdiff
path: root/gcc/cppfiles.c
diff options
context:
space:
mode:
authorZack Weinberg <zack@bitmover.com>1999-10-29 04:31:14 +0000
committerZack Weinberg <zack@gcc.gnu.org>1999-10-29 04:31:14 +0000
commita9ae448346792bff101f82eceebcbe4807e85766 (patch)
treeb2a0aa8d86d67e1213ffbe961148d1038e5ba877 /gcc/cppfiles.c
parent3277221c451318748ffe73c4205ca474fd0b806c (diff)
downloadgcc-a9ae448346792bff101f82eceebcbe4807e85766.zip
gcc-a9ae448346792bff101f82eceebcbe4807e85766.tar.gz
gcc-a9ae448346792bff101f82eceebcbe4807e85766.tar.bz2
cpplib.h (struct cpp_buffer: fname, [...]): Mark const.
1999-10-28 21:27 -0700 Zack Weinberg <zack@bitmover.com> * cpplib.h (struct cpp_buffer: fname, nominal_fname, last_nominal_fname): Mark const. (struct include_hash: name, nshort, control_macro): Mark const. (struct macrodef: symnam): Mark const. (struct if_stack: fname): Mark const. (is_idchar, is_idstart, is_hor_space, trigraph_table): Delete. (IStable): New character-syntax array which encompasses all the old is_foo arrays. (is_idchar, is_numchar, is_idstart, is_numstart, is_hspace, is_space): New macros for interrogating IStable. (check_macro_name): Kill last argument. All callers changed. * cppinit.c (initialize_char_syntax): Delete. (is_idchar, is_idstart, is_hor_space, is_space, trigraph_table): Delete. (IStable): New. Initialize with clever macros to avoid information duplication. (builtin_array): Table of builtins to get rid of explicit list in initialize_builtins. (initialize_builtins): Use builtins_array. (cpp_start_read): Call init_IStable, and set IStable['$'] if opts->dollars_in_ident. * cppexp.c: Change all refs to is_xyz[] arrays to use new is_xyz() macros. (cpp_parse_expr): Avoid 'format string is not constant' warning. Use ISGRAPH to identify printable chars. * cppfiles.c: Change all refs to is_xyz[] arrays to use new is_xyz() macros. (read_and_prescan): Map trigraphs to chars with open-coded if-else-if-... sequence, not a lookup table. * cpphash.c: Change all refs to is_xyz[] arrays to use new is_xyz() macros. * cpplib.c: Change all refs to is_xyz[] arrays to use new is_xyz() macros. Kill SKIP_ALL_WHITE_SPACE (unused). (check_macro_name): Remove ability to report an invalid assertion name, which is never used. (do_line): Constify a couple of char *'s. * cppmain.c (main): Call cpp_cleanup before returning. From-SVN: r30252
Diffstat (limited to 'gcc/cppfiles.c')
-rw-r--r--gcc/cppfiles.c33
1 files changed, 24 insertions, 9 deletions
diff --git a/gcc/cppfiles.c b/gcc/cppfiles.c
index 2aa2eeb..dfeddcc 100644
--- a/gcc/cppfiles.c
+++ b/gcc/cppfiles.c
@@ -437,10 +437,10 @@ read_filename_string (ch, f)
len = 20;
set = alloc = xmalloc (len + 1);
- if (! is_space[ch])
+ if (! is_space(ch))
{
*set++ = ch;
- while ((ch = getc (f)) != EOF && ! is_space[ch])
+ while ((ch = getc (f)) != EOF && ! is_space(ch))
{
if (set - alloc == len)
{
@@ -503,10 +503,10 @@ read_name_map (pfile, dirname)
char *from, *to;
struct file_name_map *ptr;
- if (is_space[ch])
+ if (is_space(ch))
continue;
from = read_filename_string (ch, f);
- while ((ch = getc (f)) != EOF && is_hor_space[ch])
+ while ((ch = getc (f)) != EOF && is_hspace(ch))
;
to = read_filename_string (ch, f);
@@ -976,7 +976,7 @@ read_and_prescan (pfile, fp, desc, len)
case SPECCASE_QUESTION: /* ? */
{
- unsigned int d;
+ unsigned int d, t;
/* If we're at the end of the intermediate buffer,
we have to shift the ?'s down to the start and
come back next pass. */
@@ -998,12 +998,27 @@ read_and_prescan (pfile, fp, desc, len)
*--ibase = '?';
goto read_next;
}
- if (!trigraph_table[d])
+
+ /* Trigraph map:
+ * from to from to from to
+ * ?? = # ?? ) ] ?? ! |
+ * ?? ( [ ?? ' ^ ?? > }
+ * ?? / \ ?? < { ?? - ~
+ */
+ if (d == '=') t = '#';
+ else if (d == ')') t = ']';
+ else if (d == '!') t = '|';
+ else if (d == '(') t = '[';
+ else if (d == '\'') t = '^';
+ else if (d == '>') t = '}';
+ else if (d == '/') t = '\\';
+ else if (d == '<') t = '{';
+ else if (d == '-') t = '~';
+ else
{
*op++ = '?';
break;
}
-
if (CPP_OPTIONS (pfile)->warn_trigraphs)
{
unsigned long col;
@@ -1014,10 +1029,10 @@ read_and_prescan (pfile, fp, desc, len)
}
if (CPP_OPTIONS (pfile)->trigraphs)
{
- if (trigraph_table[d] == '\\')
+ if (t == '\\')
goto backslash;
else
- *op++ = trigraph_table[d];
+ *op++ = t;
}
else
{