refactor: xmake in use, compiles and tests fine
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
#include "arraylist.h"
|
||||
#include "lae_arraylist.h"
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
struct ArrayList{
|
||||
struct ArrayList {
|
||||
uint8_t *buffer;
|
||||
size_t capacity;
|
||||
size_t len;
|
||||
@@ -26,11 +26,12 @@ struct ArraySlice {
|
||||
static ArrayListErr arraylist_grow(ArrayList *arr);
|
||||
static ArrayListErr arraylist_shrink(ArrayList *arr);
|
||||
|
||||
ArrayListErr arraylist_init(ArrayList **arr, size_t capacity, size_t elem_size) {
|
||||
ArrayListErr
|
||||
arraylist_init(ArrayList **arr, size_t capacity, size_t elem_size) {
|
||||
if (arr == NULL) {
|
||||
return ARRLIST_NULL_ARG;
|
||||
}
|
||||
|
||||
|
||||
*arr = NULL;
|
||||
|
||||
if (capacity == 0) {
|
||||
@@ -122,7 +123,7 @@ static ArrayListErr arraylist_grow(ArrayList *arr) {
|
||||
size_t new_capacity = arr->capacity * 2;
|
||||
|
||||
if (new_capacity > SIZE_MAX / arr->elem_size) {
|
||||
return ARRLIST_ALLOC_OVERFLOW;
|
||||
return ARRLIST_ALLOC_OVERFLOW;
|
||||
}
|
||||
|
||||
void *tmp = realloc(arr->buffer, new_capacity * arr->elem_size);
|
||||
@@ -139,10 +140,10 @@ static ArrayListErr arraylist_shrink(ArrayList *arr) {
|
||||
size_t new_capacity = arr->capacity / 2;
|
||||
|
||||
if (new_capacity > SIZE_MAX / arr->elem_size) {
|
||||
return ARRLIST_ALLOC_OVERFLOW;
|
||||
return ARRLIST_ALLOC_OVERFLOW;
|
||||
}
|
||||
|
||||
void *tmp = realloc(arr->buffer, new_capacity *arr->elem_size);
|
||||
|
||||
void *tmp = realloc(arr->buffer, new_capacity * arr->elem_size);
|
||||
if (tmp == NULL) {
|
||||
return ARRLIST_BAD_ALLOC;
|
||||
}
|
||||
@@ -195,13 +196,9 @@ ArrayListErr arraylist_push_front(ArrayList *arr, void *data) {
|
||||
memmove(
|
||||
arr->buffer + arr->elem_size,
|
||||
arr->buffer,
|
||||
(arr->len) * arr->elem_size
|
||||
);
|
||||
(arr->len) * arr->elem_size);
|
||||
|
||||
memcpy(
|
||||
arr->buffer,
|
||||
data,
|
||||
arr->elem_size);
|
||||
memcpy(arr->buffer, data, arr->elem_size);
|
||||
|
||||
arr->len++;
|
||||
|
||||
@@ -233,9 +230,7 @@ ArrayListErr arraylist_insert(ArrayList *arr, size_t index, void *data) {
|
||||
arr->buffer + (index * arr->elem_size),
|
||||
(arr->len - index) * arr->elem_size);
|
||||
|
||||
memcpy(arr->buffer + (index * arr->elem_size),
|
||||
data,
|
||||
arr->elem_size);
|
||||
memcpy(arr->buffer + (index * arr->elem_size), data, arr->elem_size);
|
||||
|
||||
arr->len++;
|
||||
|
||||
@@ -295,11 +290,7 @@ ArrayListErr arraylist_pop_front(ArrayList *arr, void *out) {
|
||||
}
|
||||
|
||||
if (out != NULL) {
|
||||
memcpy(
|
||||
out,
|
||||
arr->buffer,
|
||||
arr->elem_size
|
||||
);
|
||||
memcpy(out, arr->buffer, arr->elem_size);
|
||||
}
|
||||
|
||||
memmove(
|
||||
@@ -330,11 +321,7 @@ ArrayListErr arraylist_remove_at(ArrayList *arr, size_t index, void *out) {
|
||||
}
|
||||
|
||||
if (out != NULL) {
|
||||
memcpy(
|
||||
out,
|
||||
arr->buffer + (index * arr->elem_size),
|
||||
arr->elem_size
|
||||
);
|
||||
memcpy(out, arr->buffer + (index * arr->elem_size), arr->elem_size);
|
||||
}
|
||||
|
||||
memmove(
|
||||
@@ -356,10 +343,7 @@ ArrayListErr arraylist_get(const ArrayList *arr, size_t index, void *out) {
|
||||
return ARRLIST_OUT_OF_BOUNDS;
|
||||
}
|
||||
|
||||
memcpy(
|
||||
out,
|
||||
arr->buffer + (index * arr->elem_size),
|
||||
arr->elem_size);
|
||||
memcpy(out, arr->buffer + (index * arr->elem_size), arr->elem_size);
|
||||
|
||||
return ARRLIST_OK;
|
||||
}
|
||||
@@ -373,10 +357,7 @@ ArrayListErr arraylist_set(ArrayList *arr, size_t index, void *data) {
|
||||
return ARRLIST_OUT_OF_BOUNDS;
|
||||
}
|
||||
|
||||
memcpy(
|
||||
arr->buffer + (index * arr->elem_size),
|
||||
data,
|
||||
arr->elem_size);
|
||||
memcpy(arr->buffer + (index * arr->elem_size), data, arr->elem_size);
|
||||
|
||||
return ARRLIST_OK;
|
||||
}
|
||||
@@ -395,7 +376,7 @@ ArrayListErr arraylist_resize(ArrayList *arr, size_t new_capacity) {
|
||||
}
|
||||
|
||||
if (new_capacity > SIZE_MAX / arr->elem_size) {
|
||||
return ARRLIST_ALLOC_OVERFLOW;
|
||||
return ARRLIST_ALLOC_OVERFLOW;
|
||||
}
|
||||
|
||||
uint8_t *tmp = realloc(arr->buffer, new_capacity * arr->elem_size);
|
||||
@@ -420,7 +401,7 @@ ArrayListErr arraylist_reserve(ArrayList *arr, size_t size_to_reserve) {
|
||||
if (arr->capacity + size_to_reserve > SIZE_MAX / arr->elem_size ||
|
||||
size_to_reserve > SIZE_MAX / arr->elem_size) {
|
||||
|
||||
return ARRLIST_ALLOC_OVERFLOW;
|
||||
return ARRLIST_ALLOC_OVERFLOW;
|
||||
}
|
||||
|
||||
uint8_t *tmp = realloc(
|
||||
@@ -436,7 +417,8 @@ ArrayListErr arraylist_reserve(ArrayList *arr, size_t size_to_reserve) {
|
||||
return ARRLIST_OK;
|
||||
}
|
||||
|
||||
ArrayListErr arraylist_slice(ArraySlice **slice, ArrayList *arr, size_t start, size_t len) {
|
||||
ArrayListErr
|
||||
arraylist_slice(ArraySlice **slice, ArrayList *arr, size_t start, size_t len) {
|
||||
if (arr == NULL || slice == NULL) {
|
||||
return ARRLIST_NULL_ARG;
|
||||
}
|
||||
@@ -469,7 +451,8 @@ ArrayListErr arraylist_slice(ArraySlice **slice, ArrayList *arr, size_t start, s
|
||||
return ARRLIST_OK;
|
||||
}
|
||||
|
||||
ArrayListErr arraylist_slice_unsafe(ArraySlice **slice, ArrayList *arr, size_t start, size_t len) {
|
||||
ArrayListErr arraylist_slice_unsafe(
|
||||
ArraySlice **slice, ArrayList *arr, size_t start, size_t len) {
|
||||
if (arr == NULL || slice == NULL) {
|
||||
return ARRLIST_NULL_ARG;
|
||||
}
|
||||
@@ -581,7 +564,7 @@ ArrayListErr arrayslice_advance(ArraySlice *slice, size_t n) {
|
||||
if (n > SIZE_MAX - slice->current || slice->current + n > slice->end) {
|
||||
return ARRLIST_OUT_OF_BOUNDS;
|
||||
}
|
||||
|
||||
|
||||
slice->current += n;
|
||||
|
||||
return ARRLIST_OK;
|
||||
@@ -606,8 +589,7 @@ ArrayListErr arrayslice_to_arraylist(ArrayList **arr, const ArraySlice *slice) {
|
||||
ArrayListErr init_err = arraylist_init(
|
||||
&new_arr,
|
||||
arraylist_capacity(slice->arr),
|
||||
slice->arr->elem_size
|
||||
);
|
||||
slice->arr->elem_size);
|
||||
|
||||
if (init_err != ARRLIST_OK) {
|
||||
return init_err;
|
||||
@@ -616,8 +598,7 @@ ArrayListErr arrayslice_to_arraylist(ArrayList **arr, const ArraySlice *slice) {
|
||||
memcpy(
|
||||
new_arr->buffer,
|
||||
slice->arr->buffer + (slice->start * slice->arr->elem_size),
|
||||
slice->arr->elem_size * len
|
||||
);
|
||||
slice->arr->elem_size * len);
|
||||
|
||||
new_arr->len = len;
|
||||
|
||||
Reference in New Issue
Block a user