X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fhtable%2Fhtable.h;h=938b43afc89ce5a6603c45761da17d26b748475e;hb=e16aa40bed387c9575bc9c5d1b19ecca0e9cbda7;hp=53c447c09b952b198913efa25a48b82d34777242;hpb=b6e8d929d2c0c37afc840ac99e3e0f469e33e6c0;p=ccan diff --git a/ccan/htable/htable.h b/ccan/htable/htable.h index 53c447c0..938b43af 100644 --- a/ccan/htable/htable.h +++ b/ccan/htable/htable.h @@ -24,11 +24,10 @@ struct htable { size_t (*rehash)(const void *elem, void *priv); void *priv; - unsigned int bits; - size_t elems, deleted, max, max_with_deleted; + unsigned int bits, perfect_bitnum; + size_t elems, deleted; /* These are the bits which are the same in all pointers. */ uintptr_t common_mask, common_bits; - uintptr_t perfect_bit; uintptr_t *table; }; @@ -50,7 +49,7 @@ struct htable { * static struct htable ht = HTABLE_INITIALIZER(ht, rehash, NULL); */ #define HTABLE_INITIALIZER(name, rehash, priv) \ - { rehash, priv, 0, 0, 0, 0, 0, -1, 0, 0, &name.perfect_bit } + { rehash, priv, 0, 0, 0, 0, -1, 0, &name.common_bits } /** * htable_init - initialize an empty hash table. @@ -259,4 +258,11 @@ void *htable_prev_(const struct htable *htable, struct htable_iter *i); htable_delval_(htable_debug(htable, HTABLE_LOC), i) void htable_delval_(struct htable *ht, struct htable_iter *i); +/** + * htable_set_allocator - set calloc/free functions. + * @alloc: allocator to use, must zero memory! + * @free: unallocator to use (@p is NULL or a return from @alloc) + */ +void htable_set_allocator(void *(*alloc)(struct htable *, size_t len), + void (*free)(struct htable *, void *p)); #endif /* CCAN_HTABLE_H */