1 #ifndef _LIST_H 2 #define _LIST_H 3 4 #include "alloc.h" 5 6 typedef struct _list { 7 void **array; 8 size_t allocated; 9 size_t length; 10 } list; 11 12 #define START_LENGTH 10 13 14 #define l_elem(lst, i) ((lst)->array[i]) 15 #define l_length(lst) ((lst)->length) 16 #define l_allocated(lst) ((lst)->allocated) 17 18 19 list *l_newsz(size_t sz); 20 #define l_new() (l_newsz(10)) 21 void l_free(list *lst); 22 23 void l_reset(list *lst); 24 void l_makeroom(list *lst, size_t size); 25 26 void l_append(list *lst, void *x); 27 void *l_deletelast(list *lst); 28 void l_insert(list *lst, size_t i, void *x); 29 void *l_delete(list *lst, size_t i); 30 void *l_fastdelete(list *lst, size_t i); 31 32 #define l_intelem(lst,i) ((int) (lst)->array[i]) 33 #define l_appendint(lst,a) l_append(lst,(void *)(a)) 34 35 void l_appendlist(list * lst1, list * lst2); 36 void l_copy(list * lst1, list * lst2); 37 list *l_new_copy(list * lst); 38 39 #endif 40