diff options
Diffstat (limited to 'src/nvim/api/private')
-rw-r--r-- | src/nvim/api/private/dispatch.c | 6 | ||||
-rw-r--r-- | src/nvim/api/private/handle.c | 40 | ||||
-rw-r--r-- | src/nvim/api/private/handle.h | 24 | ||||
-rw-r--r-- | src/nvim/api/private/helpers.c | 3 | ||||
-rw-r--r-- | src/nvim/api/private/helpers.h | 8 |
5 files changed, 12 insertions, 69 deletions
diff --git a/src/nvim/api/private/dispatch.c b/src/nvim/api/private/dispatch.c index eae4581f42..9f16da4078 100644 --- a/src/nvim/api/private/dispatch.c +++ b/src/nvim/api/private/dispatch.c @@ -21,12 +21,12 @@ #include "nvim/api/window.h" #include "nvim/api/deprecated.h" -static Map(String, MsgpackRpcRequestHandler) *methods = NULL; +static Map(String, MsgpackRpcRequestHandler) methods = MAP_INIT; static void msgpack_rpc_add_method_handler(String method, MsgpackRpcRequestHandler handler) { - map_put(String, MsgpackRpcRequestHandler)(methods, method, handler); + map_put(String, MsgpackRpcRequestHandler)(&methods, method, handler); } /// @param name API method name @@ -37,7 +37,7 @@ MsgpackRpcRequestHandler msgpack_rpc_get_handler_for(const char *name, { String m = { .data = (char *)name, .size = name_len }; MsgpackRpcRequestHandler rv = - map_get(String, MsgpackRpcRequestHandler)(methods, m); + map_get(String, MsgpackRpcRequestHandler)(&methods, m); if (!rv.fn) { api_set_error(error, kErrorTypeException, "Invalid method: %.*s", diff --git a/src/nvim/api/private/handle.c b/src/nvim/api/private/handle.c deleted file mode 100644 index eb96192af2..0000000000 --- a/src/nvim/api/private/handle.c +++ /dev/null @@ -1,40 +0,0 @@ -// This is an open source non-commercial project. Dear PVS-Studio, please check -// it. PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com - -#include <assert.h> -#include <stdint.h> - -#include "nvim/vim.h" -#include "nvim/map.h" -#include "nvim/api/private/handle.h" - -#define HANDLE_INIT(name) name##_handles = pmap_new(handle_T)() - -#define HANDLE_IMPL(type, name) \ - static PMap(handle_T) *name##_handles = NULL; /* NOLINT */ \ - \ - type *handle_get_##name(handle_T handle) \ - { \ - return pmap_get(handle_T)(name##_handles, handle); \ - } \ - \ - void handle_register_##name(type *name) \ - { \ - pmap_put(handle_T)(name##_handles, name->handle, name); \ - } \ - \ - void handle_unregister_##name(type *name) \ - { \ - pmap_del(handle_T)(name##_handles, name->handle); \ - } - -HANDLE_IMPL(buf_T, buffer) -HANDLE_IMPL(win_T, window) -HANDLE_IMPL(tabpage_T, tabpage) - -void handle_init(void) -{ - HANDLE_INIT(buffer); - HANDLE_INIT(window); - HANDLE_INIT(tabpage); -} diff --git a/src/nvim/api/private/handle.h b/src/nvim/api/private/handle.h deleted file mode 100644 index 26e9dc3314..0000000000 --- a/src/nvim/api/private/handle.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef NVIM_API_PRIVATE_HANDLE_H -#define NVIM_API_PRIVATE_HANDLE_H - -#include "nvim/vim.h" -#include "nvim/buffer_defs.h" -#include "nvim/api/private/defs.h" - -#define HANDLE_DECLS(type, name) \ - type *handle_get_##name(handle_T handle); \ - void handle_register_##name(type *name); \ - void handle_unregister_##name(type *name); - -// handle_get_buffer handle_register_buffer, handle_unregister_buffer -HANDLE_DECLS(buf_T, buffer) -// handle_get_window handle_register_window, handle_unregister_window -HANDLE_DECLS(win_T, window) -// handle_get_tabpage handle_register_tabpage, handle_unregister_tabpage -HANDLE_DECLS(tabpage_T, tabpage) - -void handle_init(void); - - -#endif // NVIM_API_PRIVATE_HANDLE_H - diff --git a/src/nvim/api/private/helpers.c b/src/nvim/api/private/helpers.c index 3ec6151090..eedcfd69b8 100644 --- a/src/nvim/api/private/helpers.c +++ b/src/nvim/api/private/helpers.c @@ -9,7 +9,6 @@ #include "nvim/api/private/helpers.h" #include "nvim/api/private/defs.h" -#include "nvim/api/private/handle.h" #include "nvim/api/vim.h" #include "nvim/msgpack_rpc/helpers.h" #include "nvim/lua/executor.h" @@ -1725,7 +1724,7 @@ const char *describe_ns(NS ns_id) { String name; handle_T id; - map_foreach(namespace_ids, name, id, { + map_foreach(&namespace_ids, name, id, { if ((NS)id == ns_id && name.size) { return name.data; } diff --git a/src/nvim/api/private/helpers.h b/src/nvim/api/private/helpers.h index 055abb797f..ecce6afa26 100644 --- a/src/nvim/api/private/helpers.h +++ b/src/nvim/api/private/helpers.h @@ -101,6 +101,14 @@ #define api_free_window(value) #define api_free_tabpage(value) +EXTERN PMap(handle_T) buffer_handles INIT(= MAP_INIT); +EXTERN PMap(handle_T) window_handles INIT(= MAP_INIT); +EXTERN PMap(handle_T) tabpage_handles INIT(= MAP_INIT); + +#define handle_get_buffer(h) pmap_get(handle_T)(&buffer_handles, (h)) +#define handle_get_window(h) pmap_get(handle_T)(&window_handles, (h)) +#define handle_get_tabpage(h) pmap_get(handle_T)(&tabpage_handles, (h)) + /// Structure used for saving state for :try /// /// Used when caller is supposed to be operating when other VimL code is being |