summaryrefslogtreecommitdiff
path: root/lib/hash.h
diff options
context:
space:
mode:
authorSterling Hughes <sterling@bumblebury.com>2002-04-12 23:40:19 +0000
committerSterling Hughes <sterling@bumblebury.com>2002-04-12 23:40:19 +0000
commit9ebcfe9dff762ee1f294b851fd2872fab032455a (patch)
tree0d1787f406132ea2faeb4cb8ad1a72de47b0c71f /lib/hash.h
parentf339bf613cfc16bab12e0c3bd582553f627df546 (diff)
downloadcurl-9ebcfe9dff762ee1f294b851fd2872fab032455a.tar.gz
Speed up the hash code considerably, removing a bunch of legacy crud
Diffstat (limited to 'lib/hash.h')
-rw-r--r--lib/hash.h50
1 files changed, 17 insertions, 33 deletions
diff --git a/lib/hash.h b/lib/hash.h
index ecbcab3bb..6aa71b318 100644
--- a/lib/hash.h
+++ b/lib/hash.h
@@ -29,9 +29,6 @@
#include "llist.h"
-#define CURL_HASH_KEY_IS_STRING 0
-#define CURL_HASH_KEY_IS_NUM 1
-
typedef void (*curl_hash_dtor)(void *);
typedef struct _curl_hash {
@@ -41,45 +38,32 @@ typedef struct _curl_hash {
size_t size;
} curl_hash;
-typedef struct _curl_hash_key {
- union {
- struct {
- char *val;
- unsigned int len;
- } str;
-
- unsigned long num;
- } value;
-
- int type;
-} curl_hash_key;
-
typedef struct _curl_hash_element {
- curl_hash_key key;
- void *ptr;
+ void *ptr;
+ char *key;
+ size_t key_len;
} curl_hash_element;
-void curl_hash_init(curl_hash *h, int slots, curl_hash_dtor dtor);
-curl_hash *curl_hash_alloc(int slots, curl_hash_dtor dtor);
-int curl_hash_add_or_update(curl_hash *h, char *str_key, unsigned int str_key_len,
- unsigned long num_key, const void *p);
-int curl_hash_extended_delete(curl_hash *h, char *str_key, unsigned int str_key_len,
- unsigned long num_key);
-int curl_hash_extended_find(curl_hash *h, char *str_key, unsigned int str_key_len,
- unsigned long num_key, void **p);
+void curl_hash_init(curl_hash *, int, curl_hash_dtor);
+curl_hash *curl_hash_alloc(int, curl_hash_dtor);
+int curl_hash_add(curl_hash *, char *, size_t, const void *);
+int curl_hash_delete(curl_hash *h, char *key, size_t key_len);
+int curl_hash_find(curl_hash *, char *, size_t, void **p);
void curl_hash_apply(curl_hash *h, void *user, void (*cb)(void *, curl_hash_element *));
size_t curl_hash_count(curl_hash *h);
void curl_hash_clean(curl_hash *h);
void curl_hash_destroy(curl_hash *h);
-#define curl_hash_find(h, key, key_len, p) curl_hash_extended_find(h, key, key_len, 0, p)
-#define curl_hash_delete(h, key, key_len) curl_hash_extended_delete(h, key, key_len, 0)
-#define curl_hash_add(h, key, key_len, p) curl_hash_add_or_update(h, key, key_len, 0, p)
#define curl_hash_update curl_hash_add
-#define curl_hash_index_find(h, key, p) curl_hash_extended_find(h, NULL, 0, key, p)
-#define curl_hash_index_delete(h, key) curl_hash_extended_delete(h, NULL, 0, key)
-#define curl_hash_index_add(h, key, p) curl_hash_add_or_update(h, NULL, 0, key, p)
-#define curl_hash_index_update curl_hash_index_add
+
#endif
+
+/*
+ * local variables:
+ * eval: (load-file "../curl-mode.el")
+ * end:
+ * vim600: fdm=marker
+ * vim: et sw=2 ts=2 sts=2 tw=78
+ */