Commit c8c36dd2 authored by Nick Mathewson's avatar Nick Mathewson
Browse files

r9304@dhcp-18-188-67-85: nickm | 2006-10-20 12:22:46 -0400

 Change HT_INIT from a special-case to a macro-calling-a-function like the rest of ht.h.  This might prevent errors if somebody did, I dunno, "HT_INIT(tp, hashtable++)". Based on a patch from Watson Ladd.


svn:r8776
parent 2d7cf75e
...@@ -675,7 +675,7 @@ strmap_new(void) ...@@ -675,7 +675,7 @@ strmap_new(void)
{ {
strmap_t *result; strmap_t *result;
result = tor_malloc(sizeof(strmap_t)); result = tor_malloc(sizeof(strmap_t));
HT_INIT(&result->head); HT_INIT(strmap_impl, &result->head);
return result; return result;
} }
...@@ -686,7 +686,7 @@ digestmap_new(void) ...@@ -686,7 +686,7 @@ digestmap_new(void)
{ {
digestmap_t *result; digestmap_t *result;
result = tor_malloc(sizeof(digestmap_t)); result = tor_malloc(sizeof(digestmap_t));
HT_INIT(&result->head); HT_INIT(digestmap_impl, &result->head);
return result; return result;
} }
......
...@@ -26,14 +26,6 @@ ...@@ -26,14 +26,6 @@
#define HT_INITIALIZER() \ #define HT_INITIALIZER() \
{ NULL, 0, 0, 0, -1 } { NULL, 0, 0, 0, -1 }
#define HT_INIT(root) do { \
(root)->hth_table_length = 0; \
(root)->hth_table = NULL; \
(root)->hth_n_entries = 0; \
(root)->hth_load_limit = 0; \
(root)->hth_prime_idx = -1; \
} while (0)
#define HT_ENTRY(type) \ #define HT_ENTRY(type) \
struct { \ struct { \
struct type *hte_next; \ struct type *hte_next; \
...@@ -59,7 +51,7 @@ ...@@ -59,7 +51,7 @@
#define HT_NEXT(name, head, elm) name##_HT_NEXT((head), (elm)) #define HT_NEXT(name, head, elm) name##_HT_NEXT((head), (elm))
#define HT_NEXT_RMV(name, head, elm) name##_HT_NEXT_RMV((head), (elm)) #define HT_NEXT_RMV(name, head, elm) name##_HT_NEXT_RMV((head), (elm))
#define HT_CLEAR(name, head) name##_HT_CLEAR(head) #define HT_CLEAR(name, head) name##_HT_CLEAR(head)
#define HT_INIT(name, head) name##_HT_INIT(head)
/* Helper: */ /* Helper: */
static INLINE unsigned static INLINE unsigned
ht_improve_hash(unsigned h) ht_improve_hash(unsigned h)
...@@ -100,6 +92,14 @@ ht_string_hash(const char *s) ...@@ -100,6 +92,14 @@ ht_string_hash(const char *s)
int name##_HT_GROW(struct name *ht, unsigned min_capacity); \ int name##_HT_GROW(struct name *ht, unsigned min_capacity); \
void name##_HT_CLEAR(struct name *ht); \ void name##_HT_CLEAR(struct name *ht); \
int _##name##_HT_REP_IS_BAD(struct name *ht); \ int _##name##_HT_REP_IS_BAD(struct name *ht); \
static INLINE void \
name##_HT_INIT(struct name *head) { \
head->hth_table_length = 0; \
head->hth_table = NULL; \
head->hth_n_entries = 0; \
head->hth_load_limit = 0; \
head->hth_prime_idx = -1; \
} \
/* Helper: returns a pointer to the right location in the table \ /* Helper: returns a pointer to the right location in the table \
* 'head' to find or insert the element 'elm'. */ \ * 'head' to find or insert the element 'elm'. */ \
static INLINE struct type ** \ static INLINE struct type ** \
...@@ -344,7 +344,7 @@ ht_string_hash(const char *s) ...@@ -344,7 +344,7 @@ ht_string_hash(const char *s)
if (head->hth_table) \ if (head->hth_table) \
freefn(head->hth_table); \ freefn(head->hth_table); \
head->hth_table_length = 0; \ head->hth_table_length = 0; \
HT_INIT(head); \ name##_HT_INIT(head); \
} \ } \
/* Debugging helper: return false iff the representation of 'head' is \ /* Debugging helper: return false iff the representation of 'head' is \
* internally consistent. */ \ * internally consistent. */ \
......
...@@ -162,7 +162,7 @@ HT_GENERATE(cache_map, cached_resolve_t, node, cached_resolve_hash, ...@@ -162,7 +162,7 @@ HT_GENERATE(cache_map, cached_resolve_t, node, cached_resolve_hash,
static void static void
init_cache_map(void) init_cache_map(void)
{ {
HT_INIT(&cache_root); HT_INIT(cache_map, &cache_root);
} }
#ifdef USE_EVENTDNS #ifdef USE_EVENTDNS
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment