From 853d6c6206f8789bf76be93a2278dcf54bbb64d2 Mon Sep 17 00:00:00 2001 From: Zeev Suraski Date: Wed, 12 May 1999 18:06:14 +0000 Subject: [PATCH] Added prepend to llist --- Zend/zend_llist.c | 16 ++++++++++++++++ Zend/zend_llist.h | 1 + 2 files changed, 17 insertions(+) diff --git a/Zend/zend_llist.c b/Zend/zend_llist.c index aabbe6ab21..2f5a011d4d 100644 --- a/Zend/zend_llist.c +++ b/Zend/zend_llist.c @@ -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; diff --git a/Zend/zend_llist.h b/Zend/zend_llist.h index f268af9b97..6d2e3e83ba 100644 --- a/Zend/zend_llist.h +++ b/Zend/zend_llist.h @@ -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); -- 2.50.1