diff options
Diffstat (limited to 'ext/spl/spl_dllist.c')
-rw-r--r-- | ext/spl/spl_dllist.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/ext/spl/spl_dllist.c b/ext/spl/spl_dllist.c index c576104139..5e42c44d42 100644 --- a/ext/spl/spl_dllist.c +++ b/ext/spl/spl_dllist.c @@ -764,7 +764,7 @@ PHP_METHOD(SplDoublyLinkedList, offsetGet) PHP_METHOD(SplDoublyLinkedList, offsetSet) { zend_long index; - zend_bool index_is_null = 1; + bool index_is_null = 1; zval *value; spl_dllist_object *intern; @@ -1193,8 +1193,8 @@ PHP_METHOD(SplDoublyLinkedList, __serialize) zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &tmp); /* members */ - ZVAL_ARR(&tmp, zend_std_get_properties(&intern->std)); - Z_TRY_ADDREF(tmp); + ZVAL_ARR(&tmp, zend_proptable_to_symtable( + zend_std_get_properties(&intern->std), /* always_duplicate */ 1)); zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &tmp); } /* }}} */ @@ -1332,7 +1332,12 @@ zend_object_iterator *spl_dllist_get_iterator(zend_class_entry *ce, zval *object PHP_MINIT_FUNCTION(spl_dllist) /* {{{ */ { - REGISTER_SPL_STD_CLASS_EX(SplDoublyLinkedList, spl_dllist_object_new, class_SplDoublyLinkedList_methods); + spl_ce_SplDoublyLinkedList = register_class_SplDoublyLinkedList( + zend_ce_iterator, zend_ce_countable, zend_ce_arrayaccess, zend_ce_serializable + ); + spl_ce_SplDoublyLinkedList->create_object = spl_dllist_object_new; + spl_ce_SplDoublyLinkedList->get_iterator = spl_dllist_get_iterator; + memcpy(&spl_handler_SplDoublyLinkedList, &std_object_handlers, sizeof(zend_object_handlers)); spl_handler_SplDoublyLinkedList.offset = XtOffsetOf(spl_dllist_object, std); @@ -1347,17 +1352,12 @@ PHP_MINIT_FUNCTION(spl_dllist) /* {{{ */ REGISTER_SPL_CLASS_CONST_LONG(SplDoublyLinkedList, "IT_MODE_DELETE",SPL_DLLIST_IT_DELETE); REGISTER_SPL_CLASS_CONST_LONG(SplDoublyLinkedList, "IT_MODE_KEEP", 0); - REGISTER_SPL_IMPLEMENTS(SplDoublyLinkedList, Iterator); - REGISTER_SPL_IMPLEMENTS(SplDoublyLinkedList, Countable); - REGISTER_SPL_IMPLEMENTS(SplDoublyLinkedList, ArrayAccess); - REGISTER_SPL_IMPLEMENTS(SplDoublyLinkedList, Serializable); - - spl_ce_SplDoublyLinkedList->get_iterator = spl_dllist_get_iterator; - - REGISTER_SPL_SUB_CLASS_EX(SplQueue, SplDoublyLinkedList, spl_dllist_object_new, class_SplQueue_methods); - REGISTER_SPL_SUB_CLASS_EX(SplStack, SplDoublyLinkedList, spl_dllist_object_new, class_SplStack_methods); - + spl_ce_SplQueue = register_class_SplQueue(spl_ce_SplDoublyLinkedList); + spl_ce_SplQueue->create_object = spl_dllist_object_new; spl_ce_SplQueue->get_iterator = spl_dllist_get_iterator; + + spl_ce_SplStack = register_class_SplStack(spl_ce_SplDoublyLinkedList); + spl_ce_SplStack->create_object = spl_dllist_object_new; spl_ce_SplStack->get_iterator = spl_dllist_get_iterator; return SUCCESS; |