diff options
Diffstat (limited to 'libcpp/identifiers.c')
-rw-r--r-- | libcpp/identifiers.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/libcpp/identifiers.c b/libcpp/identifiers.c index c22f4a7..41f32a2 100644 --- a/libcpp/identifiers.c +++ b/libcpp/identifiers.c @@ -1,6 +1,6 @@ /* Hash tables for the CPP library. Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1998, - 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2007 Free Software Foundation, Inc. Written by Per Bothner, 1994. Based on CCCP program by Paul Rubin, June 1986 Adapted to ANSI C, Richard Stallman, Jan 1987 @@ -28,18 +28,18 @@ Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include "cpplib.h" #include "internal.h" -static cpp_hashnode *alloc_node (hash_table *); +static hashnode alloc_node (hash_table *); /* Return an identifier node for hashtable.c. Used by cpplib except when integrated with the C front ends. */ -static cpp_hashnode * +static hashnode alloc_node (hash_table *table) { cpp_hashnode *node; node = XOBNEW (&table->pfile->hash_ob, cpp_hashnode); memset (node, 0, sizeof (cpp_hashnode)); - return node; + return HT_NODE (node); } /* Set up the identifier hash table. Use TABLE if non-null, otherwise @@ -53,7 +53,7 @@ _cpp_init_hashtable (cpp_reader *pfile, hash_table *table) { pfile->our_hashtable = 1; table = ht_create (13); /* 8K (=2^13) entries. */ - table->alloc_node = (hashnode (*) (hash_table *)) alloc_node; + table->alloc_node = alloc_node; _obstack_begin (&pfile->hash_ob, 0, 0, (void *(*) (long)) xmalloc, @@ -107,12 +107,15 @@ cpp_defined (cpp_reader *pfile, const unsigned char *str, int len) return node && node->type == NT_MACRO; } +/* We don't need a proxy since the hash table's identifier comes first + in cpp_hashnode. However, in case this is ever changed, we have a + static assertion for it. */ +extern char proxy_assertion_broken[offsetof (struct cpp_hashnode, ident) == 0 ? 1 : -1]; + /* For all nodes in the hashtable, callback CB with parameters PFILE, the node, and V. */ void cpp_forall_identifiers (cpp_reader *pfile, cpp_cb cb, void *v) { - /* We don't need a proxy since the hash table's identifier comes - first in cpp_hashnode. */ ht_forall (pfile->hash_table, (ht_cb) cb, v); } |