Added string hash/compare functions.
--- a/mojoshader_common.c Sun Apr 05 03:31:52 2009 -0400
+++ b/mojoshader_common.c Sun Apr 05 03:32:33 2009 -0400
@@ -134,5 +134,21 @@
return 0;
} // hash_remove
+
+// this is djb's xor hashing function.
+uint32 hash_hash_string(const void *_sym)
+{
+ register const char *sym = (const char *) _sym;
+ register uint32 hash = 5381;
+ while (*sym)
+ hash = ((hash << 5) + hash) ^ *(sym++);
+ return hash;
+} // hash_hash_string
+
+int hash_keymatch_string(const void *a, const void *b)
+{
+ return (strcmp((const char *) a, (const char *) b) == 0);
+} // hash_keymatch_string
+
// end of mojoshader_common.c ...
--- a/mojoshader_internal.h Sun Apr 05 03:31:52 2009 -0400
+++ b/mojoshader_internal.h Sun Apr 05 03:32:33 2009 -0400
@@ -143,6 +143,8 @@
int hash_remove(HashTable *table, const void *key);
int hash_find(const HashTable *table, const void *key, const void **_value);
+uint32 hash_hash_string(const void *sym);
+int hash_keymatch_string(const void *a, const void *b);
// This is the ID for a D3DXSHADER_CONSTANTTABLE in the bytecode comments.
#define CTAB_ID 0x42415443 // 0x42415443 == 'CTAB'