From ecf5547c1e9c4a897a9bb35193462408d405206b Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Tue, 14 Mar 2017 20:16:38 +0100 Subject: [PATCH] Rename _swap into _swap_at Add _swap function. --- m-array.h | 18 ++++++++++++++++-- tests/test-marray.c | 8 +++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/m-array.h b/m-array.h index adcac052..4ea8c7fa 100644 --- a/m-array.h +++ b/m-array.h @@ -418,9 +418,23 @@ M_C3(array_, name, _pop_at)(NULL, v, i); \ } \ \ - /* FIXME: More than a swap_at than a swap? */ \ static inline void \ - M_C3(array_, name, _swap)(M_C3(array_, name,_t) v, size_t i, size_t j) \ + M_C3(array_, name, _swap)(M_C3(array_, name,_t) v1, M_C3(array_, name,_t) v2) \ + { \ + assert (v1 != NULL && v2 != NULL); \ + size_t tmp = v1->size; \ + v1->size = v2->size; \ + v2->size = tmp; \ + tmp = v1->alloc; \ + v1->alloc = v2->alloc; \ + v2->alloc = tmp; \ + type *p = v1->ptr; \ + v1->ptr = v2->ptr; \ + v2->ptr = p; \ + } \ + \ + static inline void \ + M_C3(array_, name, _swap_at)(M_C3(array_, name,_t) v, size_t i, size_t j) \ { \ assert (v != NULL); \ assert(i < v->size && j < v->size && v->ptr != NULL); \ diff --git a/tests/test-marray.c b/tests/test-marray.c index a0123f2f..4ae8bd2a 100644 --- a/tests/test-marray.c +++ b/tests/test-marray.c @@ -100,7 +100,7 @@ static void test_uint(void) s += *array_uint_cget(v, i); assert( s == 100 * 99 /2 + 999); - array_uint_swap(v, 2, 3); + array_uint_swap_at(v, 2, 3); assert(*array_uint_cget(v, 2) == 4); assert(*array_uint_cget(v, 3) == 3); @@ -141,7 +141,13 @@ static void test_uint(void) assert(*array_uint_cget(v2, 500) == 0); assert(array_uint_size(v2) == 1005); assert(*array_uint_cget(v2, 1004) == 0); + + array_uint_init(v); + array_uint_swap(v,v2); + assert(array_uint_size(v) == 1005); + assert(array_uint_size(v2) == 0); + array_uint_clear(v); array_uint_clear(v2); }