diff options
Diffstat (limited to 'src/nvim/map.h')
-rw-r--r-- | src/nvim/map.h | 57 |
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 */ + |