summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>1999-05-12 18:06:14 +0000
committerZeev Suraski <zeev@php.net>1999-05-12 18:06:14 +0000
commit853d6c6206f8789bf76be93a2278dcf54bbb64d2 (patch)
treec570e1e2a0057b25d045c96b2d32fb12ff07ec40
parent89a56a139bc7d2247f4e0d6b31eb1a4b8ee383e7 (diff)
downloadphp-git-853d6c6206f8789bf76be93a2278dcf54bbb64d2.tar.gz
Added prepend to llist
-rw-r--r--Zend/zend_llist.c16
-rw-r--r--Zend/zend_llist.h1
2 files changed, 17 insertions, 0 deletions
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);