@@ -23,34 +23,25 @@ typedef khash_t(off) git_offmap;
2323#define GIT__USE_OFFMAP \
2424 __KHASH_IMPL(off, static kh_inline, git_off_t, void *, 1, kh_int64_hash_func, kh_int64_hash_equal)
2525
26- #define git_offmap_alloc () kh_init(off)
27- #define git_offmap_free (h ) kh_destroy(off, h), h = NULL
28- #define git_offmap_clear (h ) kh_clear(off, h)
26+ git_offmap * git_offmap_alloc (void );
27+ #define git_offmap_free (h ) git_offmap__free(h); (h) = NULL
28+ void git_offmap__free (git_offmap * map );
29+ void git_offmap_clear (git_offmap * map );
2930
30- #define git_offmap_num_entries (h ) kh_size(h)
31+ size_t git_offmap_num_entries (git_offmap * map );
3132
32- #define git_offmap_lookup_index (h , k ) kh_get(off, h, k)
33- #define git_offmap_valid_index (h , idx ) ( idx != kh_end(h))
33+ size_t git_offmap_lookup_index (git_offmap * map , const git_off_t key );
34+ int git_offmap_valid_index (git_offmap * map , size_t idx );
3435
35- #define git_offmap_exists (h , k ) (kh_get(off, h, k) != kh_end(h))
36+ int git_offmap_exists (git_offmap * map , const git_off_t key );
3637
37- #define git_offmap_value_at (h , idx ) kh_val(h, idx)
38- #define git_offmap_set_value_at (h , idx , v ) kh_val(h, idx) = v
39- #define git_offmap_delete_at (h , idx ) kh_del(off, h, idx)
38+ void * git_offmap_value_at (git_offmap * map , size_t idx );
39+ void git_offmap_set_value_at (git_offmap * map , size_t idx , void * value );
40+ void git_offmap_delete_at (git_offmap * map , size_t idx );
4041
41- #define git_offmap_put (h , k , err ) kh_put(off, h, k, err)
42-
43- #define git_offmap_insert (h , key , val , rval ) do { \
44- khiter_t __pos = kh_put(off, h, key, rval); \
45- if ((*rval) >= 0) { \
46- if ((*rval) == 0) kh_key(h, __pos) = key; \
47- kh_val(h, __pos) = val; \
48- } } while (0)
49-
50- #define git_offmap_delete (h , key ) do { \
51- khiter_t __pos = git_offmap_lookup_index(h, key); \
52- if (git_offmap_valid_index(h, __pos)) \
53- git_offmap_delete_at(h, __pos); } while (0)
42+ int git_offmap_put (git_offmap * map , const git_off_t key , int * err );
43+ void git_offmap_insert (git_offmap * map , const git_off_t key , void * value , int * rval );
44+ void git_offmap_delete (git_offmap * map , const git_off_t key );
5445
5546#define git_offmap_foreach kh_foreach
5647#define git_offmap_foreach_value kh_foreach_value
0 commit comments