feat(utilities): added the List struct for a general purpose dynamic array
This commit is contained in:
parent
5b134edac6
commit
7113b53caa
2 changed files with 43 additions and 0 deletions
|
|
@ -1,5 +1,37 @@
|
|||
#include "utilities.h"
|
||||
|
||||
List* list_new(size_t item_size) {
|
||||
List* list = calloc(1, sizeof(List));
|
||||
if (!list) { perror("ERROR: memory allocation in new_list failed!"); return NULL; }
|
||||
|
||||
list->items = calloc(LIST_INIT_CAPACITY, item_size);
|
||||
if (!list->items) { perror("ERROR: memory allocation in new_list failed!"); free(list); return NULL; }
|
||||
|
||||
list->len = 0;
|
||||
list->capacity = LIST_INIT_CAPACITY;
|
||||
list->item_size = item_size;
|
||||
return list;
|
||||
}
|
||||
|
||||
int list_push(List* list, void* item) {
|
||||
if (!list || !item) return 0;
|
||||
|
||||
if (list->len == list->capacity) {
|
||||
size_t new_capacity = list->capacity * 2;
|
||||
void* new_items = realloc(list->items, new_capacity * list->item_size);
|
||||
if (!new_items) { perror("ERROR: memory reallocation failed in list_push!"); return 0; }
|
||||
|
||||
list->items = new_items;
|
||||
list->capacity = new_capacity;
|
||||
}
|
||||
|
||||
char* dest = (char*)list->items + (list->len * list->item_size);
|
||||
memcpy(dest, item, list->item_size);
|
||||
list->len++;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
PathType get_path_type(const char* path) {
|
||||
struct stat st;
|
||||
int rc = stat(path, &st);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue