Skip to content

Commit 4713e7c

Browse files
committed
offmap: remove legacy low-level interface
Remove the low-level interface that was exposing implementation details of `git_offmap` to callers. From now on, only the high-level functions shall be used to retrieve or modify values of a map. Adjust remaining existing callers.
1 parent fdfabdc commit 4713e7c

File tree

2 files changed

+9
-88
lines changed

2 files changed

+9
-88
lines changed

src/offmap.c

Lines changed: 9 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,8 @@ size_t git_offmap_size(git_offmap *map)
4444

4545
void *git_offmap_get(git_offmap *map, const git_off_t key)
4646
{
47-
size_t idx = git_offmap_lookup_index(map, key);
48-
if (!git_offmap_valid_index(map, idx) ||
49-
!git_offmap_has_data(map, idx))
47+
size_t idx = kh_get(off, map, key);
48+
if (idx == kh_end(map) || !kh_exist(map, idx))
5049
return NULL;
5150
return kh_val(map, idx);
5251
}
@@ -70,10 +69,10 @@ int git_offmap_set(git_offmap *map, const git_off_t key, void *value)
7069

7170
int git_offmap_delete(git_offmap *map, const git_off_t key)
7271
{
73-
khiter_t idx = git_offmap_lookup_index(map, key);
74-
if (!git_offmap_valid_index(map, idx))
72+
khiter_t idx = kh_get(off, map, key);
73+
if (idx == kh_end(map))
7574
return GIT_ENOTFOUND;
76-
git_offmap_delete_at(map, idx);
75+
kh_del(off, map, idx);
7776
return 0;
7877
}
7978

@@ -86,79 +85,17 @@ int git_offmap_iterate(void **value, git_offmap *map, size_t *iter, git_off_t *k
8685
{
8786
size_t i = *iter;
8887

89-
while (i < git_offmap_end(map) && !git_offmap_has_data(map, i))
88+
while (i < map->n_buckets && !kh_exist(map, i))
9089
i++;
9190

92-
if (i >= git_offmap_end(map))
91+
if (i >= map->n_buckets)
9392
return GIT_ITEROVER;
9493

9594
if (key)
96-
*key = git_offmap_key_at(map, i);
95+
*key = kh_key(map, i);
9796
if (value)
98-
*value = git_offmap_value_at(map, i);
97+
*value = kh_value(map, i);
9998
*iter = ++i;
10099

101100
return 0;
102101
}
103-
104-
size_t git_offmap_lookup_index(git_offmap *map, const git_off_t key)
105-
{
106-
return kh_get(off, map, key);
107-
}
108-
109-
int git_offmap_valid_index(git_offmap *map, size_t idx)
110-
{
111-
return idx != kh_end(map);
112-
}
113-
114-
int git_offmap_has_data(git_offmap *map, size_t idx)
115-
{
116-
return kh_exist(map, idx);
117-
}
118-
119-
git_off_t git_offmap_key_at(git_offmap *map, size_t idx)
120-
{
121-
return kh_key(map, idx);
122-
}
123-
124-
void *git_offmap_value_at(git_offmap *map, size_t idx)
125-
{
126-
return kh_val(map, idx);
127-
}
128-
129-
void git_offmap_set_value_at(git_offmap *map, size_t idx, void *value)
130-
{
131-
kh_val(map, idx) = value;
132-
}
133-
134-
void git_offmap_delete_at(git_offmap *map, size_t idx)
135-
{
136-
kh_del(off, map, idx);
137-
}
138-
139-
int git_offmap_put(git_offmap *map, const git_off_t key, int *err)
140-
{
141-
return kh_put(off, map, key, err);
142-
}
143-
144-
void git_offmap_insert(git_offmap *map, const git_off_t key, void *value, int *rval)
145-
{
146-
khiter_t idx = kh_put(off, map, key, rval);
147-
148-
if ((*rval) >= 0) {
149-
if ((*rval) == 0)
150-
kh_key(map, idx) = key;
151-
kh_val(map, idx) = value;
152-
}
153-
}
154-
155-
size_t git_offmap_begin(git_offmap *map)
156-
{
157-
GIT_UNUSED(map);
158-
return 0;
159-
}
160-
161-
size_t git_offmap_end(git_offmap *map)
162-
{
163-
return map->n_buckets;
164-
}

src/offmap.h

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -120,22 +120,6 @@ int git_offmap_exists(git_offmap *map, const git_off_t key);
120120
*/
121121
int git_offmap_iterate(void **value, git_offmap *map, size_t *iter, git_off_t *key);
122122

123-
size_t git_offmap_lookup_index(git_offmap *map, const git_off_t key);
124-
int git_offmap_valid_index(git_offmap *map, size_t idx);
125-
126-
int git_offmap_has_data(git_offmap *map, size_t idx);
127-
128-
git_off_t git_offmap_key_at(git_offmap *map, size_t idx);
129-
void *git_offmap_value_at(git_offmap *map, size_t idx);
130-
void git_offmap_set_value_at(git_offmap *map, size_t idx, void *value);
131-
void git_offmap_delete_at(git_offmap *map, size_t idx);
132-
133-
int git_offmap_put(git_offmap *map, const git_off_t key, int *err);
134-
void git_offmap_insert(git_offmap *map, const git_off_t key, void *value, int *rval);
135-
136-
size_t git_offmap_begin(git_offmap *map);
137-
size_t git_offmap_end(git_offmap *map);
138-
139123
#define git_offmap_foreach(h, kvar, vvar, code) { size_t __i = 0; \
140124
while (git_offmap_iterate((void **) &(vvar), h, &__i, &(kvar)) == 0) { \
141125
code; \

0 commit comments

Comments
 (0)