]> git.ozlabs.org Git - ccan/blobdiff - ccan/htable/htable_type.h
htable: add pre-sized option.
[ccan] / ccan / htable / htable_type.h
index 3b555cde4aaadd183d6e196ac50986d11fdc58d7..ad3974c5e446dc74be147371d74dafb09feea631 100644 (file)
@@ -20,6 +20,7 @@
  *
  * 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:
@@ -38,6 +39,9 @@
  *
  * 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);                                 \