diff options
author | Ren Kararou <[email protected]> | 2025-01-31 02:21:05 -0600 |
---|---|---|
committer | Ren Kararou <[email protected]> | 2025-01-31 02:21:05 -0600 |
commit | ae54c5df759e69f7d70dc19476359ceb1796fec7 (patch) | |
tree | b913d8556724f2c904ca1781f3a58f87559cafac | |
parent | 1dee936b1c7e7afd5760c181d99db34faa3cc8ad (diff) | |
download | libspicy-ae54c5df759e69f7d70dc19476359ceb1796fec7.tar.gz libspicy-ae54c5df759e69f7d70dc19476359ceb1796fec7.tar.bz2 libspicy-ae54c5df759e69f7d70dc19476359ceb1796fec7.zip |
impl resarr_swap_quick()
-rw-r--r-- | inc/resarr.h | 1 | ||||
-rw-r--r-- | src/resarr.c | 15 |
2 files changed, 16 insertions, 0 deletions
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( |