f6-dynamic-array #18
4 changed files with 26 additions and 0 deletions
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue