summaryrefslogtreecommitdiff
path: root/src/idxmap.c
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2018-11-23 19:27:09 +0100
committerPatrick Steinhardt <ps@pks.im>2018-11-28 15:22:27 +0100
commitf2f5ec844d96fe0007a47e4df00499ab5598b41f (patch)
tree2d9bee0c39dbd05ca1a7db13fd3d2583cd823406 /src/idxmap.c
parent852bc9f4967d3bd70a284794ff486253e37c6980 (diff)
downloadlibgit2-f2f5ec844d96fe0007a47e4df00499ab5598b41f.tar.gz
khash: move khash include into implementation files
The current map implementations directly include the "khash.h" headers into their own headers to make available a set of static functions, defines et cetera. Besides leaking the complete khash namespace into files wherever khashes are used, this also triggers Clang's -Wunused-function warnings when some of the static functions are not being used at all. Fix the issue by moving the includes into the respective map implementation files. Add forward declares for all the map types to make them known.
Diffstat (limited to 'src/idxmap.c')
-rw-r--r--src/idxmap.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/idxmap.c b/src/idxmap.c
index 45f0c2204..05a7b2feb 100644
--- a/src/idxmap.c
+++ b/src/idxmap.c
@@ -7,6 +7,16 @@
#include "idxmap.h"
+#define kmalloc git__malloc
+#define kcalloc git__calloc
+#define krealloc git__realloc
+#define kreallocarray git__reallocarray
+#define kfree git__free
+#include "khash.h"
+
+__KHASH_TYPE(idx, const git_index_entry *, git_index_entry *)
+__KHASH_TYPE(idxicase, const git_index_entry *, git_index_entry *)
+
/* This is __ac_X31_hash_string but with tolower and it takes the entry's stage into account */
static kh_inline khint_t idxentry_hash(const git_index_entry *e)
{
@@ -104,11 +114,21 @@ void git_idxmap_free(git_idxmap *map)
kh_destroy(idx, map);
}
+void git_idxmap_icase_free(git_idxmap_icase *map)
+{
+ kh_destroy(idxicase, map);
+}
+
void git_idxmap_clear(git_idxmap *map)
{
kh_clear(idx, map);
}
+void git_idxmap_icase_clear(git_idxmap_icase *map)
+{
+ kh_clear(idxicase, map);
+}
+
void git_idxmap_delete_at(git_idxmap *map, size_t idx)
{
kh_del(idx, map, idx);