A bunch of little utility headers you can add anywhere.
ds.h is the original header I made and has the content of all the other headers combined.
A simple hidden-metadata dynamic vector with simple usage:
int *numbers = list_init(int);
list_push(numbers, 3);
list_push(numbers, 1);
list_push(numbers, 2);
list_push(numbers, 5);
list_push(numbers, 7);
printf("last: %i\n", list_last(numbers));
list_pop(numbers);
numbers[2] = 8;
if(list_full(numbers)){
list_resize(numbers, 32);
}
printf("size: %lu capacity: %lu\n", list_size(numbers), list_capacity(numbers));
list_swap_delete(numbers, 2);
printf("last number: %i\n", list_last(numbers));
int *numbers2 = list_alloc(int, 4);
list_push(numbers2, 9);
list_push(numbers2, 8);
list_push(numbers2, 7);
list_push(numbers2, 6);
list_join(numbers, numbers2);
list_free(numbers2);
printf("numbers: ");
for(size_t i = 0; i < list_size(numbers); i++){
printf("%i ", numbers[i]);
}
printf("\n");
list_free(numbers);Comes in 3 varieties: hash32_t which uses 32 bit keys, hash64_t which uses 64 bit keys and string_hash_t which uses string keys
Demonstration TBD
A C-compatible null-terminated string system with length, removes usual headache with strings in C. Demonstration TBD