diff --git a/Src/Core/DynamicArray.c b/Src/Core/DynamicArray.c index 6692c32..bce2953 100644 --- a/Src/Core/DynamicArray.c +++ b/Src/Core/DynamicArray.c @@ -22,7 +22,6 @@ * ----------------------------------------------------------------------------- */ #include "../../Include/Fledasty/Core/DynamicArray.h" -#include "Fledasty/Utils/Error.h" #include #include @@ -123,28 +122,28 @@ FledastyError fledasty_dynamic_array_insert_before_value(FledastyDynamicArray *c size_t byte_index = 0; size_t byte_size = current_dynamic_array->size * current_dynamic_array->element_byte_size; - while (byte_index < byte_size && !hallocy_compare_memory(current_dynamic_array->buffer + byte_index, before_value, current_dynamic_array->element_byte_size)) { + while (byte_index < byte_size) { + if (hallocy_compare_memory(current_dynamic_array->buffer + byte_index, before_value, current_dynamic_array->element_byte_size)) { + 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); + + if (current_dynamic_array->buffer == NULL) { + return FLEDASTY_ERROR_FAILED_ALLOCATION; + } + } + + hallocy_move_memory(current_dynamic_array->buffer + (byte_index + current_dynamic_array->element_byte_size), current_dynamic_array->buffer + byte_index, byte_size - byte_index); + hallocy_copy_memory(current_dynamic_array->buffer + byte_index, value, current_dynamic_array->element_byte_size); + current_dynamic_array->size += 1; + + return FLEDASTY_ERROR_NONE; + } + byte_index += current_dynamic_array->element_byte_size; } - if (byte_index == byte_size) { - return FLEDASTY_ERROR_VALUE_NOT_FOUND; - } - - 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); - - if (current_dynamic_array->buffer == NULL) { - return FLEDASTY_ERROR_FAILED_ALLOCATION; - } - } - - hallocy_move_memory(current_dynamic_array->buffer + (byte_index + current_dynamic_array->element_byte_size), current_dynamic_array->buffer + byte_index, byte_size - byte_index); - hallocy_copy_memory(current_dynamic_array->buffer + byte_index, value, current_dynamic_array->element_byte_size); - current_dynamic_array->size += 1; - - return FLEDASTY_ERROR_NONE; + return FLEDASTY_ERROR_VALUE_NOT_FOUND; } FledastyError fledasty_dynamic_array_insert_after_value(FledastyDynamicArray *current_dynamic_array, void *after_value, void *value) { @@ -154,29 +153,29 @@ FledastyError fledasty_dynamic_array_insert_after_value(FledastyDynamicArray *cu size_t byte_index = 0; size_t byte_size = current_dynamic_array->size * current_dynamic_array->element_byte_size; - while (byte_index < byte_size && !hallocy_compare_memory(current_dynamic_array->buffer + byte_index, after_value, current_dynamic_array->element_byte_size)) { + while (byte_index < byte_size) { + if (hallocy_compare_memory(current_dynamic_array->buffer + byte_index, after_value, current_dynamic_array->element_byte_size)) { + 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); + + if (current_dynamic_array->buffer == NULL) { + return FLEDASTY_ERROR_FAILED_ALLOCATION; + } + } + + byte_index += current_dynamic_array->element_byte_size; + hallocy_move_memory(current_dynamic_array->buffer + (byte_index + current_dynamic_array->element_byte_size), current_dynamic_array->buffer + byte_index, byte_size - byte_index); + hallocy_copy_memory(current_dynamic_array->buffer + byte_index, value, current_dynamic_array->element_byte_size); + current_dynamic_array->size += 1; + + return FLEDASTY_ERROR_NONE; + } + byte_index += current_dynamic_array->element_byte_size; } - if (byte_index == byte_size) { - return FLEDASTY_ERROR_VALUE_NOT_FOUND; - } - - 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); - - if (current_dynamic_array->buffer == NULL) { - return FLEDASTY_ERROR_FAILED_ALLOCATION; - } - } - - byte_index += current_dynamic_array->element_byte_size; - hallocy_move_memory(current_dynamic_array->buffer + (byte_index + current_dynamic_array->element_byte_size), current_dynamic_array->buffer + byte_index, byte_size - byte_index); - hallocy_copy_memory(current_dynamic_array->buffer + byte_index, value, current_dynamic_array->element_byte_size); - current_dynamic_array->size += 1; - - return FLEDASTY_ERROR_NONE; + return FLEDASTY_ERROR_VALUE_NOT_FOUND; } void *fledasty_dynamic_array_get(const FledastyDynamicArray *current_dynamic_array, const size_t index) { @@ -210,18 +209,18 @@ FledastyError fledasty_dynamic_array_remove_value(FledastyDynamicArray *current_ size_t byte_index = 0; size_t byte_size = current_dynamic_array->size * current_dynamic_array->element_byte_size; - while (byte_index < byte_size && !hallocy_compare_memory(current_dynamic_array->buffer + byte_index, value, current_dynamic_array->element_byte_size)) { + while (byte_index < byte_size) { + if (hallocy_compare_memory(current_dynamic_array->buffer + byte_index, value, current_dynamic_array->element_byte_size)) { + hallocy_copy_memory(current_dynamic_array->buffer + byte_index, current_dynamic_array->buffer + (byte_index + current_dynamic_array->element_byte_size), byte_size - (byte_index + current_dynamic_array->element_byte_size)); + current_dynamic_array->size -= 1; + + return FLEDASTY_ERROR_NONE; + } + byte_index += current_dynamic_array->element_byte_size; } - if (byte_index == byte_size) { - return FLEDASTY_ERROR_VALUE_NOT_FOUND; - } - - hallocy_copy_memory(current_dynamic_array->buffer + byte_index, current_dynamic_array->buffer + (byte_index + current_dynamic_array->element_byte_size), byte_size - (byte_index + current_dynamic_array->element_byte_size)); - current_dynamic_array->size -= 1; - - return FLEDASTY_ERROR_NONE; + return FLEDASTY_ERROR_VALUE_NOT_FOUND; } FledastyError fledasty_dynamic_array_clear(FledastyDynamicArray *current_dynamic_array) {