From a0ac7fb33236fb3d2a2fc78fc57769625134d5ee Mon Sep 17 00:00:00 2001 From: Mineplay Date: Thu, 24 Apr 2025 12:40:21 -0500 Subject: [PATCH] feat(dynamic array): implemented append function for dynamic array --- Include/Fledasty/Core/DynamicArray.h | 4 +++- Src/Core/DynamicArray.c | 16 ++++++++++++++++ Tests/Main.c | 3 +++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/Include/Fledasty/Core/DynamicArray.h b/Include/Fledasty/Core/DynamicArray.h index 15549b5..f4e4ec7 100644 --- a/Include/Fledasty/Core/DynamicArray.h +++ b/Include/Fledasty/Core/DynamicArray.h @@ -38,4 +38,6 @@ typedef struct { FledastyError fledasty_dynamic_array_initialize(FledastyDynamicArray *new_dynamic_array, void *values, const size_t values_size, const size_t element_byte_size); FledastyError fledasty_dynamic_array_destroy(FledastyDynamicArray *current_dynamic_array); - #endif \ No newline at end of file +FledastyError fledasty_dynamic_array_append(FledastyDynamicArray *current_dynamic_array, void *value); + +#endif \ No newline at end of file diff --git a/Src/Core/DynamicArray.c b/Src/Core/DynamicArray.c index 7d902f1..30361be 100644 --- a/Src/Core/DynamicArray.c +++ b/Src/Core/DynamicArray.c @@ -67,5 +67,21 @@ FledastyError fledasty_dynamic_array_destroy(FledastyDynamicArray *current_dynam } current_dynamic_array->buffer = NULL; + return FLEDASTY_ERROR_NONE; +} + +FledastyError fledasty_dynamic_array_append(FledastyDynamicArray *current_dynamic_array, void *value) { + if (current_dynamic_array == NULL || value == NULL) { + return FLEDASTY_ERROR_INVALID_POINTER; + } + + if (current_dynamic_array->size == current_dynamic_array->capacity) { + current_dynamic_array->capacity += current_dynamic_array->capacity; + current_dynamic_array->buffer = (unsigned char*)hallocy_realloc(current_dynamic_array->buffer, current_dynamic_array->capacity * current_dynamic_array->element_byte_size); + } + + hallocy_copy_memory(current_dynamic_array->buffer + (current_dynamic_array->size * current_dynamic_array->element_byte_size), value, current_dynamic_array->element_byte_size); + current_dynamic_array->size += 1; + return FLEDASTY_ERROR_NONE; } \ No newline at end of file diff --git a/Tests/Main.c b/Tests/Main.c index 3a9a95c..aa54c30 100644 --- a/Tests/Main.c +++ b/Tests/Main.c @@ -69,6 +69,9 @@ int main() { FledastyDynamicArray test_dynamic_array; fledasty_dynamic_array_initialize(&test_dynamic_array, (int[]){11, 12, 13, 14, 15}, 5, sizeof(int)); + for (int i = 0; i < 10; i += 1) { + fledasty_dynamic_array_append(&test_dynamic_array, &i); + } fledasty_dynamic_array_destroy(&test_dynamic_array); printf("Done\n");