diff options
| author | Russell Belfer <rb@github.com> | 2012-04-25 15:20:28 -0700 |
|---|---|---|
| committer | Russell Belfer <rb@github.com> | 2012-04-25 15:20:28 -0700 |
| commit | c2b670436f4cc8901811ae0348f3c56150d1ccd5 (patch) | |
| tree | 31fdce14700ca5fa9c223521ab842f3127c0c452 /src/oidmap.h | |
| parent | 01fed0a8f9b80e80c8f76cde29fc0d66cb77fff7 (diff) | |
| download | libgit2-c2b670436f4cc8901811ae0348f3c56150d1ccd5.tar.gz | |
Rename git_khash_str to git_strmap, etc.
This renamed `git_khash_str` to `git_strmap`, `git_hash_oid` to
`git_oidmap`, and deletes `git_hashtable` from the tree, plus
adds unit tests for `git_strmap`.
Diffstat (limited to 'src/oidmap.h')
| -rw-r--r-- | src/oidmap.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/oidmap.h b/src/oidmap.h new file mode 100644 index 000000000..858268c92 --- /dev/null +++ b/src/oidmap.h @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2012 the libgit2 contributors + * + * This file is part of libgit2, distributed under the GNU GPL v2 with + * a Linking Exception. For full terms see the included COPYING file. + */ +#ifndef INCLUDE_oidmap_h__ +#define INCLUDE_oidmap_h__ + +#include "common.h" +#include "git2/oid.h" + +#define kmalloc git__malloc +#define kcalloc git__calloc +#define krealloc git__realloc +#define kfree git__free +#include "khash.h" + +__KHASH_TYPE(oid, const git_oid *, void *); +typedef khash_t(oid) git_oidmap; + +GIT_INLINE(khint_t) hash_git_oid(const git_oid *oid) +{ + int i; + khint_t h = 0; + for (i = 0; i < 20; ++i) + h = (h << 5) - h + oid->id[i]; + return h; +} + +GIT_INLINE(int) hash_git_oid_equal(const git_oid *a, const git_oid *b) +{ + return (memcmp(a->id, b->id, sizeof(a->id)) == 0); +} + +#define GIT__USE_OIDMAP \ + __KHASH_IMPL(oid, static inline, const git_oid *, void *, 1, hash_git_oid, hash_git_oid_equal) + +#define git_oidmap_alloc() kh_init(oid) +#define git_oidmap_free(h) kh_destroy(oid,h), h = NULL + +#endif |
