git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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 */
Previous: Jeff KingNext: Jeff King
Message 31 of 37 in “Test oidmap”
  1. 0/4 Test oidmapChristian Couder, Jun 15, 2019
  2. 1/4 t/helper: add test-oidmap.cChristian Couder, Jun 15, 2019
  3. 3/4 oidmap: use sha1hash() instead of static hash() functionChristian Couder, Jun 15, 2019
  4. 2/4 t: add t0016-oidmap.shChristian Couder, Jun 15, 2019
  5. 4/4 test-hashmap: remove 'hash' commandChristian Couder, Jun 15, 2019
  6. Jeff KingJun 19, 2019
  7. Jeff KingJun 19, 2019
  8. Christian CouderJun 19, 2019
  9. 0/17 drop non-object_id hashingJeff King, Jun 20, 2019
  10. 01/17 describe: fix accidental oid/hash type-punningJeff King, Jun 20, 2019
  11. Junio C HamanoJun 20, 2019
  12. Jeff KingJun 20, 2019
  13. 02/17 upload-pack: rename a "sha1" variable to "oid"Jeff King, Jun 20, 2019
  14. 03/17 pack-bitmap-write: convert some helpers to use object_idJeff King, Jun 20, 2019
  15. 04/17 pack-objects: convert packlist_find() to use object_idJeff King, Jun 20, 2019
  16. 05/17 pack-objects: convert locate_object_entry_hash() to object_idJeff King, Jun 20, 2019
  17. 06/17 object: convert lookup_unknown_object() to use object_idJeff King, Jun 20, 2019
  18. 07/17 object: convert lookup_object() to use object_idJeff King, Jun 20, 2019
  19. 08/17 object: convert internal hash_obj() to object_idJeff King, Jun 20, 2019
  20. 09/17 object: convert create_object() to use object_idJeff King, Jun 20, 2019
  21. Ramsay JonesJun 20, 2019
  22. Jeff KingJun 20, 2019
  23. 10/17 khash: drop broken oid_map typedefJeff King, Jun 20, 2019
  24. 11/17 khash: rename kh_oid_t to kh_oid_setJeff King, Jun 20, 2019
  25. 12/17 delta-islands: convert island_marks khash to use oidsJeff King, Jun 20, 2019
  26. Jonathan TanJun 20, 2019
  27. Jeff KingJun 20, 2019
  28. 13/17 pack-bitmap: convert khash_sha1 maps into kh_oid_mapJeff King, Jun 20, 2019
  29. 14/17 khash: drop sha1-specific map typesJeff King, Jun 20, 2019
  30. 15/17 khash: rename oid helper functionsJeff King, Jun 20, 2019
  31. Junio C HamanoJun 20, 2019
  32. Jeff KingJun 20, 2019
  33. René ScharfeJun 23, 2019
  34. Jeff KingJun 23, 2019
  35. 16/17 hash.h: move object_id definition from cache.hJeff King, Jun 20, 2019
  36. Junio C HamanoJun 20, 2019
  37. 17/17 hashmap: convert sha1hash() to oidhash()Jeff King, Jun 20, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.