Jeff King <peff@xxxxxxxx> writes: > For use in object_id hash tables, we have oid_hash() and oid_equal(). > But these are confusingly similar to the existing oideq() and the > oidhash() we plan to add to replace sha1hash(). > > The big difference from those functions is that rather than accepting a > const pointer to the "struct object_id", we take the arguments by value > (which is a khash internal convention). So let's make that obvious by > calling them oidhash_by_value() and oideq_by_value(). > > Those names are fairly horrendous to type, but we rarely need to do so; > they are passed to the khash implementation macro and then only used > internally. Callers get to use the nice kh_put_oid_map(), etc. The pass-by-value interface feels a bit unforunate but hopefully "static inline" would help us avoid actually copying the struct left and right as we make calls to them X-<. > Signed-off-by: Jeff King <peff@xxxxxxxx> > --- > khash.h | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/khash.h b/khash.h > index cb2cd3d7e4..f911d2b005 100644 > --- a/khash.h > +++ b/khash.h > @@ -324,20 +324,20 @@ static const double __ac_HASH_UPPER = 0.77; > code; \ > } } > > -static inline unsigned int oid_hash(struct object_id oid) > +static inline unsigned int oidhash_by_value(struct object_id oid) > { > return sha1hash(oid.hash); > } > > -static inline int oid_equal(struct object_id a, struct object_id b) > +static inline int oideq_by_value(struct object_id a, struct object_id b) > { > return oideq(&a, &b); > } > > -KHASH_INIT(oid_set, struct object_id, int, 0, oid_hash, oid_equal) > +KHASH_INIT(oid_set, struct object_id, int, 0, oidhash_by_value, oideq_by_value) > > -KHASH_INIT(oid_map, struct object_id, void *, 1, oid_hash, oid_equal) > +KHASH_INIT(oid_map, struct object_id, void *, 1, oidhash_by_value, oideq_by_value) > > -KHASH_INIT(oid_pos, struct object_id, int, 1, oid_hash, oid_equal) > +KHASH_INIT(oid_pos, struct object_id, int, 1, oidhash_by_value, oideq_by_value) > > #endif /* __AC_KHASH_H */