]> granicus.if.org Git - php/commitdiff
- Modify zend_llist_del() to receive a comparison function
authorZeev Suraski <zeev@php.net>
Fri, 26 Nov 1999 23:44:41 +0000 (23:44 +0000)
committerZeev Suraski <zeev@php.net>
Fri, 26 Nov 1999 23:44:41 +0000 (23:44 +0000)
Zend/zend_llist.c
Zend/zend_llist.h

index e7f69c546c5344567db56e0cc242782661793ed6..1024f0fa8e6c51391e4d212f887cdccb28bf4c0d 100644 (file)
@@ -63,12 +63,12 @@ ZEND_API void zend_llist_prepend_element(zend_llist *l, void *element)
 }
 
 
-ZEND_API void zend_llist_del_element(zend_llist *l, void *element)
+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 (!memcmp(current->data, element, l->size)) {
+               if (compare(current->data, element)) {
                        if (current->prev) {
                                current->prev->next = current->next;
                        } else {
index f2767c1d59db445523b6337809882196902221c3..c6eddb59b2073fce4e1f701f9f21842916b000c7 100644 (file)
@@ -42,7 +42,7 @@ BEGIN_EXTERN_C()
 ZEND_API void zend_llist_init(zend_llist *l, size_t size, void (*dtor)(void *data), unsigned char persistent);
 ZEND_API void zend_llist_add_element(zend_llist *l, void *element);
 ZEND_API void zend_llist_prepend_element(zend_llist *l, void *element);
-ZEND_API void zend_llist_del_element(zend_llist *l, void *element);
+ZEND_API void zend_llist_del_element(zend_llist *l, void *element, int (*compare)(void *element1, void *element2));
 ZEND_API void zend_llist_destroy(zend_llist *l);
 ZEND_API void zend_llist_clean(zend_llist *l);
 ZEND_API void zend_llist_remove_tail(zend_llist *l);