X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fplist.c;h=b5acd76ecc03047291badb29fd2253eb70388e02;hp=7b298be4541525a163e701f70c96c53eaaef2dd1;hb=6ebcb60416cad353f5aeacebe919cb6990ef5a7d;hpb=6509a2053456d0e63b6f383b757289d3016ed1a5 diff --git a/src/plist.c b/src/plist.c index 7b298be..b5acd76 100644 --- a/src/plist.c +++ b/src/plist.c @@ -111,6 +111,17 @@ struct psi_plist *psi_plist_add(struct psi_plist *list, void *ptr) { return list; } +struct psi_plist *psi_plist_add_r(struct psi_plist *list, size_t num_eles, void **eles) { + if (list && list->count) { + list = realloc(list, sizeof(*list) + list->size + (num_eles + list->count) * list->size); + } + if (list) { + memcpy(PLIST_ELE(list, list->count), eles, num_eles * list->size); + list->count += num_eles; + } + return list; +} + bool psi_plist_get(struct psi_plist *list, size_t index, void *ptr) { if (list && list->count > index) { PLIST_CPY(list, ptr, PLIST_ELE(list, index)); @@ -132,7 +143,7 @@ bool psi_plist_del(struct psi_plist *list, size_t index, void *ptr) { return false; } -bool psi_plist_del_range(struct psi_plist *list, size_t offset_start, size_t num_eles, void **eles) { +bool psi_plist_del_r(struct psi_plist *list, size_t offset_start, size_t num_eles, void **eles) { if (list) { size_t offset_end = offset_start + num_eles - 1; @@ -169,7 +180,7 @@ struct psi_plist *psi_plist_ins(struct psi_plist *list, size_t index, void *ptr) return list; } -struct psi_plist *psi_plist_ins_range(struct psi_plist *list, size_t offset_start, size_t num_eles, void **eles) { +struct psi_plist *psi_plist_ins_r(struct psi_plist *list, size_t offset_start, size_t num_eles, void **eles) { size_t new_count = MAX(offset_start, list->count) + num_eles; if (list && new_count) {