diff options
author | Patrick Steinhardt <ps@pks.im> | 2017-02-02 12:20:17 +0100 |
---|---|---|
committer | Patrick Steinhardt <ps@pks.im> | 2017-02-17 11:41:06 +0100 |
commit | cee9ca6609466c63886218290e9ecad5f703094b (patch) | |
tree | 6e5dce243f756c57288d2c5d8bf6a49c7630d6ac /src/idxmap.h | |
parent | 8f5fe903d629309cf711bf3c7a0c8e9b6826b0a0 (diff) | |
download | libgit2-cee9ca6609466c63886218290e9ecad5f703094b.tar.gz |
idxmap: convert to use functions instead of macros
Diffstat (limited to 'src/idxmap.h')
-rw-r--r-- | src/idxmap.h | 65 |
1 files changed, 22 insertions, 43 deletions
diff --git a/src/idxmap.h b/src/idxmap.h index 21de5af78..aaca50b48 100644 --- a/src/idxmap.h +++ b/src/idxmap.h @@ -44,49 +44,28 @@ static kh_inline khint_t idxentry_hash(const git_index_entry *e) #define GIT__USE_IDXMAP_ICASE \ __KHASH_IMPL(idxicase, static kh_inline, const git_index_entry *, git_index_entry *, 1, idxentry_hash, idxentry_icase_equal) -#define git_idxmap_alloc(hp) \ - ((*(hp) = kh_init(idx)) == NULL) ? giterr_set_oom(), -1 : 0 - -#define git_idxmap_icase_alloc(hp) \ - ((*(hp) = kh_init(idxicase)) == NULL) ? giterr_set_oom(), -1 : 0 - -#define git_idxmap_insert(h, key, val, rval) do { \ - khiter_t __pos = kh_put(idx, h, key, rval); \ - if ((*rval) >= 0) { \ - if ((*rval) == 0) kh_key(h, __pos) = key; \ - kh_val(h, __pos) = val; \ - } } while (0) - -#define git_idxmap_icase_insert(h, key, val, rval) do { \ - khiter_t __pos = kh_put(idxicase, h, key, rval); \ - if ((*rval) >= 0) { \ - if ((*rval) == 0) kh_key(h, __pos) = key; \ - kh_val(h, __pos) = val; \ - } } while (0) - -#define git_idxmap_lookup_index(h, k) kh_get(idx, h, k) -#define git_idxmap_icase_lookup_index(h, k) kh_get(idxicase, h, k) -#define git_idxmap_value_at(h, idx) kh_val(h, idx) -#define git_idxmap_valid_index(h, idx) (idx != kh_end(h)) -#define git_idxmap_has_data(h, idx) kh_exist(h, idx) - -#define git_idxmap_resize(h,s) kh_resize(idx, h, s) -#define git_idxmap_icase_resize(h,s) kh_resize(idxicase, h, s) -#define git_idxmap_free(h) kh_destroy(idx, h), h = NULL -#define git_idxmap_clear(h) kh_clear(idx, h) - -#define git_idxmap_delete_at(h, id) kh_del(idx, h, id) -#define git_idxmap_icase_delete_at(h, id) kh_del(idxicase, h, id) - -#define git_idxmap_delete(h, key) do { \ - khiter_t __pos = git_idxmap_lookup_index(h, key); \ - if (git_idxmap_valid_index(h, __pos)) \ - git_idxmap_delete_at(h, __pos); } while (0) - -#define git_idxmap_icase_delete(h, key) do { \ - khiter_t __pos = git_idxmap_icase_lookup_index(h, key); \ - if (git_idxmap_valid_index(h, __pos)) \ - git_idxmap_icase_delete_at(h, __pos); } while (0) +int git_idxmap_alloc(git_idxmap **map); +int git_idxmap_icase_alloc(git_idxmap_icase **map); +void git_idxmap_insert(git_idxmap *map, const git_index_entry *key, void *value, int *rval); +void git_idxmap_icase_insert(git_idxmap_icase *map, const git_index_entry *key, void *value, int *rval); + +size_t git_idxmap_lookup_index(git_idxmap *map, const git_index_entry *key); +size_t git_idxmap_icase_lookup_index(git_idxmap_icase *map, const git_index_entry *key); +void *git_idxmap_value_at(git_idxmap *map, size_t idx); +int git_idxmap_valid_index(git_idxmap *map, size_t idx); +int git_idxmap_has_data(git_idxmap *map, size_t idx); + +void git_idxmap_resize(git_idxmap *map, size_t size); +void git_idxmap_icase_resize(git_idxmap_icase *map, size_t size); +#define git_idxmap_free(h) git_idxmap__free(h); (h) = NULL +void git_idxmap__free(git_idxmap *map); +void git_idxmap_clear(git_idxmap *map); + +void git_idxmap_delete_at(git_idxmap *map, size_t idx); +void git_idxmap_icase_delete_at(git_idxmap_icase *map, size_t idx); + +void git_idxmap_delete(git_idxmap *map, const git_index_entry *key); +void git_idxmap_icase_delete(git_idxmap_icase *map, const git_index_entry *key); #define git_idxmap_begin kh_begin #define git_idxmap_end kh_end |