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

[PATCH v2 02/35] khash: move oid hash table definition

From
brian m. carlson <sandals@crustytoothpaste.net>
Date
Feb 19, 2019, 00:04 UTC
Message-ID
<20190219000526.476553-3-sandals@crustytoothpaste.net>
In-Reply-To
<20190219000526.476553-1-sandals@crustytoothpaste.net>

Move the oid khash table definition to khash.h and define a typedef for it, similar to the one we have for unsigned char pointers. Define variants that are maps as well.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 khash.h  | 18 ++++++++++++++++++
 oidset.h | 12 ------------
 2 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/khash.h b/khash.h
index 532109c87f..a09163b3e3 100644
--- a/khash.h
+++ b/khash.h
@@ -332,4 +332,22 @@ typedef kh_sha1_t khash_sha1;
 KHASH_INIT(sha1_pos, const unsigned char *, int, 1, sha1hash, __kh_oid_cmp)
 typedef kh_sha1_pos_t khash_sha1_pos;
 
+static inline unsigned int oid_hash(struct object_id oid)
+{
+	return sha1hash(oid.hash);
+}
+
+static inline int oid_equal(struct object_id a, struct object_id b)
+{
+	return oideq(&a, &b);
+}
+
+KHASH_INIT(oid, struct object_id, int, 0, oid_hash, oid_equal)
+
+KHASH_INIT(oid_map, struct object_id, void *, 1, oid_hash, oid_equal)
+typedef kh_oid_t khash_oid_map;
+
+KHASH_INIT(oid_pos, struct object_id, int, 1, oid_hash, oid_equal)
+typedef kh_oid_pos_t khash_oid_pos;
+
 #endif /* __AC_KHASH_H */
diff --git a/oidset.h b/oidset.h
index c9d0f6d3cc..14f18f791f 100644
--- a/oidset.h
+++ b/oidset.h
@@ -16,18 +16,6 @@
  *      table overhead.
  */
 
-static inline unsigned int oid_hash(struct object_id oid)
-{
-	return sha1hash(oid.hash);
-}
-
-static inline int oid_equal(struct object_id a, struct object_id b)
-{
-	return oideq(&a, &b);
-}
-
-KHASH_INIT(oid, struct object_id, int, 0, oid_hash, oid_equal)
-
 /**
  * A single oidset; should be zero-initialized (or use OIDSET_INIT).
  */
Previous: brian m. carlsonNext: brian m. carlson
Message 3 of 36 in “Hash function transition part 16”
  1. 00/35 Hash function transition part 16brian m. carlson, Feb 19, 2019
  2. 01/35 t/lib-submodule-update: use appropriate length constantbrian m. carlson, Feb 19, 2019
  3. 02/35 khash: move oid hash table definitionbrian m. carlson, Feb 19, 2019
  4. 03/35 pack-bitmap: make bitmap header handling hash agnosticbrian m. carlson, Feb 19, 2019
  5. 06/35 pack-bitmap: switch hard-coded constants to the_hash_algobrian m. carlson, Feb 19, 2019
  6. 05/35 pack-bitmap: replace sha1_to_hexbrian m. carlson, Feb 19, 2019
  7. 07/35 pack-bitmap: switch hash tables to use struct object_idbrian m. carlson, Feb 19, 2019
  8. 09/35 notes-merge: switch to use the_hash_algobrian m. carlson, Feb 19, 2019
  9. 08/35 submodule: avoid hard-coded constantsbrian m. carlson, Feb 19, 2019
  10. 11/35 notes: replace sha1_to_hexbrian m. carlson, Feb 19, 2019
  11. 14/35 fast-import: make hash-size independentbrian m. carlson, Feb 19, 2019
  12. 17/35 builtin/pull: make hash-size independentbrian m. carlson, Feb 19, 2019
  13. 15/35 fast-import: replace sha1_to_hexbrian m. carlson, Feb 19, 2019
  14. 12/35 object-store: rename and expand packed_git's sha1 memberbrian m. carlson, Feb 19, 2019
  15. 19/35 http-backend: allow 64-character hex namesbrian m. carlson, Feb 19, 2019
  16. 18/35 http-push: convert to use the_hash_algobrian m. carlson, Feb 19, 2019
  17. 21/35 http-walker: replace sha1_to_hexbrian m. carlson, Feb 19, 2019
  18. 22/35 http: replace hard-coded constant with the_hash_algobrian m. carlson, Feb 19, 2019
  19. 20/35 http-push: remove remaining uses of sha1_to_hexbrian m. carlson, Feb 19, 2019
  20. 23/35 http: compute hash of downloaded objects using the_hash_algobrian m. carlson, Feb 19, 2019
  21. 24/35 http: replace sha1_to_hexbrian m. carlson, Feb 19, 2019
  22. 25/35 remote-curl: make hash size independentbrian m. carlson, Feb 19, 2019
  23. 26/35 hash: add a function to lookup hash algorithm by lengthbrian m. carlson, Feb 19, 2019
  24. 30/35 refspec: make hash size independentbrian m. carlson, Feb 19, 2019
  25. 27/35 get-tar-commit-id: parse comment recordbrian m. carlson, Feb 19, 2019
  26. 29/35 archive: convert struct archiver_args to object_idbrian m. carlson, Feb 19, 2019
  27. 34/35 Git.pm: make hash size independentbrian m. carlson, Feb 19, 2019
  28. 33/35 read-cache: read data in a hash-independent waybrian m. carlson, Feb 19, 2019
  29. 31/35 builtin/difftool: use parse_oid_hexbrian m. carlson, Feb 19, 2019
  30. 35/35 gitweb: make hash size independentbrian m. carlson, Feb 19, 2019
  31. 32/35 dir: make untracked cache extension hash size independentbrian m. carlson, Feb 19, 2019
  32. 16/35 builtin/am: make hash size independentbrian m. carlson, Feb 19, 2019
  33. 28/35 builtin/get-tar-commit-id: make hash size independentbrian m. carlson, Feb 19, 2019
  34. 13/35 builtin/name-rev: make hash-size independentbrian m. carlson, Feb 19, 2019
  35. 04/35 pack-bitmap: convert struct stored_bitmap to object_idbrian m. carlson, Feb 19, 2019
  36. 10/35 notes: make hash size independentbrian m. carlson, Feb 19, 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.