diff options
author | David Robillard <d@drobilla.net> | 2011-09-28 21:31:44 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2011-09-28 21:31:44 +0000 |
commit | db7df61c02f28a86ebf496436d34a2d327c3ae30 (patch) | |
tree | 961b0f00f87155c03e50ff78ccc6518676fabaed /src/zix/hash.h | |
parent | 84ad1bf1317992127aac405feedbfd68c7be6697 (diff) | |
download | sord-db7df61c02f28a86ebf496436d34a2d327c3ae30.tar.gz sord-db7df61c02f28a86ebf496436d34a2d327c3ae30.tar.bz2 sord-db7df61c02f28a86ebf496436d34a2d327c3ae30.zip |
Remove glib dependency
git-svn-id: http://svn.drobilla.net/sord/trunk@163 3d64ff67-21c5-427c-a301-fe4f08042e5a
Diffstat (limited to 'src/zix/hash.h')
-rw-r--r-- | src/zix/hash.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/src/zix/hash.h b/src/zix/hash.h new file mode 100644 index 0000000..44521f1 --- /dev/null +++ b/src/zix/hash.h @@ -0,0 +1,75 @@ +/* + Copyright 2011 David Robillard <http://drobilla.net> + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +#ifndef ZIX_HASH_H +#define ZIX_HASH_H + +#include "zix/common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ZixHashImpl ZixHash; + +/** + Function for computing the hash of an element. +*/ +typedef unsigned (*ZixHashFunc)(const void* key); + +ZIX_API +ZixHash* +zix_hash_new(ZixHashFunc hash_func, + ZixEqualFunc key_equal_func); + +ZIX_API +void +zix_hash_free(ZixHash* hash); + +ZIX_API +unsigned +zix_string_hash(const void* key); + +ZIX_API +bool +zix_string_equal(const void* a, const void* b); + +ZIX_API +ZixStatus +zix_hash_insert(ZixHash* hash, + const void* key, + void* data); + +ZIX_API +ZixStatus +zix_hash_remove(ZixHash* hash, const void* key); + +ZIX_API +void* +zix_hash_find(const ZixHash* hash, + const void* key); + +ZIX_API +void +zix_hash_foreach(const ZixHash* hash, + void (*f)(const void* key, void* value, void* user_data), + void* user_data); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* ZIX_HASH_H */ |