diff options
author | Sterling Hughes <sterling@bumblebury.com> | 2002-04-12 23:40:19 +0000 |
---|---|---|
committer | Sterling Hughes <sterling@bumblebury.com> | 2002-04-12 23:40:19 +0000 |
commit | 9ebcfe9dff762ee1f294b851fd2872fab032455a (patch) | |
tree | 0d1787f406132ea2faeb4cb8ad1a72de47b0c71f /lib/hash.h | |
parent | f339bf613cfc16bab12e0c3bd582553f627df546 (diff) | |
download | curl-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.h | 50 |
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 + */ |