From 57e61c403651d58e742d03e14e74f46b27ed26fd Mon Sep 17 00:00:00 2001 From: Mineplay Date: Fri, 25 Apr 2025 04:42:15 -0500 Subject: [PATCH] feat(dynamic array): implemented has value function for dynamic array --- Include/Fledasty/Core/DynamicArray.h | 1 + Src/Core/DynamicArray.c | 15 +++++++++++++++ Tests/Main.c | 4 ++++ 3 files changed, 20 insertions(+) diff --git a/Include/Fledasty/Core/DynamicArray.h b/Include/Fledasty/Core/DynamicArray.h index 8f5028b..ab1d35d 100644 --- a/Include/Fledasty/Core/DynamicArray.h +++ b/Include/Fledasty/Core/DynamicArray.h @@ -47,6 +47,7 @@ FledastyError fledasty_dynamic_array_insert_after_value(FledastyDynamicArray *cu void *fledasty_dynamic_array_get(const FledastyDynamicArray *current_dynamic_array, const size_t index); +bool fledasty_dynamic_array_has_value(const FledastyDynamicArray *current_dynamic_array, void *value); inline static bool fledasty_dynamic_array_is_empty(const FledastyDynamicArray *current_dynamic_array) { return current_dynamic_array->size == 0; } #endif \ No newline at end of file diff --git a/Src/Core/DynamicArray.c b/Src/Core/DynamicArray.c index 308d86c..028e8fa 100644 --- a/Src/Core/DynamicArray.c +++ b/Src/Core/DynamicArray.c @@ -26,6 +26,7 @@ #include #include #include +#include FledastyError fledasty_dynamic_array_initialize(FledastyDynamicArray *new_dynamic_array, void *values, const size_t values_size, const size_t element_byte_size) { if (new_dynamic_array == NULL) { @@ -181,4 +182,18 @@ void *fledasty_dynamic_array_get(const FledastyDynamicArray *current_dynamic_arr } return current_dynamic_array->buffer + (index * current_dynamic_array->element_byte_size); +} + +bool fledasty_dynamic_array_has_value(const FledastyDynamicArray *current_dynamic_array, void *value) { + if (current_dynamic_array == NULL) { + return false; + } + + for (size_t byte_index = 0; byte_index < current_dynamic_array->size * current_dynamic_array->element_byte_size; byte_index += current_dynamic_array->element_byte_size) { + if (hallocy_compare_memory(current_dynamic_array->buffer + byte_index, value, current_dynamic_array->element_byte_size)) { + return true; + } + } + + return false; } \ No newline at end of file diff --git a/Tests/Main.c b/Tests/Main.c index b30b229..b38895a 100644 --- a/Tests/Main.c +++ b/Tests/Main.c @@ -88,6 +88,10 @@ int main() { printf("Dynamic array get: %d\n", *dynamic_array_data); } + if (fledasty_dynamic_array_has_value(&test_dynamic_array, &insert_value)) { + printf("Dynamic array contains %d\n", insert_value); + } + if (fledasty_dynamic_array_is_empty(&test_dynamic_array)) { printf("Dynamic array is empty\n"); }