summaryrefslogtreecommitdiff
path: root/src/htshash.c
diff options
context:
space:
mode:
authorXavier Roche <xroche@users.noreply.github.com>2014-06-10 16:37:44 +0000
committerXavier Roche <xroche@users.noreply.github.com>2014-06-10 16:37:44 +0000
commit93ae992d7bc8820abb5806bb46082fc5c1e29eb9 (patch)
treec8851aa17937a21c0ca1b4ece4a884a95f40186b /src/htshash.c
parent49dd329a09e1e2546d00f23e561dfc553a9c4e12 (diff)
Changed hashtable types to have either opaque void*, or unions.
Diffstat (limited to 'src/htshash.c')
-rw-r--r--src/htshash.c69
1 files changed, 42 insertions, 27 deletions
diff --git a/src/htshash.c b/src/htshash.c
index 8cc2f1f..8ce5f77 100644
--- a/src/htshash.c
+++ b/src/htshash.c
@@ -60,44 +60,50 @@ Please visit our Website: http://www.httrack.com
// recherche dans la table selon nom1,nom2 et le no d'enregistrement
/* Key free handler (NOOP) ; addresses are kept */
-static void key_freehandler(void *arg, void *value) {
+static void key_freehandler(void *arg, inthash_key value) {
}
/* Key strdup (pointer copy) */
-static char* key_duphandler(void *arg, const char *name) {
+static inthash_key key_duphandler(void *arg, inthash_key_const name) {
union {
- const char *roname;
- char *name;
+ inthash_key_const roname;
+ inthash_key name;
} u;
u.roname = name;
return u.name;
}
/* Key sav hashes are using case-insensitive version */
-static inthash_keys key_sav_hashes(void *arg, const char *value) {
+static inthash_hashkeys key_sav_hashes(void *arg, inthash_key_const key) {
hash_struct *const hash = (hash_struct*) arg;
- convtolower(hash->catbuff, value);
- return inthash_hash_value(hash->catbuff);
+ convtolower(hash->catbuff, (const char*) key);
+ return inthash_hash_string(hash->catbuff);
}
/* Key sav comparison is case-insensitive */
-static int key_sav_equals(void *arg, const char *a, const char *b) {
+static int key_sav_equals(void *arg,
+ inthash_key_const a_,
+ inthash_key_const b_) {
+ const char *const a = (const char*) a_;
+ const char *const b = (const char*) b_;
return strcasecmp(a, b) == 0;
}
-static const char* key_sav_debug_print(void *arg, const char *a) {
- return a;
+static const char* key_sav_debug_print(void *arg,
+ inthash_key_const a) {
+ return (const char*) a;
}
-static const char* value_sav_debug_print(void *arg, void *a) {
- return (char*) a;
+static const char* value_sav_debug_print(void *arg, inthash_value_const a) {
+ return (char*) a.ptr;
}
/* Pseudo-key (lien_url structure) hash function */
-static inthash_keys key_adrfil_hashes_generic(void *arg, const char *value_,
+static inthash_hashkeys key_adrfil_hashes_generic(void *arg,
+ inthash_key_const value,
const int former) {
hash_struct *const hash = (hash_struct*) arg;
- const lien_url*const lien = (lien_url*) value_;
+ const lien_url*const lien = (lien_url*) value;
const char *const adr = !former ? lien->adr : lien->former_adr;
const char *const fil = !former ? lien->fil : lien->former_fil;
const char *const adr_norm = adr != NULL ?
@@ -117,11 +123,13 @@ static inthash_keys key_adrfil_hashes_generic(void *arg, const char *value_,
}
// hash
- return inthash_hash_value(hash->normfil);
+ return inthash_hash_string(hash->normfil);
}
/* Pseudo-key (lien_url structure) comparison function */
-static int key_adrfil_equals_generic(void *arg, const char *a_, const char *b_,
+static int key_adrfil_equals_generic(void *arg,
+ inthash_key_const a_,
+ inthash_key_const b_,
const int former) {
hash_struct *const hash = (hash_struct*) arg;
const int normalized = hash->normalized;
@@ -159,7 +167,9 @@ static int key_adrfil_equals_generic(void *arg, const char *a_, const char *b_,
}
}
-static const char* key_adrfil_debug_print_(void *arg, const char *a_, const int former) {
+static const char* key_adrfil_debug_print_(void *arg,
+ inthash_key_const a_,
+ const int former) {
hash_struct *const hash = (hash_struct*) arg;
const lien_url*const a = (lien_url*) a_;
const char *const a_adr = !former ? a->adr : a->former_adr;
@@ -168,39 +178,44 @@ static const char* key_adrfil_debug_print_(void *arg, const char *a_, const int
return hash->normfil;
}
-static const char* key_adrfil_debug_print(void *arg, const char *a_) {
+static const char* key_adrfil_debug_print(void *arg,
+ inthash_key_const a_) {
return key_adrfil_debug_print_(arg, a_, 0);
}
-static const char* key_former_adrfil_debug_print(void *arg, const char *a_) {
+static const char* key_former_adrfil_debug_print(void *arg,
+ inthash_key_const a_) {
return key_adrfil_debug_print_(arg, a_, 1);
}
-static const char* value_adrfil_debug_print(void *arg, void *value) {
+static const char* value_adrfil_debug_print(void *arg,
+ inthash_value_const value) {
hash_struct *const hash = (hash_struct*) arg;
- inthash_value v;
- v.ptr = value;
- snprintf(hash->normfil2, sizeof(hash->normfil2), "%d", (int) v.intg);
+ snprintf(hash->normfil2, sizeof(hash->normfil2), "%d", (int) value.intg);
return hash->normfil2;
}
/* "adr"/"fil" lien_url structure members hashing function */
-static inthash_keys key_adrfil_hashes(void *arg, const char *value_) {
+static inthash_hashkeys key_adrfil_hashes(void *arg, inthash_key_const value_) {
return key_adrfil_hashes_generic(arg, value_, 0);
}
/* "adr"/"fil" lien_url structure members comparison function */
-static int key_adrfil_equals(void *arg, const char *a, const char *b) {
+static int key_adrfil_equals(void *arg,
+ inthash_key_const a,
+ inthash_key_const b) {
return key_adrfil_equals_generic(arg, a, b, 0);
}
/* "former_adr"/"former_fil" lien_url structure members hashing function */
-static inthash_keys key_former_adrfil_hashes(void *arg, const char *value_) {
+static inthash_hashkeys key_former_adrfil_hashes(void *arg, inthash_key_const value_) {
return key_adrfil_hashes_generic(arg, value_, 1);
}
/* "former_adr"/"former_fil" lien_url structure members comparison function */
-static int key_former_adrfil_equals(void *arg, const char *a, const char *b) {
+static int key_former_adrfil_equals(void *arg,
+ inthash_key_const a,
+ inthash_key_const b) {
return key_adrfil_equals_generic(arg, a, b, 1);
}