-/* Copyright (C) 2003,2004,2005 MORIOKA Tomohiko
+/* Copyright (C) 2003, 2004, 2005, 2006, 2013 MORIOKA Tomohiko
This file is part of the CONCORD Library.
The CONCORD Library is free software; you can redistribute it and/or
CONCORD_HASH_TABLE* concord_make_hash_table (size_t size);
void concord_destroy_hash_table (CONCORD_HASH_TABLE* hash);
-int concord_hash_c_string (const unsigned char *ptr);
+unsigned long concord_hash_c_string (const unsigned char *ptr);
CONCORD_HASH_TABLE*
concord_make_hash_table (size_t size)
/* derived from hashpjw, Dragon Book P436. */
-int
+unsigned long
concord_hash_c_string (const unsigned char *ptr)
{
- int hash = 0;
+ unsigned long hash = 0;
while (*ptr != '\0')
{
- int g;
+ unsigned long g;
hash = (hash << 4) + *ptr++;
g = hash & 0xf0000000;
if (g)
int
concord_name_table_put (CONCORD_NAME_TABLE* table,
- const unsigned char *key, void *value)
+ const char *key, void *value)
{
int i, index;
CONCORD_NAME_TABLE_ENTRY* entry;
if (table == NULL)
return -1;
- index = concord_hash_c_string (key) % table->size;
+ index = concord_hash_c_string ((unsigned char*)key) % table->size;
for (i = index; i < table->size; i++)
{
entry = &table->data[i];
}
void *
-concord_name_table_get (CONCORD_NAME_TABLE* table,
- const unsigned char *key)
+concord_name_table_get (CONCORD_NAME_TABLE* table, const char *key)
{
int i, index;
CONCORD_NAME_TABLE_ENTRY entry;
if (table == NULL)
return NULL;
- index = concord_hash_c_string (key) % table->size;
+ index = concord_hash_c_string ((unsigned char*)key) % table->size;
for (i = index; i < table->size; i++)
{
entry = table->data[i];
}
}
}
+ free (table->data);
table->size = new_table->size;
table->data = new_table->data;
free (new_table);