*
* It also defines initialization and freeing functions:
* void <name>_init(struct <name> *);
+ * void <name>_init_sized(struct <name> *, size_t);
* void <name>_clear(struct <name> *);
*
* Add function only fails if we run out of memory:
*
* It's currently safe to iterate over a changing hashtable, but you might
* miss an element. Iteration isn't very efficient, either.
+ *
+ * You can use HTABLE_INITIALIZER like so:
+ * struct <name> ht = { HTABLE_INITIALIZER(ht.raw, <name>_hash, NULL) };
*/
#define HTABLE_DEFINE_TYPE(type, keyof, hashfn, eqfn, name) \
struct name { struct htable raw; }; \
{ \
htable_init(&ht->raw, name##_hash, NULL); \
} \
+ static inline void name##_init_sized(struct name *ht, size_t s) \
+ { \
+ htable_init_sized(&ht->raw, name##_hash, NULL, s); \
+ } \
static inline void name##_clear(struct name *ht) \
{ \
htable_clear(&ht->raw); \