aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/map.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/map.h')
-rw-r--r--src/nvim/map.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/nvim/map.h b/src/nvim/map.h
new file mode 100644
index 0000000000..9e61b903d5
--- /dev/null
+++ b/src/nvim/map.h
@@ -0,0 +1,57 @@
+// General-purpose string->pointer associative array with a simple API
+#ifndef NEOVIM_MAP_H
+#define NEOVIM_MAP_H
+
+#include <stdbool.h>
+
+#include "map_defs.h"
+
+/// Creates a new `Map` instance
+///
+/// @return a pointer to the new instance
+Map *map_new(void);
+
+/// Frees memory for a `Map` instance
+///
+/// @param map The `Map` instance
+void map_free(Map *map);
+
+/// Gets the value corresponding to a key in a `Map` instance
+///
+/// @param map The `Map` instance
+/// @param key A key string
+/// @return The value if the key exists in the map, or NULL if it doesn't
+void *map_get(Map *map, const char *key);
+
+/// Checks if a key exists in the map
+///
+/// @param map The `Map` instance
+/// @param key A key string
+/// @return true if the key exists, false otherwise
+bool map_has(Map *map, const char *key);
+
+/// Set the value corresponding to a key in a `Map` instance and returns
+/// the old value.
+///
+/// @param map The `Map` instance
+/// @param key A key string
+/// @param value A value
+/// @return The current value if exists or NULL otherwise
+void *map_put(Map *map, const char *key, void *value);
+
+/// Deletes the value corresponding to a key in a `Map` instance and returns
+/// the old value.
+///
+/// @param map The `Map` instance
+/// @param key A key string
+/// @return The current value if exists or NULL otherwise
+void *map_del(Map *map, const char *key);
+
+/// Iterates through each key/value pair in the map
+///
+/// @param map The `Map` instance
+/// @param cb A function that will be called for each key/value
+void map_foreach(Map *map, key_value_cb cb);
+
+#endif /* NEOVIM_MAP_H */
+