Re: [PATCH 15/17] khash: rename oid helper functions
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jun 20, 2019, 17:44 UTC
- Message-ID
- <xmqqwohgnocu.fsf@gitster-ct.c.googlers.com>
- In-Reply-To
- <20190620074141.GO3713@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 12 quoted lines
> 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-<.
Show 35 quoted lines
> Signed-off-by: Jeff King <peff@peff.net>
> ---
> 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 */