summaryrefslogtreecommitdiff
path: root/src/data/hash.c
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-10-26 12:51:57 +0000
committerPaul Buetow <paul@buetow.org>2008-10-26 12:51:57 +0000
commita1c3f47491b98cd9026f8e853cc9e72630805c12 (patch)
treeec2ea29640b43f2c1f820fd3fee317beec27d130 /src/data/hash.c
parent380eacd0f4037ec00f37ad5b5e4baa18301cf3dd (diff)
added the "scope" function
Diffstat (limited to 'src/data/hash.c')
-rw-r--r--src/data/hash.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/data/hash.c b/src/data/hash.c
index 3c01042..53a1b50 100644
--- a/src/data/hash.c
+++ b/src/data/hash.c
@@ -68,7 +68,7 @@ hash_insert_ht(Hash *p_hash, char *c_key, void *p_val, TYPE type) {
if (p_hash->i_cur_size == p_hash->i_size)
hash_size(p_hash, p_hash->i_size *2);
- int i_addr = hash_getaddr(p_hash, c_key, free_ADDR);
+ int i_addr = hash_getaddr(p_hash, c_key, FREE_ADDR);
if (i_addr == RET_ERROR )
return (RET_NO_SPACE);
@@ -144,7 +144,7 @@ hash_getaddr(Hash *p_hash, char *c_key, HASH_OP OP) {
i_addr = (i_addr *p_hash->i_size + (int) c_key[i]) % p_hash->i_size;
switch (OP) {
- case free_ADDR:
+ case FREE_ADDR:
if (!hash_addrisfree(p_hash,i_addr))
return (i_addr);
break;
@@ -188,7 +188,7 @@ hash_nextaddr(Hash *p_hash, int i_max_tries, char *c_key, int i_addr,
i_addr = (i_addr + 1) % p_hash->i_size;
switch (OP) {
- case free_ADDR:
+ case FREE_ADDR:
if (!hash_addrisfree(p_hash,i_addr))
return (i_addr);
break;
@@ -289,3 +289,10 @@ hash_iterate(Hash *p_hash, void (*func)(void *)) {
if (p_hash->p_elems[i].flag == 'o')
(*func) (p_hash->p_elems[i].p_val);
}
+
+void
+hash_iterate_key(Hash *p_hash, void (*func)(void *, char *)) {
+ for (int i = 0; i < p_hash->i_size; ++i)
+ if (p_hash->p_elems[i].flag == 'o')
+ (*func) (p_hash->p_elems[i].p_val, p_hash->p_elems[i].c_key);
+}