summaryrefslogtreecommitdiff
path: root/hash.h
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2019-06-20 07:41:45 (GMT)
committerJunio C Hamano <gitster@pobox.com>2019-06-20 17:40:42 (GMT)
commitc0566d78aac1d5f8ff90c75f2d936487bb5a8d84 (patch)
treed29ea8932124b74d0faab9913d266dbc2777a82c /hash.h
parente465e7c41d5104b48a16b122a666cbbfa184c25d (diff)
downloadgit-c0566d78aac1d5f8ff90c75f2d936487bb5a8d84.zip
git-c0566d78aac1d5f8ff90c75f2d936487bb5a8d84.tar.gz
git-c0566d78aac1d5f8ff90c75f2d936487bb5a8d84.tar.bz2
hash.h: move object_id definition from cache.h
Our hashmap.h helpfully defines a sha1hash() function. But it cannot define a similar oidhash() without including all of cache.h, which itself wants to include hashmap.h! Let's break this circular dependency by moving the definition to hash.h, along with the remaining RAWSZ macros, etc. That will put them with the existing git_hash_algo definition. One alternative would be to move oidhash() into cache.h, but it's already quite bloated. We're better off moving things out than in. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'hash.h')
-rw-r--r--hash.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/hash.h b/hash.h
index 661c9f2..52a4f1a 100644
--- a/hash.h
+++ b/hash.h
@@ -139,4 +139,28 @@ static inline int hash_algo_by_ptr(const struct git_hash_algo *p)
return p - hash_algos;
}
+/* The length in bytes and in hex digits of an object name (SHA-1 value). */
+#define GIT_SHA1_RAWSZ 20
+#define GIT_SHA1_HEXSZ (2 * GIT_SHA1_RAWSZ)
+/* The block size of SHA-1. */
+#define GIT_SHA1_BLKSZ 64
+
+/* The length in bytes and in hex digits of an object name (SHA-256 value). */
+#define GIT_SHA256_RAWSZ 32
+#define GIT_SHA256_HEXSZ (2 * GIT_SHA256_RAWSZ)
+/* The block size of SHA-256. */
+#define GIT_SHA256_BLKSZ 64
+
+/* The length in byte and in hex digits of the largest possible hash value. */
+#define GIT_MAX_RAWSZ GIT_SHA256_RAWSZ
+#define GIT_MAX_HEXSZ GIT_SHA256_HEXSZ
+/* The largest possible block size for any supported hash. */
+#define GIT_MAX_BLKSZ GIT_SHA256_BLKSZ
+
+struct object_id {
+ unsigned char hash[GIT_MAX_RAWSZ];
+};
+
+#define the_hash_algo the_repository->hash_algo
+
#endif