add array swap
This commit is contained in:
@@ -12,6 +12,7 @@ typedef struct {
|
||||
LArray* l_array_create();
|
||||
void l_array_delete(LArray* array);
|
||||
int l_array_append(LArray* array, void* item);
|
||||
int l_array_swap(LArray* array, int indexA, int indexB);
|
||||
void l_array_clear(LArray* array);
|
||||
|
||||
#ifdef L_ARRAY_IMPLEMENTATION
|
||||
@@ -38,6 +39,16 @@ int l_array_append(LArray* array, void* item) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int l_array_swap(LArray* array, int indexA, int indexB) {
|
||||
if (array->count < (size_t)indexA || array->count < (size_t)indexB || indexA == indexB) return 1;
|
||||
|
||||
void* itemA = array->items[indexA];
|
||||
array->items[indexA] = array->items[indexB];
|
||||
array->items[indexB] = itemA;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void l_array_clear(LArray* array) {
|
||||
free(array->items);
|
||||
array->items = NULL;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#define L_ARRAY_IMPLEMENTATION
|
||||
#include "../include/array.h"
|
||||
#include "../include/larray.h"
|
||||
#include <stdio.h>
|
||||
|
||||
int test_l_array() {
|
||||
@@ -19,6 +19,10 @@ int test_l_array() {
|
||||
if (array->count != 2) RETURN_CODE++;
|
||||
if (array->capacity != 8) RETURN_CODE++;
|
||||
|
||||
l_array_swap(array, 0, 1);
|
||||
if (*(int*)array->items[0] != 5) RETURN_CODE++;
|
||||
if (*(int*)array->items[1] != 15) RETURN_CODE++;
|
||||
|
||||
l_array_clear(array);
|
||||
if (array->items != NULL) RETURN_CODE++;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user