add array swap

This commit is contained in:
2026-06-14 07:41:14 -05:00
parent a09faf4d2d
commit da792dda8a
2 changed files with 16 additions and 1 deletions

View File

@@ -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;

View File

@@ -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++;