/* Muscle table manager for Bison.
- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software
+ Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
You should have received a copy of the GNU General Public License
along with Bison; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+#include <config.h>
#include "system.h"
#include <hash.h>
/* Initial capacity of muscles hash table. */
#define HT_INITIAL_CAPACITY 257
-struct hash_table *muscle_table = NULL;
+static struct hash_table *muscle_table = NULL;
static bool
hash_compare_muscles (void const *x, void const *y)
return strcmp (m1->key, m2->key) == 0;
}
-static unsigned int
-hash_muscle (const void *x, unsigned int tablesize)
+static size_t
+hash_muscle (const void *x, size_t tablesize)
{
muscle_entry const *m = x;
return hash_string (m->key, tablesize);
/* Version and input file. */
MUSCLE_INSERT_STRING ("version", VERSION);
- MUSCLE_INSERT_C_STRING ("filename", grammar_file);
+ MUSCLE_INSERT_C_STRING ("file_name", grammar_file);
}
muscle_insert (const char *key, char *value)
{
muscle_entry probe;
- muscle_entry *entry = NULL;
+ muscle_entry *entry;
probe.key = key;
entry = hash_lookup (muscle_table, &probe);
if (!entry)
{
/* First insertion in the hash. */
- MALLOC (entry, 1);
+ entry = xmalloc (sizeof *entry);
entry->key = key;
hash_insert (muscle_table, entry);
}
/*-------------------------------------------------------------------.
-| Insert (KEY, VALUE). If KEY already existed, overwrite the |
-| previous value. Uses MUSCLE_OBSTACK. De-allocates the previously |
-| associated value. VALUE and SEPARATOR are copied. |
+| Append VALUE to the current value of KEY. If KEY did not already |
+| exist, create it. Use MUSCLE_OBSTACK. De-allocate the previously |
+| associated value. Copy VALUE and SEPARATOR. |
`-------------------------------------------------------------------*/
void
if (!entry)
{
/* First insertion in the hash. */
- MALLOC (entry, 1);
+ entry = xmalloc (sizeof *entry);
entry->key = key;
hash_insert (muscle_table, entry);
entry->value = xstrdup (val);
muscle_code_grow (const char *key, const char *val, location loc)
{
char *extension = NULL;
- obstack_fgrow1 (&muscle_obstack, "]b4_syncline([[%d]], [[", loc.start.line);
+ obstack_fgrow1 (&muscle_obstack, "]b4_syncline(%d, [[", loc.start.line);
MUSCLE_OBSTACK_SGROW (&muscle_obstack,
quotearg_style (c_quoting_style, loc.start.file));
obstack_sgrow (&muscle_obstack, "]])[\n");
| Find the value of muscle KEY. |
`-------------------------------*/
-char*
+char *
muscle_find (const char *key)
{
muscle_entry probe;