Index: ext/spl/spl_dllist.c =================================================================== RCS file: /repository/php-src/ext/spl/spl_dllist.c,v retrieving revision 1.1.2.18 diff -u -p -r1.1.2.18 spl_dllist.c --- ext/spl/spl_dllist.c 31 Dec 2008 11:15:43 -0000 1.1.2.18 +++ ext/spl/spl_dllist.c 15 Jun 2009 19:47:58 -0000 @@ -1036,6 +1036,16 @@ SPL_METHOD(SplDoublyLinkedList, key) } /* }}} */ +/* {{{ proto void SplDoublyLinkedList::prev() U + Move to next entry */ +SPL_METHOD(SplDoublyLinkedList, prev) +{ + spl_dllist_object *intern = (spl_dllist_object*)zend_object_store_get_object(getThis() TSRMLS_CC); + + spl_dllist_it_helper_move_forward(&intern->traverse_pointer, &intern->traverse_position, intern->llist, intern->flags ^ SPL_DLLIST_IT_LIFO TSRMLS_CC); +} +/* }}} */ + /* {{{ proto void SplDoublyLinkedList::next() U Move to next entry */ SPL_METHOD(SplDoublyLinkedList, next) @@ -1164,6 +1174,7 @@ static const zend_function_entry spl_fun SPL_ME(SplDoublyLinkedList, current, NULL, ZEND_ACC_PUBLIC) SPL_ME(SplDoublyLinkedList, key, NULL, ZEND_ACC_PUBLIC) SPL_ME(SplDoublyLinkedList, next, NULL, ZEND_ACC_PUBLIC) + SPL_ME(SplDoublyLinkedList, prev, NULL, ZEND_ACC_PUBLIC) SPL_ME(SplDoublyLinkedList, valid, NULL, ZEND_ACC_PUBLIC) {NULL, NULL, NULL} }; Index: ext/spl/tests/dllist_010.phpt =================================================================== RCS file: ext/spl/tests/dllist_010.phpt diff -N ext/spl/tests/dllist_010.phpt --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ext/spl/tests/dllist_010.phpt 15 Jun 2009 19:47:58 -0000 @@ -0,0 +1,27 @@ +--TEST-- +SPL: DoublyLinkedList: prev +--FILE-- +push(1); +$dll->push(2); +$dll->push(3); +$dll->push(4); + + +$dll->rewind(); +echo $dll->current()."\n"; +$dll->next(); +$dll->next(); +echo $dll->current()."\n"; +$dll->prev(); +echo $dll->current()."\n"; + +?> +===DONE=== + +--EXPECTF-- +1 +3 +2 +===DONE===