32    assert(compare != NULL);
 
 
   51    assert(compare != NULL);
 
   53    memset(list, 0, 
sizeof(
SList));
 
 
   93        _slist_item_free(list, item);
 
 
  100    assert(list != NULL);
 
 
  107_slist_item_new(
Pool *pool, 
void *data)
 
  135    assert(list != NULL);
 
  136    assert(list->
count != SIZE_MAX);
 
  140    if(list->
count < SIZE_MAX)
 
  142        item = _slist_item_new(list->
pool, data);
 
 
  164    assert(list != NULL);
 
  165    assert(list->
count != SIZE_MAX);
 
  169    if(list->
count < SIZE_MAX)
 
  171        item = _slist_item_new(list->
pool, data);
 
 
  188_slist_prepend_new_sorted(
SList *list, 
void *data)
 
  190    assert(list != NULL);
 
  192    assert(list->
count != SIZE_MAX);
 
  196    bool inserted = 
false;
 
  198    while(*ptr && !inserted)
 
  200        if(list->
compare((*ptr)->data, data) >= 0)
 
  221    assert(list != NULL);
 
  223    assert(list->
count != SIZE_MAX);
 
  227    if(list->
count < SIZE_MAX)
 
  237                item = _slist_prepend_new_sorted(list, data);
 
  242            item = _slist_item_new(list->
pool, data);
 
 
  256    assert(list != NULL);
 
  257    assert(list->
head != NULL);
 
  258    assert(item != NULL);
 
  264    while(*ptr && !found)
 
  276            _slist_item_free(list, item);
 
 
  291    assert(list != NULL);
 
  296    bool completed = 
false;
 
  298    while(*ptr && !completed)
 
  300        if(!list->
compare((*ptr)->data, data))
 
  302            completed = !remove_all;
 
  311            _slist_item_free(list, *ptr);
 
 
  327    assert(list != NULL);
 
 
  359_slist_find(
const SList *list, 
SListItem *offset, 
void const *data)
 
  361    assert(list != NULL);
 
  367    while(iter && !found)
 
  383    assert(list != NULL);
 
  386    return _slist_find(list, NULL, data) != NULL;
 
 
  392    assert(list != NULL);
 
 
  404    assert(list != NULL);
 
  406    return _slist_find(list, offset, data);
 
 
  412    assert(list != NULL);
 
 
  420    assert(list != NULL);
 
 
  428    assert(list != NULL);
 
  430    return list->
head == NULL;
 
 
  436    assert(list != NULL);
 
  437    assert(item != NULL);
 
 
int32_t(* CompareFunc)(const void *a, const void *b)
void(* FreeFunc)(void *p)
void slist_destroy(SList *list)
void slist_init(SList *list, CompareFunc compare, FreeFunc free, Pool *pool)
SListItem * slist_find(const SList *list, SListItem *offset, void const *data)
SListItem * slist_append(SList *list, void *data)
void slist_remove_by_data(SList *list, void *data, bool remove_all)
size_t slist_count(const SList *list)
SListItem * slist_insert_sorted(SList *list, void *data)
SList * slist_new(CompareFunc compare, FreeFunc free, Pool *pool)
void slist_clear(SList *list)
bool slist_contains(const SList *list, const void *data)
void slist_item_free_data(const SList *list, SListItem *item)
void slist_remove(SList *list, SListItem *item)
SListItem * slist_prepend(SList *list, void *data)
SListItem * slist_head(const SList *list)
bool slist_empty(const SList *list)
void slist_free(SList *list)
void * slist_pop(SList *list)
Structure holding a list item.
Allocate groups of equal-sized chunks of memory.
void(* free)(struct _Pool *pool, void *ptr)
void *(* alloc)(struct _Pool *pool)