typedef struct LL_PREFIX_ll_item_s { LL_DATA_TYPE data; struct LL_PREFIX_ll_item_s *next; } LL_PREFIX_ll_item_t; typedef struct LL_PREFIX_ll_items_s { LL_PREFIX_ll_item_t *items; struct LL_PREFIX_ll_items_s *next; } LL_PREFIX_ll_items_t; typedef struct { unsigned int initial; unsigned int increment; unsigned int item_count; LL_PREFIX_ll_item_t *head; LL_PREFIX_ll_item_t *tail; LL_PREFIX_ll_item_t *free_list; LL_PREFIX_ll_items_t *first_block; LL_PREFIX_ll_items_t *current_block; } LL_PREFIX_ll_t; LL_PREFIX_ll_t *LL_PREFIX_ll_init(unsigned int initial, unsigned int increment); void LL_PREFIX_ll_free(LL_PREFIX_ll_t *list); LL_PREFIX_ll_item_t *LL_PREFIX_ll_append(LL_PREFIX_ll_t *list, LL_DATA_TYPE *data); LL_PREFIX_ll_t *LL_PREFIX_ll_append_list(LL_PREFIX_ll_t *dest, LL_PREFIX_ll_t *source); #define LL_PREFIX_ll_head(l) (l->head) #define LL_PREFIX_ll_tail(l) (l->tail) #define LL_PREFIX_ll_size(l) (l->item_count) #define LL_PREFIX_ll_next(i) (i->next) #define LL_PREFIX_ll_data(i) (&(i->data))