]> granicus.if.org Git - php/commitdiff
Added prepend to llist
authorZeev Suraski <zeev@php.net>
Wed, 12 May 1999 18:06:14 +0000 (18:06 +0000)
committerZeev Suraski <zeev@php.net>
Wed, 12 May 1999 18:06:14 +0000 (18:06 +0000)
Zend/zend_llist.c
Zend/zend_llist.h

index aabbe6ab21691da9bfc7e7127bb6717a1f10bd5c..2f5a011d4d6dc4283b27fc475f19ab2d452f0168 100644 (file)
@@ -43,6 +43,22 @@ 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_llist_element *tmp = pemalloc(sizeof(zend_llist_element)+l->size-1, l->persistent);
+
+       tmp->next = l->head;
+       tmp->prev = NULL;
+       if (l->head) {
+               l->head->prev = tmp;
+       } else {
+               l->tail = tmp;
+       }
+       l->head = tmp;
+       memcpy(tmp->data, element, l->size);
+}
+
+
 ZEND_API void zend_llist_del_element(zend_llist *l, void *element)
 {
        zend_llist_element *current=l->head;
index f268af9b975c401755e372d4cfa19338b089e4cb..6d2e3e83ba4a5b764f5163df3c2d82524f880e2d 100644 (file)
@@ -36,6 +36,7 @@ typedef struct {
 
 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_destroy(zend_llist *l);
 ZEND_API void zend_llist_clean(zend_llist *l);