From ae54c5df759e69f7d70dc19476359ceb1796fec7 Mon Sep 17 00:00:00 2001 From: Ren Kararou Date: Fri, 31 Jan 2025 02:21:05 -0600 Subject: impl resarr_swap_quick() --- inc/resarr.h | 1 + src/resarr.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/inc/resarr.h b/inc/resarr.h index e3b853f..0a4ed23 100644 --- a/inc/resarr.h +++ b/inc/resarr.h @@ -22,6 +22,7 @@ int resarr_insert(stype_resarr *arr, void *elem, size_t before, size_t count); int resarr_insert_single(stype_resarr *arr, void *elem, size_t before); int resarr_delete(stype_resarr *arr, size_t start, size_t end); int resarr_swap(stype_resarr *first, stype_resarr *second); +int resarr_quick_swap(stype_resarr *first, stype_resarr *second); int resarr_clear(stype_resarr *arr); int resarr_destroy(stype_resarr *arr); diff --git a/src/resarr.c b/src/resarr.c index a597d86..a359d71 100644 --- a/src/resarr.c +++ b/src/resarr.c @@ -99,6 +99,21 @@ int resarr_swap(stype_resarr *first, stype_resarr *second) { return 0; } +int resarr_swap_quick(stype_resarr *first, stype_resarr *second) { + if (first == NULL || second == NULL) return -1; + if (first->elemsize != second->elemsize) return -1; + size_t size = first->elemcount; + size_t alloc = first->allocsize; + void *array = first->array; + first->elemcount = second->elemcount; + first->allocsize = second->allocsize; + first->array = second->array; + second->elemcount = size; + second->allocsize = alloc; + second->array = array; + return 0; +} + int resarr_clear(stype_resarr *arr) { if (arr == NULL) return -1; memset( -- cgit 1.4.1-2-gfad0