diff options
| author | Patrick Steinhardt <ps@pks.im> | 2019-01-23 10:44:33 +0100 |
|---|---|---|
| committer | Patrick Steinhardt <ps@pks.im> | 2019-02-15 13:16:48 +0100 |
| commit | 03555830784a2856e0c9651d2643b3ee5ce2084d (patch) | |
| tree | 9796bff7a6ea1a3035565645ab41c49b32d457c8 /src/strmap.c | |
| parent | ef507bc7bdd736d2379a0d0614b3db1341d77187 (diff) | |
| download | libgit2-03555830784a2856e0c9651d2643b3ee5ce2084d.tar.gz | |
strmap: introduce high-level setter for key/value pairs
Currently, one would use the function `git_strmap_insert` to insert key/value
pairs into a map. This function has historically been a macro, which is why its
syntax is kind of weird: instead of returning an error code directly, it instead
has to be passed a pointer to where the return value shall be stored. This does
not match libgit2's common idiom of directly returning error codes.
Introduce a new function `git_strmap_set`, which takes as parameters the map,
key and value and directly returns an error code. Convert all callers of
`git_strmap_insert` to make use of it.
Diffstat (limited to 'src/strmap.c')
| -rw-r--r-- | src/strmap.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/strmap.c b/src/strmap.c index bf8e7f34d..4c1818a0e 100644 --- a/src/strmap.c +++ b/src/strmap.c @@ -50,6 +50,23 @@ void *git_strmap_get(git_strmap *map, const char *key) return kh_val(map, idx); } +int git_strmap_set(git_strmap *map, const char *key, void *value) +{ + size_t idx; + int rval; + + idx = kh_put(str, map, key, &rval); + if (rval < 0) + return -1; + + if (rval == 0) + kh_key(map, idx) = key; + + kh_val(map, idx) = value; + + return 0; +} + size_t git_strmap_lookup_index(git_strmap *map, const char *key) { return kh_get(str, map, key); |
