X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fhtable%2Fhtable_type.h;h=0aacb7f334925ffe58d2c8cb489a9ae0efe36b66;hb=1d14555d3a4501adae909884bcb8f8a0b142c89c;hp=de4cd471404f1d4f22a4e184366a0efe9934da7c;hpb=209a81909942a07cb334d6dcae7626a3ecde141d;p=ccan diff --git a/ccan/htable/htable_type.h b/ccan/htable/htable_type.h index de4cd471..0aacb7f3 100644 --- a/ccan/htable/htable_type.h +++ b/ccan/htable/htable_type.h @@ -35,6 +35,9 @@ * bool _del(struct *ht, const *e); * bool _delkey(struct *ht, const *k); * + * Delete by iterator: + * bool _delval(struct *ht, struct _iter *i); + * * Find and return the (first) matching element, or NULL: * type *_get(const struct @name *ht, const *k); * @@ -147,12 +150,16 @@ return name##_del(ht, elem); \ return false; \ } \ - static inline UNNEEDED bool name##_pick(const struct name *ht, \ + static inline UNNEEDED void name##_delval(struct name *ht, \ + struct name##_iter *iter) \ + { \ + htable_delval(&ht->raw, &iter->i); \ + } \ + static inline UNNEEDED type *name##_pick(const struct name *ht, \ size_t seed, \ struct name##_iter *iter) \ { \ - /* Note &iter->i == NULL iff iter is NULL */ \ - return htable_pick(&ht->raw, seed, &iter->i); \ + return htable_pick(&ht->raw, seed, iter ? &iter->i : NULL); \ } \ static inline UNNEEDED type *name##_first(const struct name *ht, \ struct name##_iter *iter) \