about summary refs log tree commit diff stats
path: root/src/resarr.c
diff options
context:
space:
mode:
authorRen Kararou <[email protected]>2025-01-31 02:21:05 -0600
committerRen Kararou <[email protected]>2025-01-31 02:21:05 -0600
commitae54c5df759e69f7d70dc19476359ceb1796fec7 (patch)
treeb913d8556724f2c904ca1781f3a58f87559cafac /src/resarr.c
parent1dee936b1c7e7afd5760c181d99db34faa3cc8ad (diff)
downloadlibspicy-ae54c5df759e69f7d70dc19476359ceb1796fec7.tar.gz
libspicy-ae54c5df759e69f7d70dc19476359ceb1796fec7.tar.bz2
libspicy-ae54c5df759e69f7d70dc19476359ceb1796fec7.zip
impl resarr_swap_quick()
Diffstat (limited to 'src/resarr.c')
-rw-r--r--src/resarr.c15
1 files changed, 15 insertions, 0 deletions
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(