/*
* This file is part of cparser.
- * Copyright (C) 2007-2009 Matthias Braun <matze@braunis.de>
- *
- * 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.
+ * Copyright (C) 2012 Matthias Braun <matze@braunis.de>
*/
#include <config.h>
}
#define HashSet symbol_table_t
-#define HashSetIterator symbol_table_iterator_t
#define HashSetEntry symbol_table_hash_entry_t
#define ValueType symbol_t*
#define NullValue NULL
#define SetRangeEmpty(ptr,size) memset(ptr, 0, (size) * sizeof(symbol_table_hash_entry_t))
#define SCALAR_RETURN
+void _symbol_table_init(symbol_table_t *symbol_table);
#define hashset_init _symbol_table_init
-#define hashset_init_size _symbol_table_init_size
+void _symbol_table_destroy(symbol_table_t *symbol_table);
#define hashset_destroy _symbol_table_destroy
+symbol_t *_symbol_table_insert(symbol_table_t *symbol_table, const char *key);
#define hashset_insert _symbol_table_insert
-#define hashset_remove _symbol_table_remove
-#define hashset_find _symbol_table_find
-#define hashset_size _symbol_table_size
-#define hashset_iterator_init _symbol_table_iterator_init
-#define hashset_iterator_next _symbol_table_iterator_next
-#define hashset_remove_iterator _symbol_table_remove_iterator
-#include "adt/hashset.c"
+#include "adt/hashset.c.inl"
static symbol_table_t symbol_table;
+symbol_t *sym_anonymous;
+
symbol_t *symbol_table_insert(const char *string)
{
return _symbol_table_insert(&symbol_table, string);
{
obstack_init(&symbol_obstack);
_symbol_table_init(&symbol_table);
+ sym_anonymous = symbol_table_insert("<anonymous>");
}
void exit_symbol_table(void)