Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * what type of tree is this? singly-linked list?
- * doubly linked list, recrusive linear list> is it even a list?
- * I wrote this drunk. -- Dale Weiler (2012) (c) a.k.a graphitemaster
- */
- typedef struct {
- uint32_t index;
- char *fname;
- } t_list;
- typedef struct {
- t_list list;
- t_list **array;
- uint32_t size;
- } t_array;
- void t_list_construct(t_list *t, const char *n) {
- t->fname = strdup(n);
- }
- void t_list_reloadall(t_list *t) {
- t->index = r_loadtex(t->fname);
- }
- void t_array_construct(t_array *a) {
- a->size = 0;
- }
- t_list *t_array_add_list (t_array *a, t_list *t) {
- uint32_t i;
- for (i = 0; i < a->size; i++) {
- if(!a->array[i]) {
- a->array[i] = t;
- return a->array[i];
- }
- }
- t_list **e = malloc(sizeof(t_list*) * a->size + 1);
- memcpy(e, a->array, a->size * 4);
- e[a->size] = t;
- a->size ++;
- free(a->array);
- a->array = e;
- return a->array[a->size - 1];
- }
- t_list *t_array_add_empty(t_array *a) {
- return t_array_add_list(a, (t_list*)malloc(sizeof(t_list)));
- }
- t_list *t_array_add_file (t_array *a, char *p) {
- uint32_t i;
- for (i = 0; i < a->size; i++) {
- if (a->array[i]) {
- if (!strcmp(p, a->array[i]->fname))
- return a->array[i];
- }
- }
- t_list *x = t_array_add_empty(a);
- x->fname = strdup(p);
- return x;
- }
- void t_array_remove_index(t_array *a, uint32_t i) {
- if (i >= a->size) return;
- free(a->array[i]);
- a->array[i] = NULL;
- }
- void t_array_remove_list (t_array *a, t_list *t) {
- uint32_t i;
- for (i = 0; i < a->size; i++) {
- if (a->array[i] == t) {
- free(a->array[i]);
- a->array[i] = NULL;
- }
- }
- }
- t_list *t_array_get(t_array *a, uint32_t i) {
- if (i >= a->size) return &a->list;
- return a->array[i];
- }
- void t_array_reloadall(t_array *a) {
- uint32_t i;
- for (i = 0; i < a->size; i++)
- if (a->array[i])
- t_list_reloadall(a->array[i]);
- }
Advertisement
Add Comment
Please, Sign In to add comment