summaryrefslogtreecommitdiff
path: root/src/strmap.h
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2018-12-01 08:50:36 +0100
committerPatrick Steinhardt <ps@pks.im>2019-02-15 13:16:48 +0100
commit84a089da3701db370b2c77e6866abe3a5065c542 (patch)
treea70b47efb1c29ab0c779fbb7f25447a33d9d0dce /src/strmap.h
parent8da93944f3d3c271ea7a2ec035c6ea48654fa71e (diff)
downloadlibgit2-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.h15
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) { \