cleanup of BD style game elements in level editor
[rocksndiamonds.git] / src / libgame / setup.c
index b419875a580e8fd1f87eab476ec4b496f232db7c..4027a6e065a4f23823b7c1050345a08330c9b6a7 100644 (file)
@@ -725,7 +725,7 @@ char *getScoreTapeBasename(char *name)
 
   sprintf(timestamp, "%s", getCurrentTimestamp());
   sprintf(basename_raw, "%s-%s", timestamp, name);
-  sprintf(basename, "%s-%08x", timestamp, get_hash_from_key(basename_raw));
+  sprintf(basename, "%s-%08x", timestamp, get_hash_from_string(basename_raw));
 
   return basename;
 }
@@ -2281,7 +2281,7 @@ DEFINE_HASHTABLE_REMOVE(remove_hash_entry, char, char);
 #define remove_hash_entry hashtable_remove
 #endif
 
-unsigned int get_hash_from_key(void *key)
+unsigned int get_hash_from_string(void *key)
 {
   /*
     djb2
@@ -2311,15 +2311,27 @@ unsigned int get_hash_from_key(void *key)
   return hash;
 }
 
-int hash_keys_are_equal(void *key1, void *key2)
+unsigned int get_hash_from_integer(void *key)
+{
+  unsigned int hash = PTR_TO_UINT(key);
+
+  return hash;
+}
+
+int hash_key_strings_are_equal(void *key1, void *key2)
 {
   return (strEqual((char *)key1, (char *)key2));
 }
 
+int hash_key_integers_are_equal(void *key1, void *key2)
+{
+  return (key1 == key2);
+}
+
 SetupFileHash *newSetupFileHash(void)
 {
   SetupFileHash *new_hash =
-    create_hashtable(16, 0.75, get_hash_from_key, hash_keys_are_equal);
+    create_hashtable(get_hash_from_string, hash_key_strings_are_equal, free, free);
 
   if (new_hash == NULL)
     Fail("create_hashtable() failed -- out of memory");
@@ -2332,7 +2344,7 @@ void freeSetupFileHash(SetupFileHash *hash)
   if (hash == NULL)
     return;
 
-  hashtable_destroy(hash, 1);  // 1 == also free values stored in hash
+  hashtable_destroy(hash);
 }
 
 char *getHashEntry(SetupFileHash *hash, char *token)
@@ -2358,12 +2370,12 @@ void setHashEntry(SetupFileHash *hash, char *token, char *value)
       Fail("cannot insert into hash -- aborting");
 }
 
-char *removeHashEntry(SetupFileHash *hash, char *token)
+void removeHashEntry(SetupFileHash *hash, char *token)
 {
   if (hash == NULL)
-    return NULL;
+    return;
 
-  return remove_hash_entry(hash, token);
+  remove_hash_entry(hash, token);
 }
 
 #if ENABLE_UNUSED_CODE