diff options
author | Patrick Steinhardt <ps@pks.im> | 2018-12-01 08:50:36 +0100 |
---|---|---|
committer | Patrick Steinhardt <ps@pks.im> | 2019-02-15 13:16:48 +0100 |
commit | 84a089da3701db370b2c77e6866abe3a5065c542 (patch) | |
tree | a70b47efb1c29ab0c779fbb7f25447a33d9d0dce /src/strmap.h | |
parent | 8da93944f3d3c271ea7a2ec035c6ea48654fa71e (diff) | |
download | libgit2-84a089da3701db370b2c77e6866abe3a5065c542.tar.gz |
maps: provide return value when deleting entries
Currently, the delete functions of maps do not provide a return value. Like
this, it is impossible to tell whether the entry has really been deleted or not.
Change the implementation to provide either a return value of zero if the entry
has been successfully deleted or `GIT_ENOTFOUND` if the key could not be found.
Convert callers to the `delete_at` functions to instead use this higher-level
interface.
Diffstat (limited to 'src/strmap.h')
-rw-r--r-- | src/strmap.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/strmap.h b/src/strmap.h index efd875fc7..3317ea7b6 100644 --- a/src/strmap.h +++ b/src/strmap.h @@ -74,6 +74,20 @@ void *git_strmap_get(git_strmap *map, const char *key); */ int git_strmap_set(git_strmap *map, const char *key, void *value); +/** + * Delete an entry from the map. + * + * Delete the given key and its value from the map. If no such + * key exists, this will do nothing. + * + * @param map map to delete key in + * @param key key to delete + * @return `0` if the key has been deleted, GIT_ENOTFOUND if no + * such key was found, a negative code in case of an + * error + */ +int git_strmap_delete(git_strmap *map, const char *key); + size_t git_strmap_lookup_index(git_strmap *map, const char *key); int git_strmap_valid_index(git_strmap *map, size_t idx); @@ -88,7 +102,6 @@ void git_strmap_delete_at(git_strmap *map, size_t idx); int git_strmap_put(git_strmap *map, const char *key, int *err); void git_strmap_insert(git_strmap *map, const char *key, void *value, int *rval); -void git_strmap_delete(git_strmap *map, const char *key); #define git_strmap_foreach(h, kvar, vvar, code) { size_t __i; \ for (__i = git_strmap_begin(h); __i != git_strmap_end(h); ++__i) { \ |