This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
add context to cpp_forall_identifiers
- To: gcc-patches at gcc dot gnu dot org
- Subject: add context to cpp_forall_identifiers
- From: Geoff Keating <geoffk at geoffk dot org>
- Date: Sat, 28 Oct 2000 23:59:52 -0700
This patch:
- Adds a context parameter to cpp_forall_identifiers
- Makes some global variables in cppmain.c static.
I needed the context parameter for ease of coding the precompiled
header code.
Bootstrapped and tested on x86-linux, without enabling the integrated
cpp.
--
- Geoffrey Keating <geoffk@cygnus.com>
===File ~/patches/cygnus/pch-forallctx.patch================
2000-10-28 Geoffrey Keating <geoffk@cygnus.com>
* cpphash.c (cpp_forall_identifiers): Add context variable
for callback routine.
* cppmain.c (dump_macro): Update to match cpp_forall_identifiers
change.
(main): Call cpp_forall_identifiers with null context.
* cpplib.h (cpp_forall_identifiers): Update prototype.
* cppmain.c: Make `parse_in' and `print' static.
Index: cpphash.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cpphash.c,v
retrieving revision 1.107
diff -u -p -r1.107 cpphash.c
--- cpphash.c 2000/10/28 17:59:04 1.107
+++ cpphash.c 2000/10/29 06:56:36
@@ -264,9 +264,10 @@ higher_prime_number (n)
}
void
-cpp_forall_identifiers (pfile, cb)
+cpp_forall_identifiers (pfile, cb, v)
cpp_reader *pfile;
- int (*cb) PARAMS ((cpp_reader *, cpp_hashnode *));
+ int (*cb) PARAMS ((cpp_reader *, cpp_hashnode *, void *));
+ void *v;
{
cpp_hashnode **p, **limit;
@@ -275,7 +276,7 @@ cpp_forall_identifiers (pfile, cb)
do
{
if (*p)
- if ((*cb) (pfile, *p) == 0)
+ if ((*cb) (pfile, *p, v) == 0)
break;
}
while (++p < limit);
Index: cpplib.h
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cpplib.h,v
retrieving revision 1.127
diff -u -p -r1.127 cpplib.h
--- cpplib.h 2000/10/28 17:59:05 1.127
+++ cpplib.h 2000/10/29 06:56:36
@@ -802,7 +802,10 @@ extern cpp_hashnode *cpp_lookup PARAMS
const unsigned char *, size_t));
extern void cpp_forall_identifiers PARAMS ((cpp_reader *,
int (*) PARAMS ((cpp_reader *,
- cpp_hashnode *))));
+ cpp_hashnode *,
+ void *)),
+ void *));
+
/* In cppmacro.c */
extern void cpp_scan_buffer_nooutput PARAMS ((cpp_reader *));
extern void cpp_start_lookahead PARAMS ((cpp_reader *));
Index: cppmain.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cppmain.c,v
retrieving revision 1.37
diff -u -p -r1.37 cppmain.c
--- cppmain.c 2000/10/28 17:59:06 1.37
+++ cppmain.c 2000/10/29 06:56:36
@@ -42,7 +42,7 @@ int main PARAMS ((int, char **));
/* General output routines. */
static void scan_buffer PARAMS ((cpp_reader *));
static int printer_init PARAMS ((cpp_reader *));
-static int dump_macro PARAMS ((cpp_reader *, cpp_hashnode *));
+static int dump_macro PARAMS ((cpp_reader *, cpp_hashnode *, void *));
static void print_line PARAMS ((const char *));
static void maybe_print_line PARAMS ((unsigned int));
@@ -62,8 +62,8 @@ static void cb_def_pragma PARAMS ((cpp_r
static void do_pragma_implementation PARAMS ((cpp_reader *));
const char *progname;
-cpp_reader parse_in;
-struct printer print;
+static cpp_reader parse_in;
+static struct printer print;
int
main (argc, argv)
@@ -143,7 +143,7 @@ main (argc, argv)
/* -dM command line option. */
if (CPP_OPTION (pfile, dump_macros) == dump_only)
- cpp_forall_identifiers (pfile, dump_macro);
+ cpp_forall_identifiers (pfile, dump_macro, NULL);
cpp_finish (pfile);
cpp_cleanup (pfile);
@@ -429,9 +429,10 @@ do_pragma_implementation (pfile)
/* Dump out the hash table. */
static int
-dump_macro (pfile, node)
+dump_macro (pfile, node, v)
cpp_reader *pfile;
cpp_hashnode *node;
+ void *v ATTRIBUTE_UNUSED;
{
if (node->type == NT_MACRO && !(node->flags & NODE_BUILTIN))
{
============================================================