diff options
-rw-r--r-- | decorate.c | 1 | ||||
-rw-r--r-- | dir.h | 1 | ||||
-rw-r--r-- | hash-ll.h | 19 | ||||
-rw-r--r-- | hashmap.h | 21 | ||||
-rw-r--r-- | khash.h | 1 | ||||
-rw-r--r-- | remote.h | 1 | ||||
-rw-r--r-- | serve.c | 1 |
7 files changed, 22 insertions, 23 deletions
diff --git a/decorate.c b/decorate.c index 71e79daa82..a5c43c0c14 100644 --- a/decorate.c +++ b/decorate.c @@ -3,7 +3,6 @@ * data. */ #include "git-compat-util.h" -#include "hashmap.h" #include "object.h" #include "decorate.h" @@ -1,6 +1,7 @@ #ifndef DIR_H #define DIR_H +#include "hash-ll.h" #include "hashmap.h" #include "pathspec.h" #include "statinfo.h" @@ -270,6 +270,25 @@ static inline void oid_set_algo(struct object_id *oid, const struct git_hash_alg oid->algo = hash_algo_by_ptr(algop); } +/* + * Converts a cryptographic hash (e.g. SHA-1) into an int-sized hash code + * for use in hash tables. Cryptographic hashes are supposed to have + * uniform distribution, so in contrast to `memhash()`, this just copies + * the first `sizeof(int)` bytes without shuffling any bits. Note that + * the results will be different on big-endian and little-endian + * platforms, so they should not be stored or transferred over the net. + */ +static inline unsigned int oidhash(const struct object_id *oid) +{ + /* + * Equivalent to 'return *(unsigned int *)oid->hash;', but safe on + * platforms that don't support unaligned reads. + */ + unsigned int hash; + memcpy(&hash, oid->hash, sizeof(hash)); + return hash; +} + const char *empty_tree_oid_hex(void); const char *empty_blob_oid_hex(void); @@ -1,8 +1,6 @@ #ifndef HASHMAP_H #define HASHMAP_H -#include "hash-ll.h" - /* * Generic implementation of hash-based key-value mappings. * @@ -121,25 +119,6 @@ unsigned int memihash(const void *buf, size_t len); unsigned int memihash_cont(unsigned int hash_seed, const void *buf, size_t len); /* - * Converts a cryptographic hash (e.g. SHA-1) into an int-sized hash code - * for use in hash tables. Cryptographic hashes are supposed to have - * uniform distribution, so in contrast to `memhash()`, this just copies - * the first `sizeof(int)` bytes without shuffling any bits. Note that - * the results will be different on big-endian and little-endian - * platforms, so they should not be stored or transferred over the net. - */ -static inline unsigned int oidhash(const struct object_id *oid) -{ - /* - * Equivalent to 'return *(unsigned int *)oid->hash;', but safe on - * platforms that don't support unaligned reads. - */ - unsigned int hash; - memcpy(&hash, oid->hash, sizeof(hash)); - return hash; -} - -/* * struct hashmap_entry is an opaque structure representing an entry in the * hash table. * Ideally it should be followed by an int-sized member to prevent unused @@ -26,7 +26,6 @@ #ifndef __AC_KHASH_H #define __AC_KHASH_H -#include "hashmap.h" #include "hash.h" #define AC_VERSION_KHASH_H "0.2.8" @@ -1,6 +1,7 @@ #ifndef REMOTE_H #define REMOTE_H +#include "hash-ll.h" #include "hashmap.h" #include "refspec.h" @@ -1,6 +1,7 @@ #include "git-compat-util.h" #include "repository.h" #include "config.h" +#include "hash-ll.h" #include "pkt-line.h" #include "version.h" #include "ls-refs.h" |