ZEND_API void zend_llist_del_element(zend_llist *l, void *element, int (*compare)(void *element1, void *element2)) { zend_llist_element *current=l->head; while (current) { if (compare(current->data, element)) { DEL_LLIST_ELEMENT(current, l); break; } current = current->next; } }
ZEND_API void zend_llist_apply_with_del(zend_llist *l, int (*func)(void *data)) { zend_llist_element *element, *next; element=l->head; while (element) { next = element->next; if (func(element->data)) { DEL_LLIST_ELEMENT(element, l); } element = next; } }