summaryrefslogtreecommitdiff
path: root/libcpp/identifiers.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2008-02-20 02:16:43 +0000
committerTom Tromey <tromey@gcc.gnu.org>2008-02-20 02:16:43 +0000
commit2bf41bf05df81d26e70bca9642c065cd90b49be7 (patch)
treea0f5aee41aeac0578015bd28b69be97666cfa9bc /libcpp/identifiers.c
parent18ca3965e9f2a024baca017763ddfa4342ef499d (diff)
traditional.c (lex_identifier): Use CPP_HASHNODE.
* traditional.c (lex_identifier): Use CPP_HASHNODE. * lex.c (lex_identifier): Use CPP_HASHNODE. * include/line-map.h (LINEMAP_POSITION_FOR_COLUMN): Wrap in do-while. * identifiers.c (alloc_node): Change return type. (_cpp_init_hashtable): Don't cast 'alloc_node'. (proxy_assertion_broken): New declaration. (cpp_forall_identifiers): Move comment. * line-map.c (linemap_add): Comment fix. (linemap_line_start): Indentation fix. From-SVN: r132467
Diffstat (limited to 'libcpp/identifiers.c')
-rw-r--r--libcpp/identifiers.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/libcpp/identifiers.c b/libcpp/identifiers.c
index c22f4a714bb..41f32a2bbae 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);
}