X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=symbol_table.c;h=16db061c2adb2fb3f65e65c48b11718b62fff896;hb=a8005611b36ee6057fb56a81071105cc8c43e5de;hp=c422e0c6b4ca38437baecb275631d4780e875d05;hpb=d5e8df5885f97ea65839f8970b8697549c207610;p=cparser diff --git a/symbol_table.c b/symbol_table.c index c422e0c..16db061 100644 --- a/symbol_table.c +++ b/symbol_table.c @@ -1,6 +1,27 @@ +/* + * This file is part of cparser. + * 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 + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ #include #include "symbol_table_t.h" +#include "symbol_t.h" +#include "token_t.h" #include "adt/hash_string.h" #include "adt/obst.h" @@ -9,8 +30,10 @@ struct obstack symbol_obstack; static inline void init_symbol_table_entry(symbol_t *entry, const char *string) { - entry->ID = 0; entry->string = string; + entry->ID = T_IDENTIFIER; + entry->pp_ID = TP_IDENTIFIER; + entry->entity = NULL; } #define HashSet symbol_table_t @@ -22,10 +45,11 @@ void init_symbol_table_entry(symbol_t *entry, const char *string) #define KeyType const char * #define ConstKeyType const char * #define GetKey(value) (value)->string -#define InitData(this,value,key) { (value) = (ValueType) obstack_alloc(&symbol_obstack, sizeof(symbol_t)); init_symbol_table_entry((value), key); } +#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 SetRangeEmpty(ptr,size) memset(ptr, 0, (size) * sizeof(symbol_table_hash_entry_t)) +#define SCALAR_RETURN #define hashset_init _symbol_table_init #define hashset_init_size _symbol_table_init_size @@ -41,28 +65,20 @@ void init_symbol_table_entry(symbol_t *entry, const char *string) #include "adt/hashset.c" static symbol_table_t symbol_table; -static symbol_table_t preprocessor_symbol_table; symbol_t *symbol_table_insert(const char *symbol) { return _symbol_table_insert(&symbol_table, symbol); } -symbol_t *preprocessor_symbol_table_insert(const char *symbol) -{ - return _symbol_table_insert(&preprocessor_symbol_table, symbol); -} - void init_symbol_table(void) { obstack_init(&symbol_obstack); _symbol_table_init(&symbol_table); - _symbol_table_init(&preprocessor_symbol_table); } void exit_symbol_table(void) { _symbol_table_destroy(&symbol_table); - _symbol_table_destroy(&preprocessor_symbol_table); obstack_free(&symbol_obstack, NULL); }