]> git.xonotic.org Git - voretournament/voretournament.git/blobdiff - misc/source/fteqcc-src/hash.h
Latest fteqcc and netradiant sources
[voretournament/voretournament.git] / misc / source / fteqcc-src / hash.h
index 778e67a571d967d42942d22f4500ef89b2f7baae..e07c17d2278b60f780bfb85086f7533535738b96 100644 (file)
@@ -5,34 +5,35 @@
 #ifndef HASH_H__
 #define HASH_H__
 
-#define Hash_BytesForBuckets(b) (sizeof(bucket_t)*b)
+#define Hash_BytesForBuckets(b) (sizeof(bucket_t*)*(b))
 
 #define STRCMP(s1,s2) (((*s1)!=(*s2)) || strcmp(s1+1,s2+1))    //saves about 2-6 out of 120 - expansion of idea from fastqcc
 typedef struct bucket_s {
        void *data;
        union {
                const char *string;
-               int value;
+               unsigned int value;
        } key;
        struct bucket_s *next;
 } bucket_t;
 typedef struct hashtable_s {
-       int numbuckets;
+       unsigned int numbuckets;
        bucket_t **bucket;
 } hashtable_t;
 
-void Hash_InitTable(hashtable_t *table, int numbucks, void *mem);      //mem must be 0 filled. (memset(mem, 0, size))
-int Hash_Key(const char *name, int modulus);
+void Hash_InitTable(hashtable_t *table, unsigned int numbucks, void *mem);     //mem must be 0 filled. (memset(mem, 0, size))
+unsigned int Hash_Key(const char *name, unsigned int modulus);
 void *Hash_Get(hashtable_t *table, const char *name);
 void *Hash_GetInsensative(hashtable_t *table, const char *name);
-void *Hash_GetKey(hashtable_t *table, int key);
-void *Hash_GetNext(hashtable_t *table, char *name, void *old);
-void *Hash_GetNextInsensative(hashtable_t *table, char *name, void *old);
-void *Hash_Add(hashtable_t *table, char *name, void *data, bucket_t *buck);
-void *Hash_AddInsensative(hashtable_t *table, char *name, void *data, bucket_t *buck);
-void Hash_Remove(hashtable_t *table, char *name);
-void Hash_RemoveData(hashtable_t *table, char *name, void *data);
-void Hash_RemoveKey(hashtable_t *table, int key);
-void *Hash_AddKey(hashtable_t *table, int key, void *data, bucket_t *buck);
+void *Hash_GetKey(hashtable_t *table, unsigned int key);
+void *Hash_GetNext(hashtable_t *table, const char *name, void *old);
+void *Hash_GetNextInsensative(hashtable_t *table, const char *name, void *old);
+void *Hash_GetNextKey(hashtable_t *table, unsigned int key, void *old);
+void *Hash_Add(hashtable_t *table, const char *name, void *data, bucket_t *buck);
+void *Hash_AddInsensative(hashtable_t *table, const char *name, void *data, bucket_t *buck);
+void Hash_Remove(hashtable_t *table, const char *name);
+void Hash_RemoveData(hashtable_t *table, const char *name, void *data);
+void Hash_RemoveKey(hashtable_t *table, unsigned int key);
+void *Hash_AddKey(hashtable_t *table, unsigned int key, void *data, bucket_t *buck);
 
 #endif