diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/map.c | 18 | ||||
-rw-r--r-- | src/nvim/map.h | 3 | ||||
-rw-r--r-- | src/nvim/vim.h | 2 |
3 files changed, 23 insertions, 0 deletions
diff --git a/src/nvim/map.c b/src/nvim/map.c index 2e47e8b249..24aa38d67d 100644 --- a/src/nvim/map.c +++ b/src/nvim/map.c @@ -1,10 +1,12 @@ #include <stdlib.h> #include <stdbool.h> +#include <string.h> #include "nvim/map.h" #include "nvim/map_defs.h" #include "nvim/vim.h" #include "nvim/memory.h" +#include "nvim/os/msgpack_rpc.h" #include "nvim/lib/khash.h" @@ -87,7 +89,23 @@ return rv; \ } +static inline khint_t String_hash(String s) +{ + khint_t h = 0; + for (size_t i = 0; i < s.size && s.data[i]; i++) { + h = (h << 5) - h + (uint8_t)s.data[i]; + } + return h; +} + +static inline bool String_eq(String a, String b) +{ + return strncmp(a.data, b.data, min(a.size, b.size)) == 0; +} + + MAP_IMPL(cstr_t, uint64_t, DEFAULT_INITIALIZER) MAP_IMPL(cstr_t, ptr_t, DEFAULT_INITIALIZER) MAP_IMPL(ptr_t, ptr_t, DEFAULT_INITIALIZER) MAP_IMPL(uint64_t, ptr_t, DEFAULT_INITIALIZER) +MAP_IMPL(String, rpc_method_handler_fn, DEFAULT_INITIALIZER) diff --git a/src/nvim/map.h b/src/nvim/map.h index 73698cba22..616516c3e1 100644 --- a/src/nvim/map.h +++ b/src/nvim/map.h @@ -4,6 +4,8 @@ #include <stdbool.h> #include "nvim/map_defs.h" +#include "nvim/api/private/defs.h" +#include "nvim/os/msgpack_rpc.h" #define MAP_DECLS(T, U) \ KHASH_DECLARE(T##_##U##_map, T, U) \ @@ -23,6 +25,7 @@ MAP_DECLS(cstr_t, uint64_t) MAP_DECLS(cstr_t, ptr_t) MAP_DECLS(ptr_t, ptr_t) MAP_DECLS(uint64_t, ptr_t) +MAP_DECLS(String, rpc_method_handler_fn) #define map_new(T, U) map_##T##_##U##_new #define map_free(T, U) map_##T##_##U##_free diff --git a/src/nvim/vim.h b/src/nvim/vim.h index 6479aeaafb..3ef291ef7c 100644 --- a/src/nvim/vim.h +++ b/src/nvim/vim.h @@ -8,6 +8,8 @@ #ifndef NVIM_VIM_H # define NVIM_VIM_H +#define min(X, Y) (X < Y ? X : Y) + #include "nvim/types.h" #include "nvim/pos.h" // for linenr_T, MAXCOL, etc... |