diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2017-04-29 13:06:14 +0200 |
---|---|---|
committer | Björn Linse <bjorn.linse@gmail.com> | 2017-05-10 16:14:10 +0200 |
commit | 489d10c57c68183c042fd582e6c8eadbb0efc5a7 (patch) | |
tree | 8428b9de93dc1aa69b81377f6a18d45c795b682a /src/nvim/api/private/helpers.c | |
parent | d9023b84e63f51611cf55f72ca5e021d64ba7ce9 (diff) | |
download | rneovim-489d10c57c68183c042fd582e6c8eadbb0efc5a7.tar.gz rneovim-489d10c57c68183c042fd582e6c8eadbb0efc5a7.tar.bz2 rneovim-489d10c57c68183c042fd582e6c8eadbb0efc5a7.zip |
api: generate ui events
Diffstat (limited to 'src/nvim/api/private/helpers.c')
-rw-r--r-- | src/nvim/api/private/helpers.c | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/src/nvim/api/private/helpers.c b/src/nvim/api/private/helpers.c index 4cc4b600d5..361570bff4 100644 --- a/src/nvim/api/private/helpers.c +++ b/src/nvim/api/private/helpers.c @@ -885,6 +885,24 @@ static void init_type_metadata(Dictionary *metadata) PUT(*metadata, "types", DICTIONARY_OBJ(types)); } +String copy_string(String str) +{ + if (str.data != NULL) { + return (String){ .data = xmemdupz(str.data, str.size), .size = str.size }; + } else { + return (String)STRING_INIT; + } +} + +Array copy_array(Array array) +{ + Array rv = ARRAY_DICT_INIT; + for (size_t i = 0; i < array.size; i++) { + ADD(rv, copy_object(array.items[i])); + } + return rv; +} + /// Creates a deep clone of an object Object copy_object(Object obj) { @@ -896,15 +914,10 @@ Object copy_object(Object obj) return obj; case kObjectTypeString: - return STRING_OBJ(cstr_to_string(obj.data.string.data)); + return STRING_OBJ(copy_string(obj.data.string)); - case kObjectTypeArray: { - Array rv = ARRAY_DICT_INIT; - for (size_t i = 0; i < obj.data.array.size; i++) { - ADD(rv, copy_object(obj.data.array.items[i])); - } - return ARRAY_OBJ(rv); - } + case kObjectTypeArray: + return ARRAY_OBJ(copy_array(obj.data.array)); case kObjectTypeDictionary: { Dictionary rv = ARRAY_DICT_INIT; |