summaryrefslogtreecommitdiff
path: root/ckcapi-util.h
diff options
context:
space:
mode:
authorStef Walter <stef@memberwebs.com>2008-12-09 03:47:01 +0000
committerStef Walter <stef@memberwebs.com>2008-12-09 03:47:01 +0000
commit94c63a237d77654bab2ea34146b06fd4b0acfc99 (patch)
treee726b7d285dd9f188ba92830355f64b8cba644ab /ckcapi-util.h
parenta71df0e849b4e286f29ae6e26973961d3412cd83 (diff)
Use better and faster hashing of objects.
Diffstat (limited to 'ckcapi-util.h')
-rw-r--r--ckcapi-util.h25
1 files changed, 19 insertions, 6 deletions
diff --git a/ckcapi-util.h b/ckcapi-util.h
index 6ae74a0..59e660c 100644
--- a/ckcapi-util.h
+++ b/ckcapi-util.h
@@ -63,18 +63,31 @@ void ckcapi_array_remove_range (CkCapiArray* array, unsigned int index,
struct _CkCapiHash;
typedef struct _CkCapiHash CkCapiHash;
+typedef unsigned int (*CkCapiHashFunc)(const void* key);
+
+typedef int (*CkCapiHashEqual)(const void* a, const void* b);
+
typedef void (*CkCapiHashDestroy)(void* val);
-CkCapiHash* ckcapi_hash_new (void);
+CkCapiHash* ckcapi_hash_new (CkCapiHashFunc hash_func, CkCapiHashEqual equal_func);
+
+void ckcapi_hash_free (CkCapiHash* ht, CkCapiHashDestroy destroy_func);
+
+size_t ckcapi_hash_count (CkCapiHash* ht);
+
+void* ckcapi_hash_get (CkCapiHash* ht, const void* key);
+
+int ckcapi_hash_set (CkCapiHash* ht, const void* key, void* val);
-void ckcapi_hash_free (CkCapiHash* ht, CkCapiHashDestroy destroy_func);
+void* ckcapi_hash_rem (CkCapiHash* ht, const void* key);
-size_t ckcapi_hash_count (CkCapiHash* ht);
+unsigned int ckcapi_hash_pointer (const void* ptr);
-void* ckcapi_hash_get (CkCapiHash* ht, const void* key, size_t klen);
+unsigned int ckcapi_hash_data (const void* data, size_t n_data);
-int ckcapi_hash_set (CkCapiHash* ht, const void* key, size_t klen, void* val);
+unsigned int ckcapi_hash_integer (int integer);
-void* ckcapi_hash_rem (CkCapiHash* ht, const void* key, size_t klen);
+#define ckcapi_hash_key(num) \
+ (((char*)NULL) + (size_t)(num))
#endif /* __CKCAPI_UTIL_H__ */ \ No newline at end of file