diff options
author | Famiu Haque <famiuhaque@protonmail.com> | 2022-05-12 10:57:43 +0200 |
---|---|---|
committer | Famiu Haque <famiuhaque@protonmail.com> | 2022-05-14 10:25:52 +0600 |
commit | 566f8f80d6cb7ef2df8366e5f092b0841ee757ce (patch) | |
tree | f5f34de29ef1cde99309ad7faf988aca63844baa /src/nvim/lib | |
parent | 8fba428bc6f36ae038a9286517e15b33257a1359 (diff) | |
download | rneovim-566f8f80d6cb7ef2df8366e5f092b0841ee757ce.tar.gz rneovim-566f8f80d6cb7ef2df8366e5f092b0841ee757ce.tar.bz2 rneovim-566f8f80d6cb7ef2df8366e5f092b0841ee757ce.zip |
refactor(api/nvim_cmd): use `kvec_t` for constructing cmdline string
Co-authored-by: Björn Linse <bjorn.linse@gmail.com>
Diffstat (limited to 'src/nvim/lib')
-rw-r--r-- | src/nvim/lib/kvec.h | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/src/nvim/lib/kvec.h b/src/nvim/lib/kvec.h index 34332ba34b..68841e0af8 100644 --- a/src/nvim/lib/kvec.h +++ b/src/nvim/lib/kvec.h @@ -94,17 +94,26 @@ memcpy((v1).items, (v0).items, sizeof((v1).items[0]) * (v0).size); \ } while (0) -#define kv_splice(v1, v0) \ +/// fit at least "len" more items +#define kv_ensure_space(v, len) \ do { \ - if ((v1).capacity < (v1).size + (v0).size) { \ - (v1).capacity = (v1).size + (v0).size; \ - kv_roundup32((v1).capacity); \ - kv_resize((v1), (v1).capacity); \ + if ((v).capacity < (v).size + len) { \ + (v).capacity = (v).size + len; \ + kv_roundup32((v).capacity); \ + kv_resize((v), (v).capacity); \ } \ - memcpy((v1).items + (v1).size, (v0).items, sizeof((v1).items[0]) * (v0).size); \ - (v1).size = (v1).size + (v0).size; \ } while (0) +#define kv_concat_len(v, data, len) \ + do { \ + kv_ensure_space(v, len); \ + memcpy((v).items + (v).size, data, sizeof((v).items[0]) * len); \ + (v).size = (v).size + len; \ + } while (0) + +#define kv_concat(v, str) kv_concat_len(v, str, STRLEN(str)) +#define kv_splice(v1, v0) kv_concat_len(v1, (v0).items, (v0).size) + #define kv_pushp(v) \ ((((v).size == (v).capacity) ? (kv_resize_full(v), 0) : 0), \ ((v).items + ((v).size++))) @@ -123,6 +132,8 @@ : 0UL)), \ &(v).items[(i)])) +#define kv_printf(v, ...) kv_do_printf(&(v), __VA_ARGS__) + /// Type of a vector with a few first members allocated on stack /// /// Is compatible with #kv_A, #kv_pop, #kv_size, #kv_max, #kv_last. |