@@ -23,39 +23,29 @@ typedef khiter_t git_strmap_iter;
2323#define GIT__USE_STRMAP \
2424 __KHASH_IMPL(str, static kh_inline, const char *, void *, 1, kh_str_hash_func, kh_str_hash_equal)
2525
26- #define git_strmap_alloc (hp ) \
27- ((*(hp) = kh_init(str)) == NULL) ? giterr_set_oom(), -1 : 0
26+ int git_strmap_alloc (git_strmap * * map );
2827
29- #define git_strmap_free (h ) kh_destroy(str, h), h = NULL
30- #define git_strmap_clear (h ) kh_clear(str, h)
28+ #define git_strmap_free (h ) git_strmap__free(h); (h) = NULL
29+ void git_strmap__free (git_strmap * map );
30+ void git_strmap_clear (git_strmap * map );
3131
32- #define git_strmap_num_entries (h ) kh_size(h)
32+ size_t git_strmap_num_entries (git_strmap * map );
3333
34- #define git_strmap_lookup_index (h , k ) kh_get(str, h, k)
35- #define git_strmap_valid_index (h , idx ) ( idx != kh_end(h))
34+ size_t git_strmap_lookup_index (git_strmap * map , const char * key );
35+ int git_strmap_valid_index (git_strmap * map , size_t idx );
3636
37- #define git_strmap_exists (h , k ) (kh_get(str, h, k) != kh_end(h))
38- #define git_strmap_has_data (h , idx ) kh_exist(h, idx)
37+ int git_strmap_exists (git_strmap * map , const char * key );
38+ int git_strmap_has_data (git_strmap * map , size_t idx );
3939
40- #define git_strmap_key (h , idx ) kh_key(h, idx)
41- #define git_strmap_set_key_at (h , idx , k ) kh_val(h, idx) = k
42- #define git_strmap_value_at (h , idx ) kh_val(h, idx)
43- #define git_strmap_set_value_at (h , idx , v ) kh_val(h, idx) = v
44- #define git_strmap_delete_at (h , idx ) kh_del(str, h, idx)
40+ const char * git_strmap_key (git_strmap * map , size_t idx );
41+ void git_strmap_set_key_at (git_strmap * map , size_t idx , char * key );
42+ void * git_strmap_value_at (git_strmap * map , size_t idx );
43+ void git_strmap_set_value_at (git_strmap * map , size_t idx , void * value );
44+ void git_strmap_delete_at (git_strmap * map , size_t idx );
4545
46- #define git_strmap_put (h , k , err ) kh_put(str, h, k, err)
47-
48- #define git_strmap_insert (h , key , val , rval ) do { \
49- khiter_t __pos = kh_put(str, h, key, rval); \
50- if ((*rval) >= 0) { \
51- if ((*rval) == 0) kh_key(h, __pos) = key; \
52- kh_val(h, __pos) = val; \
53- } } while (0)
54-
55- #define git_strmap_delete (h , key ) do { \
56- khiter_t __pos = git_strmap_lookup_index(h, key); \
57- if (git_strmap_valid_index(h, __pos)) \
58- git_strmap_delete_at(h, __pos); } while (0)
46+ int git_strmap_put (git_strmap * map , const char * key , int * err );
47+ void git_strmap_insert (git_strmap * map , const char * key , void * value , int * rval );
48+ void git_strmap_delete (git_strmap * map , const char * key );
5949
6050#define git_strmap_foreach kh_foreach
6151#define git_strmap_foreach_value kh_foreach_value
0 commit comments