Lines Matching refs:intern

124 	zend_object_iterator   intern;  member
429 iterator->intern.data = (void*)object; in spl_recursive_it_get_iterator()
430 iterator->intern.funcs = ce->iterator_funcs.funcs; in spl_recursive_it_get_iterator()
447 spl_recursive_it_object *intern; in spl_recursive_it_it_construct() local
514 intern = (spl_recursive_it_object*)zend_object_store_get_object(object TSRMLS_CC); in spl_recursive_it_it_construct()
515 intern->iterators = emalloc(sizeof(spl_sub_iterator)); in spl_recursive_it_it_construct()
516 intern->level = 0; in spl_recursive_it_it_construct()
517 intern->mode = mode; in spl_recursive_it_it_construct()
518 intern->flags = flags; in spl_recursive_it_it_construct()
519 intern->max_depth = -1; in spl_recursive_it_it_construct()
520 intern->in_iteration = 0; in spl_recursive_it_it_construct()
521 intern->ce = Z_OBJCE_P(object); in spl_recursive_it_it_construct()
523 …zend_hash_find(&intern->ce->function_table, "beginiteration", sizeof("beginiteration"), (void **) … in spl_recursive_it_it_construct()
524 if (intern->beginIteration->common.scope == ce_base) { in spl_recursive_it_it_construct()
525 intern->beginIteration = NULL; in spl_recursive_it_it_construct()
527 …zend_hash_find(&intern->ce->function_table, "enditeration", sizeof("enditeration"), (void **) &int… in spl_recursive_it_it_construct()
528 if (intern->endIteration->common.scope == ce_base) { in spl_recursive_it_it_construct()
529 intern->endIteration = NULL; in spl_recursive_it_it_construct()
531 …zend_hash_find(&intern->ce->function_table, "callhaschildren", sizeof("callHasChildren"), (void **… in spl_recursive_it_it_construct()
532 if (intern->callHasChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
533 intern->callHasChildren = NULL; in spl_recursive_it_it_construct()
535 …zend_hash_find(&intern->ce->function_table, "callgetchildren", sizeof("callGetChildren"), (void **… in spl_recursive_it_it_construct()
536 if (intern->callGetChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
537 intern->callGetChildren = NULL; in spl_recursive_it_it_construct()
539 …zend_hash_find(&intern->ce->function_table, "beginchildren", sizeof("beginchildren"), (void **) &i… in spl_recursive_it_it_construct()
540 if (intern->beginChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
541 intern->beginChildren = NULL; in spl_recursive_it_it_construct()
543 …zend_hash_find(&intern->ce->function_table, "endchildren", sizeof("endchildren"), (void **) &inter… in spl_recursive_it_it_construct()
544 if (intern->endChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
545 intern->endChildren = NULL; in spl_recursive_it_it_construct()
547 …zend_hash_find(&intern->ce->function_table, "nextelement", sizeof("nextElement"), (void **) &inter… in spl_recursive_it_it_construct()
548 if (intern->nextElement->common.scope == ce_base) { in spl_recursive_it_it_construct()
549 intern->nextElement = NULL; in spl_recursive_it_it_construct()
552 intern->iterators[0].iterator = ce_iterator->get_iterator(ce_iterator, iterator, 0 TSRMLS_CC); in spl_recursive_it_it_construct()
556 intern->iterators[0].zobject = iterator; in spl_recursive_it_it_construct()
557 intern->iterators[0].ce = ce_iterator; in spl_recursive_it_it_construct()
558 intern->iterators[0].state = RS_START; in spl_recursive_it_it_construct()
565 while (intern->level >= 0) { in spl_recursive_it_it_construct()
566 sub_iter = intern->iterators[intern->level].iterator; in spl_recursive_it_it_construct()
568 zval_ptr_dtor(&intern->iterators[intern->level--].zobject); in spl_recursive_it_it_construct()
570 efree(intern->iterators); in spl_recursive_it_it_construct()
571 intern->iterators = NULL; in spl_recursive_it_it_construct()
902 spl_recursive_it_object *intern; in spl_RecursiveIteratorIterator_new_ex() local
904 intern = emalloc(sizeof(spl_recursive_it_object)); in spl_RecursiveIteratorIterator_new_ex()
905 memset(intern, 0, sizeof(spl_recursive_it_object)); in spl_RecursiveIteratorIterator_new_ex()
908 smart_str_appendl(&intern->prefix[0], "", 0); in spl_RecursiveIteratorIterator_new_ex()
909 smart_str_appendl(&intern->prefix[1], "| ", 2); in spl_RecursiveIteratorIterator_new_ex()
910 smart_str_appendl(&intern->prefix[2], " ", 2); in spl_RecursiveIteratorIterator_new_ex()
911 smart_str_appendl(&intern->prefix[3], "|-", 2); in spl_RecursiveIteratorIterator_new_ex()
912 smart_str_appendl(&intern->prefix[4], "\\-", 2); in spl_RecursiveIteratorIterator_new_ex()
913 smart_str_appendl(&intern->prefix[5], "", 0); in spl_RecursiveIteratorIterator_new_ex()
915 smart_str_appendl(&intern->postfix[0], "", 0); in spl_RecursiveIteratorIterator_new_ex()
918 zend_object_std_init(&intern->std, class_type TSRMLS_CC); in spl_RecursiveIteratorIterator_new_ex()
919 object_properties_init(&intern->std, class_type); in spl_RecursiveIteratorIterator_new_ex()
921 …retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)spl_RecursiveIteratorIte… in spl_RecursiveIteratorIterator_new_ex()
1285 spl_dual_it_object *intern; in spl_dual_it_get_method() local
1287 intern = (spl_dual_it_object*)zend_object_store_get_object(*object_ptr TSRMLS_CC); in spl_dual_it_get_method()
1290 if (!function_handler && intern->inner.ce) { in spl_dual_it_get_method()
1291 …if (zend_hash_find(&intern->inner.ce->function_table, method, method_len+1, (void **) &function_ha… in spl_dual_it_get_method()
1292 if (Z_OBJ_HT_P(intern->inner.zobject)->get_method) { in spl_dual_it_get_method()
1293 *object_ptr = intern->inner.zobject; in spl_dual_it_get_method()
1297 *object_ptr = intern->inner.zobject; in spl_dual_it_get_method()
1312 spl_dual_it_object *intern; in spl_dual_it_call_method() local
1314 intern = (spl_dual_it_object*)zend_object_store_get_object(getThis() TSRMLS_CC); in spl_dual_it_call_method()
1318 …php_error_docref(NULL TSRMLS_CC, E_ERROR, "Method %s::%s() does not exist", intern->inner.ce->name… in spl_dual_it_call_method()
1339 …php_error_docref(NULL TSRMLS_CC, E_ERROR, "Unable to call %s::%s()", intern->inner.ce->name, metho… in spl_dual_it_call_method()
1348 #define SPL_CHECK_CTOR(intern, classname) \ argument
1349 if (intern->dit_type == DIT_Unknown) { \
1355 #define APPENDIT_CHECK_CTOR(intern) SPL_CHECK_CTOR(intern, AppendIterator) argument
1357 static inline int spl_dual_it_fetch(spl_dual_it_object *intern, int check_more TSRMLS_DC);
1374 spl_dual_it_object *intern; in spl_dual_it_construct() local
1379 intern = (spl_dual_it_object*)zend_object_store_get_object(getThis() TSRMLS_CC); in spl_dual_it_construct()
1381 if (intern->dit_type != DIT_Unknown) { in spl_dual_it_construct()
1388 intern->dit_type = dit_type; in spl_dual_it_construct()
1391 intern->u.limit.offset = 0; /* start at beginning */ in spl_dual_it_construct()
1392 intern->u.limit.count = -1; /* get all */ in spl_dual_it_construct()
1393 …ters(ZEND_NUM_ARGS() TSRMLS_CC, "O|ll", &zobject, ce_inner, &intern->u.limit.offset, &intern->u.li… in spl_dual_it_construct()
1397 if (intern->u.limit.offset < 0) { in spl_dual_it_construct()
1402 if (intern->u.limit.count < 0 && intern->u.limit.count != -1) { in spl_dual_it_construct()
1421 intern->u.caching.flags |= flags & CIT_PUBLIC; in spl_dual_it_construct()
1422 MAKE_STD_ZVAL(intern->u.caching.zcache); in spl_dual_it_construct()
1423 array_init(intern->u.caching.zcache); in spl_dual_it_construct()
1470 spl_instantiate(spl_ce_ArrayIterator, &intern->u.append.zarrayit, 1 TSRMLS_CC); in spl_dual_it_construct()
1471 …zend_call_method_with_0_params(&intern->u.append.zarrayit, spl_ce_ArrayIterator, &spl_ce_ArrayIter… in spl_dual_it_construct()
1472intern->u.append.iterator = spl_ce_ArrayIterator->get_iterator(spl_ce_ArrayIterator, intern->u.app… in spl_dual_it_construct()
1474 return intern; in spl_dual_it_construct()
1482 intern->u.regex.use_flags = ZEND_NUM_ARGS() >= 5; in spl_dual_it_construct()
1483 intern->u.regex.flags = 0; in spl_dual_it_construct()
1484 intern->u.regex.preg_flags = 0; in spl_dual_it_construct()
1485 …C, "Os|lll", &zobject, ce_inner, &regex, &regex_len, &mode, &intern->u.regex.flags, &intern->u.reg… in spl_dual_it_construct()
1494 intern->u.regex.mode = mode; in spl_dual_it_construct()
1495 intern->u.regex.regex = estrndup(regex, regex_len); in spl_dual_it_construct()
1496 intern->u.regex.regex_len = regex_len; in spl_dual_it_construct()
1497 intern->u.regex.pce = pcre_get_compiled_regex_cache(regex, regex_len TSRMLS_CC); in spl_dual_it_construct()
1498 if (intern->u.regex.pce == NULL) { in spl_dual_it_construct()
1503 intern->u.regex.pce->refcount++; in spl_dual_it_construct()
1521 intern->u.cbfilter = cfi; in spl_dual_it_construct()
1537 intern->inner.zobject = zobject; in spl_dual_it_construct()
1538 intern->inner.ce = dit_type == DIT_IteratorIterator ? ce : Z_OBJCE_P(zobject); in spl_dual_it_construct()
1539 intern->inner.object = zend_object_store_get_object(zobject TSRMLS_CC); in spl_dual_it_construct()
1540 intern->inner.iterator = intern->inner.ce->get_iterator(intern->inner.ce, zobject, 0 TSRMLS_CC); in spl_dual_it_construct()
1542 return intern; in spl_dual_it_construct()
1566 spl_dual_it_object *intern; in SPL_METHOD() local
1572 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
1574 if (intern->inner.zobject) { in SPL_METHOD()
1575 RETVAL_ZVAL(intern->inner.zobject, 1, 0); in SPL_METHOD()
1581 static inline void spl_dual_it_require(spl_dual_it_object *intern TSRMLS_DC) in spl_dual_it_require()
1583 if (!intern->inner.iterator) { in spl_dual_it_require()
1588 static inline void spl_dual_it_free(spl_dual_it_object *intern TSRMLS_DC) in spl_dual_it_free()
1590 if (intern->inner.iterator && intern->inner.iterator->funcs->invalidate_current) { in spl_dual_it_free()
1591 intern->inner.iterator->funcs->invalidate_current(intern->inner.iterator TSRMLS_CC); in spl_dual_it_free()
1593 if (intern->current.data) { in spl_dual_it_free()
1594 zval_ptr_dtor(&intern->current.data); in spl_dual_it_free()
1595 intern->current.data = NULL; in spl_dual_it_free()
1597 if (intern->current.key) { in spl_dual_it_free()
1598 zval_ptr_dtor(&intern->current.key); in spl_dual_it_free()
1599 intern->current.key = NULL; in spl_dual_it_free()
1601 if (intern->dit_type == DIT_CachingIterator || intern->dit_type == DIT_RecursiveCachingIterator) { in spl_dual_it_free()
1602 if (intern->u.caching.zstr) { in spl_dual_it_free()
1603 zval_ptr_dtor(&intern->u.caching.zstr); in spl_dual_it_free()
1604 intern->u.caching.zstr = NULL; in spl_dual_it_free()
1606 if (intern->u.caching.zchildren) { in spl_dual_it_free()
1607 zval_ptr_dtor(&intern->u.caching.zchildren); in spl_dual_it_free()
1608 intern->u.caching.zchildren = NULL; in spl_dual_it_free()
1613 static inline void spl_dual_it_rewind(spl_dual_it_object *intern TSRMLS_DC) in spl_dual_it_rewind()
1615 spl_dual_it_free(intern TSRMLS_CC); in spl_dual_it_rewind()
1616 intern->current.pos = 0; in spl_dual_it_rewind()
1617 if (intern->inner.iterator->funcs->rewind) { in spl_dual_it_rewind()
1618 intern->inner.iterator->funcs->rewind(intern->inner.iterator TSRMLS_CC); in spl_dual_it_rewind()
1622 static inline int spl_dual_it_valid(spl_dual_it_object *intern TSRMLS_DC) in spl_dual_it_valid()
1624 if (!intern->inner.iterator) { in spl_dual_it_valid()
1628 return intern->inner.iterator->funcs->valid(intern->inner.iterator TSRMLS_CC); in spl_dual_it_valid()
1631 static inline int spl_dual_it_fetch(spl_dual_it_object *intern, int check_more TSRMLS_DC) in spl_dual_it_fetch() argument
1635 spl_dual_it_free(intern TSRMLS_CC); in spl_dual_it_fetch()
1636 if (!check_more || spl_dual_it_valid(intern TSRMLS_CC) == SUCCESS) { in spl_dual_it_fetch()
1637 intern->inner.iterator->funcs->get_current_data(intern->inner.iterator, &data TSRMLS_CC); in spl_dual_it_fetch()
1639 intern->current.data = *data; in spl_dual_it_fetch()
1640 Z_ADDREF_P(intern->current.data); in spl_dual_it_fetch()
1643 MAKE_STD_ZVAL(intern->current.key); in spl_dual_it_fetch()
1644 if (intern->inner.iterator->funcs->get_current_key) { in spl_dual_it_fetch()
1645intern->inner.iterator->funcs->get_current_key(intern->inner.iterator, intern->current.key TSRMLS_… in spl_dual_it_fetch()
1647 zval_ptr_dtor(&intern->current.key); in spl_dual_it_fetch()
1648 intern->current.key = NULL; in spl_dual_it_fetch()
1651 ZVAL_LONG(intern->current.key, intern->current.pos); in spl_dual_it_fetch()
1658 static inline void spl_dual_it_next(spl_dual_it_object *intern, int do_free TSRMLS_DC) in spl_dual_it_next() argument
1661 spl_dual_it_free(intern TSRMLS_CC); in spl_dual_it_next()
1663 spl_dual_it_require(intern TSRMLS_CC); in spl_dual_it_next()
1665 intern->inner.iterator->funcs->move_forward(intern->inner.iterator TSRMLS_CC); in spl_dual_it_next()
1666 intern->current.pos++; in spl_dual_it_next()
1675 spl_dual_it_object *intern; in SPL_METHOD() local
1681 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
1683 spl_dual_it_rewind(intern TSRMLS_CC); in SPL_METHOD()
1684 spl_dual_it_fetch(intern, 1 TSRMLS_CC); in SPL_METHOD()
1694 spl_dual_it_object *intern; in SPL_METHOD() local
1700 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
1702 RETURN_BOOL(intern->current.data); in SPL_METHOD()
1715 spl_dual_it_object *intern; in SPL_METHOD() local
1721 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
1723 if (intern->current.key) { in SPL_METHOD()
1724 RETURN_ZVAL(intern->current.key, 1, 0); in SPL_METHOD()
1739 spl_dual_it_object *intern; in SPL_METHOD() local
1745 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
1747 if (intern->current.data) { in SPL_METHOD()
1748 RETVAL_ZVAL(intern->current.data, 1, 0); in SPL_METHOD()
1760 spl_dual_it_object *intern; in SPL_METHOD() local
1766 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
1768 spl_dual_it_next(intern, 1 TSRMLS_CC); in SPL_METHOD()
1769 spl_dual_it_fetch(intern, 1 TSRMLS_CC); in SPL_METHOD()
1772 static inline void spl_filter_it_fetch(zval *zthis, spl_dual_it_object *intern TSRMLS_DC) in spl_filter_it_fetch()
1776 while (spl_dual_it_fetch(intern, 1 TSRMLS_CC) == SUCCESS) { in spl_filter_it_fetch()
1777 zend_call_method_with_0_params(&zthis, intern->std.ce, NULL, "accept", &retval); in spl_filter_it_fetch()
1788 intern->inner.iterator->funcs->move_forward(intern->inner.iterator TSRMLS_CC); in spl_filter_it_fetch()
1790 spl_dual_it_free(intern TSRMLS_CC); in spl_filter_it_fetch()
1793 static inline void spl_filter_it_rewind(zval *zthis, spl_dual_it_object *intern TSRMLS_DC) in spl_filter_it_rewind()
1795 spl_dual_it_rewind(intern TSRMLS_CC); in spl_filter_it_rewind()
1796 spl_filter_it_fetch(zthis, intern TSRMLS_CC); in spl_filter_it_rewind()
1799 static inline void spl_filter_it_next(zval *zthis, spl_dual_it_object *intern TSRMLS_DC) in spl_filter_it_next()
1801 spl_dual_it_next(intern, 1 TSRMLS_CC); in spl_filter_it_next()
1802 spl_filter_it_fetch(zthis, intern TSRMLS_CC); in spl_filter_it_next()
1809 spl_dual_it_object *intern; in SPL_METHOD() local
1815 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
1816 spl_filter_it_rewind(getThis(), intern TSRMLS_CC); in SPL_METHOD()
1823 spl_dual_it_object *intern; in SPL_METHOD() local
1829 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
1830 spl_filter_it_next(getThis(), intern TSRMLS_CC); in SPL_METHOD()
1852 spl_dual_it_object *intern; in SPL_METHOD() local
1859 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
1861 …zend_call_method_with_0_params(&intern->inner.zobject, intern->inner.ce, NULL, "haschildren", &ret… in SPL_METHOD()
1873 spl_dual_it_object *intern; in SPL_METHOD() local
1880 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
1882 …zend_call_method_with_0_params(&intern->inner.zobject, intern->inner.ce, NULL, "getchildren", &ret… in SPL_METHOD()
1895 spl_dual_it_object *intern; in SPL_METHOD() local
1902 intern = (spl_dual_it_object*)zend_object_store_get_object(getThis() TSRMLS_CC); in SPL_METHOD()
1904 …zend_call_method_with_0_params(&intern->inner.zobject, intern->inner.ce, NULL, "getchildren", &ret… in SPL_METHOD()
1906 …spl_instantiate_arg_ex2(Z_OBJCE_P(getThis()), &return_value, 0, retval, intern->u.cbfilter->fci.fu… in SPL_METHOD()
1931 …spl_dual_it_object *intern = (spl_dual_it_object*)zend_object_store_get_object(getThis() TSRML… in SPL_METHOD() local
1932 zend_fcall_info *fci = &intern->u.cbfilter->fci; in SPL_METHOD()
1933 zend_fcall_info_cache *fcc = &intern->u.cbfilter->fcc; in SPL_METHOD()
1941 if (intern->current.data == NULL || intern->current.key == NULL) { in SPL_METHOD()
1945 params[0] = &intern->current.data; in SPL_METHOD()
1946 params[1] = &intern->current.key; in SPL_METHOD()
1947 params[2] = &intern->inner.zobject; in SPL_METHOD()
1969 spl_dual_it_object *intern; in SPL_METHOD() local
1978 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
1980 if (intern->current.data == NULL) { in SPL_METHOD()
1982 } else if (Z_TYPE_P(intern->current.data) == IS_ARRAY) { in SPL_METHOD()
1986 if (intern->u.regex.flags & REGIT_USE_KEY) { in SPL_METHOD()
1987 subject_ptr = intern->current.key; in SPL_METHOD()
1989 subject_ptr = intern->current.data; in SPL_METHOD()
2001 switch (intern->u.regex.mode) in SPL_METHOD()
2005 …count = pcre_exec(intern->u.regex.pce->re, intern->u.regex.pce->extra, subject, subject_len, 0, 0,… in SPL_METHOD()
2015 zval_ptr_dtor(&intern->current.data); in SPL_METHOD()
2016 ALLOC_INIT_ZVAL(intern->current.data); in SPL_METHOD()
2017 php_pcre_match_impl(intern->u.regex.pce, subject, subject_len, &zcount, in SPL_METHOD()
2018intern->current.data, intern->u.regex.mode == REGIT_MODE_ALL_MATCHES, intern->u.regex.use_flags, i… in SPL_METHOD()
2027 zval_ptr_dtor(&intern->current.data); in SPL_METHOD()
2028 ALLOC_INIT_ZVAL(intern->current.data); in SPL_METHOD()
2029 …php_pcre_split_impl(intern->u.regex.pce, subject, subject_len, intern->current.data, -1, intern->u… in SPL_METHOD()
2030 count = zend_hash_num_elements(Z_ARRVAL_P(intern->current.data)); in SPL_METHOD()
2035 …replacement = zend_read_property(intern->std.ce, getThis(), "replacement", sizeof("replacement")-1… in SPL_METHOD()
2042 …result = php_pcre_replace_impl(intern->u.regex.pce, subject, subject_len, replacement, 0, &result_… in SPL_METHOD()
2044 if (intern->u.regex.flags & REGIT_USE_KEY) { in SPL_METHOD()
2045 zval_ptr_dtor(&intern->current.key); in SPL_METHOD()
2046 MAKE_STD_ZVAL(intern->current.key); in SPL_METHOD()
2047 ZVAL_STRINGL(intern->current.key, result, result_len, 0); in SPL_METHOD()
2049 zval_ptr_dtor(&intern->current.data); in SPL_METHOD()
2050 MAKE_STD_ZVAL(intern->current.data); in SPL_METHOD()
2051 ZVAL_STRINGL(intern->current.data, result, result_len, 0); in SPL_METHOD()
2060 if (intern->u.regex.flags & REGIT_INVERTED) { in SPL_METHOD()
2073 …spl_dual_it_object *intern = (spl_dual_it_object*)zend_object_store_get_object(getThis() TSRMLS_CC… in SPL_METHOD() local
2079 RETURN_STRINGL(intern->u.regex.regex, intern->u.regex.regex_len, 1); in SPL_METHOD()
2086 spl_dual_it_object *intern; in SPL_METHOD() local
2092 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2094 RETURN_LONG(intern->u.regex.mode); in SPL_METHOD()
2101 spl_dual_it_object *intern; in SPL_METHOD() local
2113 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2115 intern->u.regex.mode = mode; in SPL_METHOD()
2122 spl_dual_it_object *intern; in SPL_METHOD() local
2128 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2130 RETURN_LONG(intern->u.regex.flags); in SPL_METHOD()
2137 spl_dual_it_object *intern; in SPL_METHOD() local
2144 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2146 intern->u.regex.flags = flags; in SPL_METHOD()
2153 spl_dual_it_object *intern; in SPL_METHOD() local
2159 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2161 if (intern->u.regex.use_flags) { in SPL_METHOD()
2162 RETURN_LONG(intern->u.regex.preg_flags); in SPL_METHOD()
2172 spl_dual_it_object *intern; in SPL_METHOD() local
2179 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2181 intern->u.regex.preg_flags = preg_flags; in SPL_METHOD()
2182 intern->u.regex.use_flags = 1; in SPL_METHOD()
2196 spl_dual_it_object *intern; in SPL_METHOD() local
2203 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2205 …zend_call_method_with_0_params(&intern->inner.zobject, intern->inner.ce, NULL, "getchildren", &ret… in SPL_METHOD()
2216 ZVAL_STRING(regex, intern->u.regex.regex, 1); in SPL_METHOD()
2217 ZVAL_LONG(mode, intern->u.regex.mode); in SPL_METHOD()
2218 ZVAL_LONG(flags, intern->u.regex.flags); in SPL_METHOD()
2219 ZVAL_LONG(preg_flags, intern->u.regex.preg_flags); in SPL_METHOD()
2242 spl_dual_it_object *intern; in SPL_METHOD() local
2249 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2251 if (intern->current.data == NULL) { in SPL_METHOD()
2253 } else if (Z_TYPE_P(intern->current.data) == IS_ARRAY) { in SPL_METHOD()
2254 RETURN_BOOL(zend_hash_num_elements(Z_ARRVAL_P(intern->current.data)) > 0); in SPL_METHOD()
2337 spl_dual_it_object *intern; in spl_dual_it_new() local
2339 intern = emalloc(sizeof(spl_dual_it_object)); in spl_dual_it_new()
2340 memset(intern, 0, sizeof(spl_dual_it_object)); in spl_dual_it_new()
2341 intern->dit_type = DIT_Unknown; in spl_dual_it_new()
2343 zend_object_std_init(&intern->std, class_type TSRMLS_CC); in spl_dual_it_new()
2344 object_properties_init(&intern->std, class_type); in spl_dual_it_new()
2346 …retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)spl_dual_it_dtor, (zend_… in spl_dual_it_new()
2459 static inline int spl_limit_it_valid(spl_dual_it_object *intern TSRMLS_DC) in spl_limit_it_valid()
2462 …if (intern->u.limit.count != -1 && intern->current.pos >= intern->u.limit.offset + intern->u.limit… in spl_limit_it_valid()
2465 return spl_dual_it_valid(intern TSRMLS_CC); in spl_limit_it_valid()
2469 static inline void spl_limit_it_seek(spl_dual_it_object *intern, long pos TSRMLS_DC) in spl_limit_it_seek() argument
2473 spl_dual_it_free(intern TSRMLS_CC); in spl_limit_it_seek()
2474 if (pos < intern->u.limit.offset) { in spl_limit_it_seek()
2475 …ion, 0 TSRMLS_CC, "Cannot seek to %ld which is below the offset %ld", pos, intern->u.limit.offset); in spl_limit_it_seek()
2478 if (pos >= intern->u.limit.offset + intern->u.limit.count && intern->u.limit.count != -1) { in spl_limit_it_seek()
2479 …seek to %ld which is behind offset %ld plus count %ld", pos, intern->u.limit.offset, intern->u.lim… in spl_limit_it_seek()
2482 …if (pos != intern->current.pos && instanceof_function(intern->inner.ce, spl_ce_SeekableIterator TS… in spl_limit_it_seek()
2485 spl_dual_it_free(intern TSRMLS_CC); in spl_limit_it_seek()
2486 …zend_call_method_with_1_params(&intern->inner.zobject, intern->inner.ce, NULL, "seek", NULL, zpos); in spl_limit_it_seek()
2489 intern->current.pos = pos; in spl_limit_it_seek()
2490 if (spl_limit_it_valid(intern TSRMLS_CC) == SUCCESS) { in spl_limit_it_seek()
2491 spl_dual_it_fetch(intern, 0 TSRMLS_CC); in spl_limit_it_seek()
2497 if (pos < intern->current.pos) { in spl_limit_it_seek()
2498 spl_dual_it_rewind(intern TSRMLS_CC); in spl_limit_it_seek()
2500 while (pos > intern->current.pos && spl_dual_it_valid(intern TSRMLS_CC) == SUCCESS) { in spl_limit_it_seek()
2501 spl_dual_it_next(intern, 1 TSRMLS_CC); in spl_limit_it_seek()
2503 if (spl_dual_it_valid(intern TSRMLS_CC) == SUCCESS) { in spl_limit_it_seek()
2504 spl_dual_it_fetch(intern, 1 TSRMLS_CC); in spl_limit_it_seek()
2520 spl_dual_it_object *intern; in SPL_METHOD() local
2522 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2523 spl_dual_it_rewind(intern TSRMLS_CC); in SPL_METHOD()
2524 spl_limit_it_seek(intern, intern->u.limit.offset TSRMLS_CC); in SPL_METHOD()
2531 spl_dual_it_object *intern; in SPL_METHOD() local
2533 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2536 …RETURN_BOOL((intern->u.limit.count == -1 || intern->current.pos < intern->u.limit.offset + intern-… in SPL_METHOD()
2543 spl_dual_it_object *intern; in SPL_METHOD() local
2545 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2547 spl_dual_it_next(intern, 1 TSRMLS_CC); in SPL_METHOD()
2548 …if (intern->u.limit.count == -1 || intern->current.pos < intern->u.limit.offset + intern->u.limit.… in SPL_METHOD()
2549 spl_dual_it_fetch(intern, 1 TSRMLS_CC); in SPL_METHOD()
2557 spl_dual_it_object *intern; in SPL_METHOD() local
2564 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2565 spl_limit_it_seek(intern, pos TSRMLS_CC); in SPL_METHOD()
2566 RETURN_LONG(intern->current.pos); in SPL_METHOD()
2573 spl_dual_it_object *intern; in SPL_METHOD() local
2574 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2575 RETURN_LONG(intern->current.pos); in SPL_METHOD()
2610 static inline int spl_caching_it_valid(spl_dual_it_object *intern TSRMLS_DC) in spl_caching_it_valid()
2612 return intern->u.caching.flags & CIT_VALID ? SUCCESS : FAILURE; in spl_caching_it_valid()
2615 static inline int spl_caching_it_has_next(spl_dual_it_object *intern TSRMLS_DC) in spl_caching_it_has_next()
2617 return spl_dual_it_valid(intern TSRMLS_CC); in spl_caching_it_has_next()
2620 static inline void spl_caching_it_next(spl_dual_it_object *intern TSRMLS_DC) in spl_caching_it_next()
2622 if (spl_dual_it_fetch(intern, 1 TSRMLS_CC) == SUCCESS) { in spl_caching_it_next()
2623 intern->u.caching.flags |= CIT_VALID; in spl_caching_it_next()
2625 if (intern->u.caching.flags & CIT_FULL_CACHE) { in spl_caching_it_next()
2627 zval *key = intern->current.key; in spl_caching_it_next()
2630 ZVAL_ZVAL(zcacheval, intern->current.data, 1, 0); in spl_caching_it_next()
2632 array_set_zval_key(HASH_OF(intern->u.caching.zcache), key, zcacheval); in spl_caching_it_next()
2637 if (intern->dit_type == DIT_RecursiveCachingIterator) { in spl_caching_it_next()
2639 …zend_call_method_with_0_params(&intern->inner.zobject, intern->inner.ce, NULL, "haschildren", &ret… in spl_caching_it_next()
2644 if (intern->u.caching.flags & CIT_CATCH_GET_CHILD) { in spl_caching_it_next()
2651 …zend_call_method_with_0_params(&intern->inner.zobject, intern->inner.ce, NULL, "getchildren", &zch… in spl_caching_it_next()
2656 if (intern->u.caching.flags & CIT_CATCH_GET_CHILD) { in spl_caching_it_next()
2664 ZVAL_LONG(&zflags, intern->u.caching.flags & CIT_PUBLIC); in spl_caching_it_next()
2665 …spl_instantiate_arg_ex2(spl_ce_RecursiveCachingIterator, &intern->u.caching.zchildren, 1, zchildre… in spl_caching_it_next()
2671 if (intern->u.caching.flags & CIT_CATCH_GET_CHILD) { in spl_caching_it_next()
2679 if (intern->u.caching.flags & (CIT_TOSTRING_USE_INNER|CIT_CALL_TOSTRING)) { in spl_caching_it_next()
2682 ALLOC_ZVAL(intern->u.caching.zstr); in spl_caching_it_next()
2683 if (intern->u.caching.flags & CIT_TOSTRING_USE_INNER) { in spl_caching_it_next()
2684 *intern->u.caching.zstr = *intern->inner.zobject; in spl_caching_it_next()
2686 *intern->u.caching.zstr = *intern->current.data; in spl_caching_it_next()
2688 zend_make_printable_zval(intern->u.caching.zstr, &expr_copy, &use_copy); in spl_caching_it_next()
2690 *intern->u.caching.zstr = expr_copy; in spl_caching_it_next()
2691 INIT_PZVAL(intern->u.caching.zstr); in spl_caching_it_next()
2692 zval_copy_ctor(intern->u.caching.zstr); in spl_caching_it_next()
2695 INIT_PZVAL(intern->u.caching.zstr); in spl_caching_it_next()
2696 zval_copy_ctor(intern->u.caching.zstr); in spl_caching_it_next()
2699 spl_dual_it_next(intern, 0 TSRMLS_CC); in spl_caching_it_next()
2701 intern->u.caching.flags &= ~CIT_VALID; in spl_caching_it_next()
2705 static inline void spl_caching_it_rewind(spl_dual_it_object *intern TSRMLS_DC) in spl_caching_it_rewind()
2707 spl_dual_it_rewind(intern TSRMLS_CC); in spl_caching_it_rewind()
2708 zend_hash_clean(HASH_OF(intern->u.caching.zcache)); in spl_caching_it_rewind()
2709 spl_caching_it_next(intern TSRMLS_CC); in spl_caching_it_rewind()
2723 spl_dual_it_object *intern; in SPL_METHOD() local
2729 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2731 spl_caching_it_rewind(intern TSRMLS_CC); in SPL_METHOD()
2738 spl_dual_it_object *intern; in SPL_METHOD() local
2744 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2746 RETURN_BOOL(spl_caching_it_valid(intern TSRMLS_CC) == SUCCESS); in SPL_METHOD()
2753 spl_dual_it_object *intern; in SPL_METHOD() local
2759 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2761 spl_caching_it_next(intern TSRMLS_CC); in SPL_METHOD()
2768 spl_dual_it_object *intern; in SPL_METHOD() local
2774 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2776 RETURN_BOOL(spl_caching_it_has_next(intern TSRMLS_CC) == SUCCESS); in SPL_METHOD()
2783 spl_dual_it_object *intern; in SPL_METHOD() local
2785 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2787 …if (!(intern->u.caching.flags & (CIT_CALL_TOSTRING|CIT_TOSTRING_USE_KEY|CIT_TOSTRING_USE_CURRENT|C… in SPL_METHOD()
2791 if (intern->u.caching.flags & CIT_TOSTRING_USE_KEY) { in SPL_METHOD()
2792 MAKE_COPY_ZVAL(&intern->current.key, return_value); in SPL_METHOD()
2795 } else if (intern->u.caching.flags & CIT_TOSTRING_USE_CURRENT) { in SPL_METHOD()
2796 MAKE_COPY_ZVAL(&intern->current.data, return_value); in SPL_METHOD()
2800 if (intern->u.caching.zstr) { in SPL_METHOD()
2801 RETURN_STRINGL(Z_STRVAL_P(intern->u.caching.zstr), Z_STRLEN_P(intern->u.caching.zstr), 1); in SPL_METHOD()
2811 spl_dual_it_object *intern; in SPL_METHOD() local
2816 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2818 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in SPL_METHOD()
2828 …zend_symtable_update(HASH_OF(intern->u.caching.zcache), arKey, nKeyLength+1, &value, sizeof(value)… in SPL_METHOD()
2836 spl_dual_it_object *intern; in SPL_METHOD() local
2841 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2843 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in SPL_METHOD()
2852 …if (zend_symtable_find(HASH_OF(intern->u.caching.zcache), arKey, nKeyLength+1, (void**)&value) == … in SPL_METHOD()
2865 spl_dual_it_object *intern; in SPL_METHOD() local
2869 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2871 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in SPL_METHOD()
2880 zend_symtable_del(HASH_OF(intern->u.caching.zcache), arKey, nKeyLength+1); in SPL_METHOD()
2888 spl_dual_it_object *intern; in SPL_METHOD() local
2892 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2894 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in SPL_METHOD()
2903 RETURN_BOOL(zend_symtable_exists(HASH_OF(intern->u.caching.zcache), arKey, nKeyLength+1)); in SPL_METHOD()
2911 spl_dual_it_object *intern; in SPL_METHOD() local
2917 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2919 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in SPL_METHOD()
2924 RETURN_ZVAL(intern->u.caching.zcache, 1, 0); in SPL_METHOD()
2932 spl_dual_it_object *intern; in SPL_METHOD() local
2938 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2940 RETURN_LONG(intern->u.caching.flags); in SPL_METHOD()
2948 spl_dual_it_object *intern; in SPL_METHOD() local
2951 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2961 if ((intern->u.caching.flags & CIT_CALL_TOSTRING) != 0 && (flags & CIT_CALL_TOSTRING) == 0) { in SPL_METHOD()
2965 …if ((intern->u.caching.flags & CIT_TOSTRING_USE_INNER) != 0 && (flags & CIT_TOSTRING_USE_INNER) ==… in SPL_METHOD()
2969 if ((flags & CIT_FULL_CACHE) != 0 && (intern->u.caching.flags & CIT_FULL_CACHE) == 0) { in SPL_METHOD()
2971 zend_hash_clean(HASH_OF(intern->u.caching.zcache)); in SPL_METHOD()
2973 intern->u.caching.flags = (intern->u.caching.flags & ~CIT_PUBLIC) | (flags & CIT_PUBLIC); in SPL_METHOD()
2981 spl_dual_it_object *intern; in SPL_METHOD() local
2987 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
2989 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in SPL_METHOD()
2994 RETURN_LONG(zend_hash_num_elements(HASH_OF(intern->u.caching.zcache))); in SPL_METHOD()
3048 spl_dual_it_object *intern; in SPL_METHOD() local
3054 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
3056 RETURN_BOOL(intern->u.caching.zchildren); in SPL_METHOD()
3063 spl_dual_it_object *intern; in SPL_METHOD() local
3069 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
3071 if (intern->u.caching.zchildren) { in SPL_METHOD()
3072 RETURN_ZVAL(intern->u.caching.zchildren, 1, 0); in SPL_METHOD()
3133 spl_dual_it_object *intern; in SPL_METHOD() local
3139 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
3140 RETURN_BOOL(intern->inner.iterator->funcs->valid(intern->inner.iterator TSRMLS_CC) == SUCCESS); in SPL_METHOD()
3147 spl_dual_it_object *intern; in SPL_METHOD() local
3153 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
3155 if (intern->inner.iterator->funcs->get_current_key) { in SPL_METHOD()
3156 intern->inner.iterator->funcs->get_current_key(intern->inner.iterator, return_value TSRMLS_CC); in SPL_METHOD()
3166 spl_dual_it_object *intern; in SPL_METHOD() local
3173 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
3174 intern->inner.iterator->funcs->get_current_data(intern->inner.iterator, &data TSRMLS_CC); in SPL_METHOD()
3184 spl_dual_it_object *intern; in SPL_METHOD() local
3190 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
3191 intern->inner.iterator->funcs->move_forward(intern->inner.iterator TSRMLS_CC); in SPL_METHOD()
3220 spl_dual_it_object *intern; in SPL_METHOD() local
3226 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
3228 spl_dual_it_next(intern, 1 TSRMLS_CC); in SPL_METHOD()
3229 if (spl_dual_it_valid(intern TSRMLS_CC) == SUCCESS) { in SPL_METHOD()
3230 spl_dual_it_fetch(intern, 0 TSRMLS_CC); in SPL_METHOD()
3232 spl_dual_it_rewind(intern TSRMLS_CC); in SPL_METHOD()
3233 if (spl_dual_it_valid(intern TSRMLS_CC) == SUCCESS) { in SPL_METHOD()
3234 spl_dual_it_fetch(intern, 0 TSRMLS_CC); in SPL_METHOD()
3302 int spl_append_it_next_iterator(spl_dual_it_object *intern TSRMLS_DC) /* {{{*/ in spl_append_it_next_iterator()
3304 spl_dual_it_free(intern TSRMLS_CC); in spl_append_it_next_iterator()
3306 if (intern->inner.zobject) { in spl_append_it_next_iterator()
3307 zval_ptr_dtor(&intern->inner.zobject); in spl_append_it_next_iterator()
3308 intern->inner.zobject = NULL; in spl_append_it_next_iterator()
3309 intern->inner.ce = NULL; in spl_append_it_next_iterator()
3310 intern->inner.object = NULL; in spl_append_it_next_iterator()
3311 if (intern->inner.iterator) { in spl_append_it_next_iterator()
3312 intern->inner.iterator->funcs->dtor(intern->inner.iterator TSRMLS_CC); in spl_append_it_next_iterator()
3313 intern->inner.iterator = NULL; in spl_append_it_next_iterator()
3316 if (intern->u.append.iterator->funcs->valid(intern->u.append.iterator TSRMLS_CC) == SUCCESS) { in spl_append_it_next_iterator()
3319 intern->u.append.iterator->funcs->get_current_data(intern->u.append.iterator, &it TSRMLS_CC); in spl_append_it_next_iterator()
3321 intern->inner.zobject = *it; in spl_append_it_next_iterator()
3322 intern->inner.ce = Z_OBJCE_PP(it); in spl_append_it_next_iterator()
3323 intern->inner.object = zend_object_store_get_object(*it TSRMLS_CC); in spl_append_it_next_iterator()
3324 intern->inner.iterator = intern->inner.ce->get_iterator(intern->inner.ce, *it, 0 TSRMLS_CC); in spl_append_it_next_iterator()
3325 spl_dual_it_rewind(intern TSRMLS_CC); in spl_append_it_next_iterator()
3332 void spl_append_it_fetch(spl_dual_it_object *intern TSRMLS_DC) /* {{{*/ in spl_append_it_fetch()
3334 while (spl_dual_it_valid(intern TSRMLS_CC) != SUCCESS) { in spl_append_it_fetch()
3335 intern->u.append.iterator->funcs->move_forward(intern->u.append.iterator TSRMLS_CC); in spl_append_it_fetch()
3336 if (spl_append_it_next_iterator(intern TSRMLS_CC) != SUCCESS) { in spl_append_it_fetch()
3340 spl_dual_it_fetch(intern, 0 TSRMLS_CC); in spl_append_it_fetch()
3343 void spl_append_it_next(spl_dual_it_object *intern TSRMLS_DC) /* {{{ */ in spl_append_it_next()
3345 if (spl_dual_it_valid(intern TSRMLS_CC) == SUCCESS) { in spl_append_it_next()
3346 spl_dual_it_next(intern, 1 TSRMLS_CC); in spl_append_it_next()
3348 spl_append_it_fetch(intern TSRMLS_CC); in spl_append_it_next()
3362 spl_dual_it_object *intern; in SPL_METHOD() local
3365 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
3370 spl_array_iterator_append(intern->u.append.zarrayit, it TSRMLS_CC); in SPL_METHOD()
3372 if (!intern->inner.iterator || spl_dual_it_valid(intern TSRMLS_CC) != SUCCESS) { in SPL_METHOD()
3373 if (intern->u.append.iterator->funcs->valid(intern->u.append.iterator TSRMLS_CC) != SUCCESS) { in SPL_METHOD()
3374 intern->u.append.iterator->funcs->rewind(intern->u.append.iterator TSRMLS_CC); in SPL_METHOD()
3377 spl_append_it_next_iterator(intern TSRMLS_CC); in SPL_METHOD()
3378 } while (intern->inner.zobject != it); in SPL_METHOD()
3379 spl_append_it_fetch(intern TSRMLS_CC); in SPL_METHOD()
3387 spl_dual_it_object *intern; in SPL_METHOD() local
3393 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
3395 intern->u.append.iterator->funcs->rewind(intern->u.append.iterator TSRMLS_CC); in SPL_METHOD()
3396 if (spl_append_it_next_iterator(intern TSRMLS_CC) == SUCCESS) { in SPL_METHOD()
3397 spl_append_it_fetch(intern TSRMLS_CC); in SPL_METHOD()
3405 spl_dual_it_object *intern; in SPL_METHOD() local
3411 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
3413 RETURN_BOOL(intern->current.data); in SPL_METHOD()
3420 spl_dual_it_object *intern; in SPL_METHOD() local
3426 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
3428 spl_append_it_next(intern TSRMLS_CC); in SPL_METHOD()
3435 spl_dual_it_object *intern; in SPL_METHOD() local
3441 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
3443 APPENDIT_CHECK_CTOR(intern); in SPL_METHOD()
3444 spl_array_iterator_key(intern->u.append.zarrayit, return_value TSRMLS_CC); in SPL_METHOD()
3451 spl_dual_it_object *intern; in SPL_METHOD() local
3457 SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); in SPL_METHOD()
3459 RETURN_ZVAL(intern->u.append.zarrayit, 1, 0); in SPL_METHOD()