X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=symbol_table.c;h=f43b2200214807aab32308fae61f6fe7f5ba1f57;hb=d02d3f8e7d902c83e65d1afab30bcb2cc7384c92;hp=5a448e9c550fe9e7255e2f0f3386d4d0992c66cb;hpb=e97bf80ad2ba7f01d4a2b51d243d6273ae2d65a1;p=cparser diff --git a/symbol_table.c b/symbol_table.c index 5a448e9..f43b220 100644 --- a/symbol_table.c +++ b/symbol_table.c @@ -1,6 +1,6 @@ /* * This file is part of cparser. - * Copyright (C) 2007-2008 Matthias Braun + * Copyright (C) 2007-2009 Matthias Braun * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -19,6 +19,7 @@ */ #include +#include "adt/strutil.h" #include "symbol_table_t.h" #include "symbol_t.h" #include "token_t.h" @@ -30,10 +31,11 @@ struct obstack symbol_obstack; static inline void init_symbol_table_entry(symbol_t *entry, const char *string) { - entry->string = string; - entry->ID = T_IDENTIFIER; - entry->pp_ID = TP_IDENTIFIER; - entry->entity = NULL; + entry->string = string; + entry->ID = T_IDENTIFIER; + entry->pp_ID = TP_NULL; + entry->entity = NULL; + entry->pp_definition = NULL; } #define HashSet symbol_table_t @@ -47,7 +49,7 @@ void init_symbol_table_entry(symbol_t *entry, const char *string) #define GetKey(value) (value)->string #define InitData(this,value,key) ((void)((value) = (ValueType)obstack_alloc(&symbol_obstack, sizeof(symbol_t)), init_symbol_table_entry((value), key))) #define Hash(this, key) hash_string(key) -#define KeysEqual(this,key1,key2) (strcmp(key1, key2) == 0) +#define KeysEqual(this,key1,key2) (streq(key1, key2)) #define SetRangeEmpty(ptr,size) memset(ptr, 0, (size) * sizeof(symbol_table_hash_entry_t)) #define SCALAR_RETURN @@ -66,15 +68,18 @@ void init_symbol_table_entry(symbol_t *entry, const char *string) static symbol_table_t symbol_table; -symbol_t *symbol_table_insert(const char *symbol) +symbol_t *sym_anonymous; + +symbol_t *symbol_table_insert(const char *string) { - return _symbol_table_insert(&symbol_table, symbol); + return _symbol_table_insert(&symbol_table, string); } void init_symbol_table(void) { obstack_init(&symbol_obstack); _symbol_table_init(&symbol_table); + sym_anonymous = symbol_table_insert(""); } void exit_symbol_table(void)