f6-dynamic-array #18

Merged
Mineplay merged 10 commits from f6-dynamic-array into main 2025-04-25 10:21:54 -05:00
4 changed files with 26 additions and 0 deletions
Showing only changes of commit 42f537ebd1 - Show all commits

View file

@ -39,5 +39,6 @@ FledastyError fledasty_dynamic_array_initialize(FledastyDynamicArray *new_dynami
FledastyError fledasty_dynamic_array_destroy(FledastyDynamicArray *current_dynamic_array);
FledastyError fledasty_dynamic_array_append(FledastyDynamicArray *current_dynamic_array, void *value);
FledastyError fledasty_dynamic_array_insert_at_index(FledastyDynamicArray *current_dynamic_array, const size_t index, void *value);
#endif

View file

@ -27,6 +27,7 @@ typedef enum {
FLEDASTY_ERROR_NONE = 0,
FLEDASTY_ERROR_FAILED_ALLOCATION = 1,
FLEDASTY_ERROR_INVALID_POINTER = 2,
FLEDASTY_ERROR_INDEX_OUT_OF_RANGE = 3,
} FledastyError;
#endif

View file

@ -83,5 +83,26 @@ FledastyError fledasty_dynamic_array_append(FledastyDynamicArray *current_dynami
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;
}
FledastyError fledasty_dynamic_array_insert_at_index(FledastyDynamicArray *current_dynamic_array, const size_t index, void *value) {
if (current_dynamic_array == NULL || value == NULL) {
return FLEDASTY_ERROR_FAILED_ALLOCATION;
}
if (index >= current_dynamic_array->size) {
return FLEDASTY_ERROR_INDEX_OUT_OF_RANGE;
}
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);
}
unsigned char *insert_pointer = current_dynamic_array->buffer + (index * current_dynamic_array->element_byte_size);
hallocy_move_memory(insert_pointer, insert_pointer + current_dynamic_array->element_byte_size, (current_dynamic_array->size - index) * current_dynamic_array->element_byte_size);
hallocy_copy_memory(insert_pointer, value, current_dynamic_array->element_byte_size);
return FLEDASTY_ERROR_NONE;
}

View file

@ -73,6 +73,9 @@ int main() {
fledasty_dynamic_array_append(&test_dynamic_array, &i);
}
int insert_value = 18;
fledasty_dynamic_array_insert_at_index(&test_dynamic_array, 1, &insert_value);
fledasty_dynamic_array_destroy(&test_dynamic_array);
printf("Done\n");
return 0;