Lines Matching refs:intern

121 	zend_object_iterator   intern;  member
171 spl_recursive_it_object *object = Z_SPLRECURSIVE_IT_P(&iter->intern.data); in spl_recursive_it_dtor()
185 zval_ptr_dtor(&iter->intern.data); in spl_recursive_it_dtor()
473 ZVAL_OBJ(&iterator->intern.data, Z_OBJ_P(zobject)); in spl_recursive_it_get_iterator()
474 iterator->intern.funcs = &spl_recursive_it_iterator_funcs; in spl_recursive_it_get_iterator()
481 spl_recursive_it_object *intern; in spl_recursive_it_it_construct() local
546 intern = Z_SPLRECURSIVE_IT_P(object); in spl_recursive_it_it_construct()
547 intern->iterators = emalloc(sizeof(spl_sub_iterator)); in spl_recursive_it_it_construct()
548 intern->level = 0; in spl_recursive_it_it_construct()
549 intern->mode = mode; in spl_recursive_it_it_construct()
550 intern->flags = (int)flags; in spl_recursive_it_it_construct()
551 intern->max_depth = -1; in spl_recursive_it_it_construct()
552 intern->in_iteration = 0; in spl_recursive_it_it_construct()
553 intern->ce = Z_OBJCE_P(object); in spl_recursive_it_it_construct()
555intern->beginIteration = zend_hash_str_find_ptr(&intern->ce->function_table, "beginiteration", siz… in spl_recursive_it_it_construct()
556 if (intern->beginIteration->common.scope == ce_base) { in spl_recursive_it_it_construct()
557 intern->beginIteration = NULL; in spl_recursive_it_it_construct()
559intern->endIteration = zend_hash_str_find_ptr(&intern->ce->function_table, "enditeration", sizeof(… in spl_recursive_it_it_construct()
560 if (intern->endIteration->common.scope == ce_base) { in spl_recursive_it_it_construct()
561 intern->endIteration = NULL; in spl_recursive_it_it_construct()
563intern->callHasChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "callhaschildren", s… in spl_recursive_it_it_construct()
564 if (intern->callHasChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
565 intern->callHasChildren = NULL; in spl_recursive_it_it_construct()
567intern->callGetChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "callgetchildren", s… in spl_recursive_it_it_construct()
568 if (intern->callGetChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
569 intern->callGetChildren = NULL; in spl_recursive_it_it_construct()
571intern->beginChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "beginchildren", sizeo… in spl_recursive_it_it_construct()
572 if (intern->beginChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
573 intern->beginChildren = NULL; in spl_recursive_it_it_construct()
575intern->endChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "endchildren", sizeof("e… in spl_recursive_it_it_construct()
576 if (intern->endChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
577 intern->endChildren = NULL; in spl_recursive_it_it_construct()
579intern->nextElement = zend_hash_str_find_ptr(&intern->ce->function_table, "nextelement", sizeof("n… in spl_recursive_it_it_construct()
580 if (intern->nextElement->common.scope == ce_base) { in spl_recursive_it_it_construct()
581 intern->nextElement = NULL; in spl_recursive_it_it_construct()
585 intern->iterators[0].iterator = ce_iterator->get_iterator(ce_iterator, iterator, 0); in spl_recursive_it_it_construct()
586 ZVAL_OBJ(&intern->iterators[0].zobject, Z_OBJ_P(iterator)); in spl_recursive_it_it_construct()
587 intern->iterators[0].ce = ce_iterator; in spl_recursive_it_it_construct()
588 intern->iterators[0].state = RS_START; in spl_recursive_it_it_construct()
595 while (intern->level >= 0) { in spl_recursive_it_it_construct()
596 sub_iter = intern->iterators[intern->level].iterator; in spl_recursive_it_it_construct()
598 zval_ptr_dtor(&intern->iterators[intern->level--].zobject); in spl_recursive_it_it_construct()
600 efree(intern->iterators); in spl_recursive_it_it_construct()
601 intern->iterators = NULL; in spl_recursive_it_it_construct()
957 spl_recursive_it_object *intern; in spl_RecursiveIteratorIterator_new_ex() local
959 intern = zend_object_alloc(sizeof(spl_recursive_it_object), class_type); in spl_RecursiveIteratorIterator_new_ex()
962 smart_str_appendl(&intern->prefix[0], "", 0); in spl_RecursiveIteratorIterator_new_ex()
963 smart_str_appendl(&intern->prefix[1], "| ", 2); in spl_RecursiveIteratorIterator_new_ex()
964 smart_str_appendl(&intern->prefix[2], " ", 2); in spl_RecursiveIteratorIterator_new_ex()
965 smart_str_appendl(&intern->prefix[3], "|-", 2); in spl_RecursiveIteratorIterator_new_ex()
966 smart_str_appendl(&intern->prefix[4], "\\-", 2); in spl_RecursiveIteratorIterator_new_ex()
967 smart_str_appendl(&intern->prefix[5], "", 0); in spl_RecursiveIteratorIterator_new_ex()
969 smart_str_appendl(&intern->postfix[0], "", 0); in spl_RecursiveIteratorIterator_new_ex()
972 zend_object_std_init(&intern->std, class_type); in spl_RecursiveIteratorIterator_new_ex()
973 object_properties_init(&intern->std, class_type); in spl_RecursiveIteratorIterator_new_ex()
975 intern->std.handlers = &spl_handlers_rec_it_it; in spl_RecursiveIteratorIterator_new_ex()
976 return &intern->std; in spl_RecursiveIteratorIterator_new_ex()
1348 spl_dual_it_object *intern; in spl_dual_it_get_method() local
1350 intern = spl_dual_it_from_obj(*object); in spl_dual_it_get_method()
1353 if (!function_handler && intern->inner.ce) { in spl_dual_it_get_method()
1354 if ((function_handler = zend_hash_find_ptr(&intern->inner.ce->function_table, method)) == NULL) { in spl_dual_it_get_method()
1355 if (Z_OBJ_HT(intern->inner.zobject)->get_method) { in spl_dual_it_get_method()
1356 *object = Z_OBJ(intern->inner.zobject); in spl_dual_it_get_method()
1360 *object = Z_OBJ(intern->inner.zobject); in spl_dual_it_get_method()
1375 spl_dual_it_object *intern; in spl_dual_it_call_method() local
1377 intern = Z_SPLDUAL_IT_P(ZEND_THIS); in spl_dual_it_call_method()
1398 zend_throw_error(NULL, "Unable to call %s::%s()", intern->inner.ce->name, method); in spl_dual_it_call_method()
1407 #define SPL_CHECK_CTOR(intern, classname) \ argument
1408 if (intern->dit_type == DIT_Unknown) { \
1414 #define APPENDIT_CHECK_CTOR(intern) SPL_CHECK_CTOR(intern, AppendIterator) argument
1416 static inline int spl_dual_it_fetch(spl_dual_it_object *intern, int check_more);
1433 spl_dual_it_object *intern; in spl_dual_it_construct() local
1438 intern = Z_SPLDUAL_IT_P(ZEND_THIS); in spl_dual_it_construct()
1440 if (intern->dit_type != DIT_Unknown) { in spl_dual_it_construct()
1445 intern->dit_type = dit_type; in spl_dual_it_construct()
1448 intern->u.limit.offset = 0; /* start at beginning */ in spl_dual_it_construct()
1449 intern->u.limit.count = -1; /* get all */ in spl_dual_it_construct()
1450 …rameters_throw(ZEND_NUM_ARGS(), "O|ll", &zobject, ce_inner, &intern->u.limit.offset, &intern->u.li… in spl_dual_it_construct()
1453 if (intern->u.limit.offset < 0) { in spl_dual_it_construct()
1457 if (intern->u.limit.count < 0 && intern->u.limit.count != -1) { in spl_dual_it_construct()
1473 intern->u.caching.flags |= flags & CIT_PUBLIC; in spl_dual_it_construct()
1474 array_init(&intern->u.caching.zcache); in spl_dual_it_construct()
1515 spl_instantiate(spl_ce_ArrayIterator, &intern->u.append.zarrayit); in spl_dual_it_construct()
1516 …zend_call_method_with_0_params(&intern->u.append.zarrayit, spl_ce_ArrayIterator, &spl_ce_ArrayIter… in spl_dual_it_construct()
1517intern->u.append.iterator = spl_ce_ArrayIterator->get_iterator(spl_ce_ArrayIterator, &intern->u.ap… in spl_dual_it_construct()
1519 return intern; in spl_dual_it_construct()
1525 intern->u.regex.use_flags = ZEND_NUM_ARGS() >= 5; in spl_dual_it_construct()
1526 intern->u.regex.flags = 0; in spl_dual_it_construct()
1527 intern->u.regex.preg_flags = 0; in spl_dual_it_construct()
1528 …ND_NUM_ARGS(), "OS|lll", &zobject, ce_inner, &regex, &mode, &intern->u.regex.flags, &intern->u.reg… in spl_dual_it_construct()
1535 intern->u.regex.mode = mode; in spl_dual_it_construct()
1536 intern->u.regex.regex = zend_string_copy(regex); in spl_dual_it_construct()
1539 intern->u.regex.pce = pcre_get_compiled_regex_cache(regex); in spl_dual_it_construct()
1542 if (intern->u.regex.pce == NULL) { in spl_dual_it_construct()
1546 php_pcre_pce_incref(intern->u.regex.pce); in spl_dual_it_construct()
1560 intern->u.cbfilter = cfi; in spl_dual_it_construct()
1573 ZVAL_OBJ(&intern->inner.zobject, Z_OBJ_P(zobject)); in spl_dual_it_construct()
1575 intern->inner.ce = dit_type == DIT_IteratorIterator ? ce : Z_OBJCE_P(zobject); in spl_dual_it_construct()
1576 intern->inner.object = Z_OBJ_P(zobject); in spl_dual_it_construct()
1577 intern->inner.iterator = intern->inner.ce->get_iterator(intern->inner.ce, zobject, 0); in spl_dual_it_construct()
1579 return intern; in spl_dual_it_construct()
1603 spl_dual_it_object *intern; in SPL_METHOD() local
1609 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
1611 if (!Z_ISUNDEF(intern->inner.zobject)) { in SPL_METHOD()
1612 zval *value = &intern->inner.zobject; in SPL_METHOD()
1620 static inline void spl_dual_it_free(spl_dual_it_object *intern) in spl_dual_it_free() argument
1622 if (intern->inner.iterator && intern->inner.iterator->funcs->invalidate_current) { in spl_dual_it_free()
1623 intern->inner.iterator->funcs->invalidate_current(intern->inner.iterator); in spl_dual_it_free()
1625 if (Z_TYPE(intern->current.data) != IS_UNDEF) { in spl_dual_it_free()
1626 zval_ptr_dtor(&intern->current.data); in spl_dual_it_free()
1627 ZVAL_UNDEF(&intern->current.data); in spl_dual_it_free()
1629 if (Z_TYPE(intern->current.key) != IS_UNDEF) { in spl_dual_it_free()
1630 zval_ptr_dtor(&intern->current.key); in spl_dual_it_free()
1631 ZVAL_UNDEF(&intern->current.key); in spl_dual_it_free()
1633 if (intern->dit_type == DIT_CachingIterator || intern->dit_type == DIT_RecursiveCachingIterator) { in spl_dual_it_free()
1634 if (Z_TYPE(intern->u.caching.zstr) != IS_UNDEF) { in spl_dual_it_free()
1635 zval_ptr_dtor(&intern->u.caching.zstr); in spl_dual_it_free()
1636 ZVAL_UNDEF(&intern->u.caching.zstr); in spl_dual_it_free()
1638 if (Z_TYPE(intern->u.caching.zchildren) != IS_UNDEF) { in spl_dual_it_free()
1639 zval_ptr_dtor(&intern->u.caching.zchildren); in spl_dual_it_free()
1640 ZVAL_UNDEF(&intern->u.caching.zchildren); in spl_dual_it_free()
1645 static inline void spl_dual_it_rewind(spl_dual_it_object *intern) in spl_dual_it_rewind() argument
1647 spl_dual_it_free(intern); in spl_dual_it_rewind()
1648 intern->current.pos = 0; in spl_dual_it_rewind()
1649 if (intern->inner.iterator && intern->inner.iterator->funcs->rewind) { in spl_dual_it_rewind()
1650 intern->inner.iterator->funcs->rewind(intern->inner.iterator); in spl_dual_it_rewind()
1654 static inline int spl_dual_it_valid(spl_dual_it_object *intern) in spl_dual_it_valid() argument
1656 if (!intern->inner.iterator) { in spl_dual_it_valid()
1660 return intern->inner.iterator->funcs->valid(intern->inner.iterator); in spl_dual_it_valid()
1663 static inline int spl_dual_it_fetch(spl_dual_it_object *intern, int check_more) in spl_dual_it_fetch() argument
1667 spl_dual_it_free(intern); in spl_dual_it_fetch()
1668 if (!check_more || spl_dual_it_valid(intern) == SUCCESS) { in spl_dual_it_fetch()
1669 data = intern->inner.iterator->funcs->get_current_data(intern->inner.iterator); in spl_dual_it_fetch()
1671 ZVAL_COPY(&intern->current.data, data); in spl_dual_it_fetch()
1674 if (intern->inner.iterator->funcs->get_current_key) { in spl_dual_it_fetch()
1675 intern->inner.iterator->funcs->get_current_key(intern->inner.iterator, &intern->current.key); in spl_dual_it_fetch()
1677 zval_ptr_dtor(&intern->current.key); in spl_dual_it_fetch()
1678 ZVAL_UNDEF(&intern->current.key); in spl_dual_it_fetch()
1681 ZVAL_LONG(&intern->current.key, intern->current.pos); in spl_dual_it_fetch()
1688 static inline void spl_dual_it_next(spl_dual_it_object *intern, int do_free) in spl_dual_it_next() argument
1691 spl_dual_it_free(intern); in spl_dual_it_next()
1692 } else if (!intern->inner.iterator) { in spl_dual_it_next()
1696 intern->inner.iterator->funcs->move_forward(intern->inner.iterator); in spl_dual_it_next()
1697 intern->current.pos++; in spl_dual_it_next()
1706 spl_dual_it_object *intern; in SPL_METHOD() local
1712 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
1714 spl_dual_it_rewind(intern); in SPL_METHOD()
1715 spl_dual_it_fetch(intern, 1); in SPL_METHOD()
1725 spl_dual_it_object *intern; in SPL_METHOD() local
1731 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
1733 RETURN_BOOL(Z_TYPE(intern->current.data) != IS_UNDEF); in SPL_METHOD()
1746 spl_dual_it_object *intern; in SPL_METHOD() local
1752 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
1754 if (Z_TYPE(intern->current.key) != IS_UNDEF) { in SPL_METHOD()
1755 zval *value = &intern->current.key; in SPL_METHOD()
1772 spl_dual_it_object *intern; in SPL_METHOD() local
1778 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
1780 if (Z_TYPE(intern->current.data) != IS_UNDEF) { in SPL_METHOD()
1781 zval *value = &intern->current.data; in SPL_METHOD()
1795 spl_dual_it_object *intern; in SPL_METHOD() local
1801 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
1803 spl_dual_it_next(intern, 1); in SPL_METHOD()
1804 spl_dual_it_fetch(intern, 1); in SPL_METHOD()
1807 static inline void spl_filter_it_fetch(zval *zthis, spl_dual_it_object *intern) in spl_filter_it_fetch() argument
1811 while (spl_dual_it_fetch(intern, 1) == SUCCESS) { in spl_filter_it_fetch()
1812 zend_call_method_with_0_params(zthis, intern->std.ce, NULL, "accept", &retval); in spl_filter_it_fetch()
1823 intern->inner.iterator->funcs->move_forward(intern->inner.iterator); in spl_filter_it_fetch()
1825 spl_dual_it_free(intern); in spl_filter_it_fetch()
1828 static inline void spl_filter_it_rewind(zval *zthis, spl_dual_it_object *intern) in spl_filter_it_rewind() argument
1830 spl_dual_it_rewind(intern); in spl_filter_it_rewind()
1831 spl_filter_it_fetch(zthis, intern); in spl_filter_it_rewind()
1834 static inline void spl_filter_it_next(zval *zthis, spl_dual_it_object *intern) in spl_filter_it_next() argument
1836 spl_dual_it_next(intern, 1); in spl_filter_it_next()
1837 spl_filter_it_fetch(zthis, intern); in spl_filter_it_next()
1844 spl_dual_it_object *intern; in SPL_METHOD() local
1850 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
1851 spl_filter_it_rewind(ZEND_THIS, intern); in SPL_METHOD()
1858 spl_dual_it_object *intern; in SPL_METHOD() local
1864 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
1865 spl_filter_it_next(ZEND_THIS, intern); in SPL_METHOD()
1887 spl_dual_it_object *intern; in SPL_METHOD() local
1894 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
1896 …zend_call_method_with_0_params(&intern->inner.zobject, intern->inner.ce, NULL, "haschildren", &ret… in SPL_METHOD()
1908 spl_dual_it_object *intern; in SPL_METHOD() local
1915 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
1917 …zend_call_method_with_0_params(&intern->inner.zobject, intern->inner.ce, NULL, "getchildren", &ret… in SPL_METHOD()
1928 spl_dual_it_object *intern; in SPL_METHOD() local
1935 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
1937 …zend_call_method_with_0_params(&intern->inner.zobject, intern->inner.ce, NULL, "getchildren", &ret… in SPL_METHOD()
1939 …spl_instantiate_arg_ex2(Z_OBJCE_P(ZEND_THIS), return_value, &retval, &intern->u.cbfilter->fci.func… in SPL_METHOD()
1961 spl_dual_it_object *intern = Z_SPLDUAL_IT_P(ZEND_THIS); in SPL_METHOD() local
1962 zend_fcall_info *fci = &intern->u.cbfilter->fci; in SPL_METHOD()
1963 zend_fcall_info_cache *fcc = &intern->u.cbfilter->fcc; in SPL_METHOD()
1970 if (Z_TYPE(intern->current.data) == IS_UNDEF || Z_TYPE(intern->current.key) == IS_UNDEF) { in SPL_METHOD()
1974 ZVAL_COPY_VALUE(&params[0], &intern->current.data); in SPL_METHOD()
1975 ZVAL_COPY_VALUE(&params[1], &intern->current.key); in SPL_METHOD()
1976 ZVAL_COPY_VALUE(&params[2], &intern->inner.zobject); in SPL_METHOD()
1992 ZVAL_COPY_VALUE(&intern->current.data, &params[0]); in SPL_METHOD()
1993 ZVAL_COPY_VALUE(&intern->current.key, &params[1]); in SPL_METHOD()
2001 spl_dual_it_object *intern; in SPL_METHOD() local
2013 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2015 if (Z_TYPE(intern->current.data) == IS_UNDEF) { in SPL_METHOD()
2019 if (intern->u.regex.flags & REGIT_USE_KEY) { in SPL_METHOD()
2020 subject = zval_get_string(&intern->current.key); in SPL_METHOD()
2022 if (Z_TYPE(intern->current.data) == IS_ARRAY) { in SPL_METHOD()
2025 subject = zval_get_string(&intern->current.data); in SPL_METHOD()
2033 switch (intern->u.regex.mode) in SPL_METHOD()
2037 re = php_pcre_pce_re(intern->u.regex.pce); in SPL_METHOD()
2049 zval_ptr_dtor(&intern->current.data); in SPL_METHOD()
2050 ZVAL_UNDEF(&intern->current.data); in SPL_METHOD()
2051 php_pcre_match_impl(intern->u.regex.pce, subject, &zcount, in SPL_METHOD()
2052 …&intern->current.data, intern->u.regex.mode == REGIT_MODE_ALL_MATCHES, intern->u.regex.use_flags, in SPL_METHOD()
2057 zval_ptr_dtor(&intern->current.data); in SPL_METHOD()
2058 ZVAL_UNDEF(&intern->current.data); in SPL_METHOD()
2059 …php_pcre_split_impl(intern->u.regex.pce, subject, &intern->current.data, -1, intern->u.regex.preg_… in SPL_METHOD()
2060 count = zend_hash_num_elements(Z_ARRVAL(intern->current.data)); in SPL_METHOD()
2065 …zval *replacement = zend_read_property(intern->std.ce, ZEND_THIS, "replacement", sizeof("replaceme… in SPL_METHOD()
2071 …result = php_pcre_replace_impl(intern->u.regex.pce, subject, ZSTR_VAL(subject), ZSTR_LEN(subject),… in SPL_METHOD()
2073 if (intern->u.regex.flags & REGIT_USE_KEY) { in SPL_METHOD()
2074 zval_ptr_dtor(&intern->current.key); in SPL_METHOD()
2075 ZVAL_STR(&intern->current.key, result); in SPL_METHOD()
2077 zval_ptr_dtor(&intern->current.data); in SPL_METHOD()
2078 ZVAL_STR(&intern->current.data, result); in SPL_METHOD()
2086 if (intern->u.regex.flags & REGIT_INVERTED) { in SPL_METHOD()
2096 spl_dual_it_object *intern = Z_SPLDUAL_IT_P(ZEND_THIS); in SPL_METHOD() local
2102 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2104 RETURN_STR_COPY(intern->u.regex.regex); in SPL_METHOD()
2111 spl_dual_it_object *intern; in SPL_METHOD() local
2117 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2119 RETURN_LONG(intern->u.regex.mode); in SPL_METHOD()
2126 spl_dual_it_object *intern; in SPL_METHOD() local
2138 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2140 intern->u.regex.mode = mode; in SPL_METHOD()
2147 spl_dual_it_object *intern; in SPL_METHOD() local
2153 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2155 RETURN_LONG(intern->u.regex.flags); in SPL_METHOD()
2162 spl_dual_it_object *intern; in SPL_METHOD() local
2169 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2171 intern->u.regex.flags = flags; in SPL_METHOD()
2178 spl_dual_it_object *intern; in SPL_METHOD() local
2184 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2186 if (intern->u.regex.use_flags) { in SPL_METHOD()
2187 RETURN_LONG(intern->u.regex.preg_flags); in SPL_METHOD()
2197 spl_dual_it_object *intern; in SPL_METHOD() local
2204 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2206 intern->u.regex.preg_flags = preg_flags; in SPL_METHOD()
2207 intern->u.regex.use_flags = 1; in SPL_METHOD()
2221 spl_dual_it_object *intern; in SPL_METHOD() local
2228 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2230 …zend_call_method_with_0_params(&intern->inner.zobject, intern->inner.ce, NULL, "getchildren", &ret… in SPL_METHOD()
2235 ZVAL_STR_COPY(&args[1], intern->u.regex.regex); in SPL_METHOD()
2236 ZVAL_LONG(&args[2], intern->u.regex.mode); in SPL_METHOD()
2237 ZVAL_LONG(&args[3], intern->u.regex.flags); in SPL_METHOD()
2238 ZVAL_LONG(&args[4], intern->u.regex.preg_flags); in SPL_METHOD()
2250 spl_dual_it_object *intern; in SPL_METHOD() local
2256 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2258 if (Z_TYPE(intern->current.data) == IS_UNDEF) { in SPL_METHOD()
2260 } else if (Z_TYPE(intern->current.data) == IS_ARRAY) { in SPL_METHOD()
2261 RETURN_BOOL(zend_hash_num_elements(Z_ARRVAL(intern->current.data)) > 0); in SPL_METHOD()
2332 spl_dual_it_object *intern; in spl_dual_it_new() local
2334 intern = zend_object_alloc(sizeof(spl_dual_it_object), class_type); in spl_dual_it_new()
2335 intern->dit_type = DIT_Unknown; in spl_dual_it_new()
2337 zend_object_std_init(&intern->std, class_type); in spl_dual_it_new()
2338 object_properties_init(&intern->std, class_type); in spl_dual_it_new()
2340 intern->std.handlers = &spl_handlers_dual_it; in spl_dual_it_new()
2341 return &intern->std; in spl_dual_it_new()
2450 static inline int spl_limit_it_valid(spl_dual_it_object *intern) in spl_limit_it_valid() argument
2453 …if (intern->u.limit.count != -1 && intern->current.pos >= intern->u.limit.offset + intern->u.limit… in spl_limit_it_valid()
2456 return spl_dual_it_valid(intern); in spl_limit_it_valid()
2460 static inline void spl_limit_it_seek(spl_dual_it_object *intern, zend_long pos) in spl_limit_it_seek() argument
2464 spl_dual_it_free(intern); in spl_limit_it_seek()
2465 if (pos < intern->u.limit.offset) { in spl_limit_it_seek()
2466 … seek to " ZEND_LONG_FMT " which is below the offset " ZEND_LONG_FMT, pos, intern->u.limit.offset); in spl_limit_it_seek()
2469 if (pos >= intern->u.limit.offset + intern->u.limit.count && intern->u.limit.count != -1) { in spl_limit_it_seek()
2470 …nd offset " ZEND_LONG_FMT " plus count " ZEND_LONG_FMT, pos, intern->u.limit.offset, intern->u.lim… in spl_limit_it_seek()
2473 if (pos != intern->current.pos && instanceof_function(intern->inner.ce, spl_ce_SeekableIterator)) { in spl_limit_it_seek()
2475 spl_dual_it_free(intern); in spl_limit_it_seek()
2476 …zend_call_method_with_1_params(&intern->inner.zobject, intern->inner.ce, NULL, "seek", NULL, &zpos… in spl_limit_it_seek()
2478 intern->current.pos = pos; in spl_limit_it_seek()
2479 if (spl_limit_it_valid(intern) == SUCCESS) { in spl_limit_it_seek()
2480 spl_dual_it_fetch(intern, 0); in spl_limit_it_seek()
2486 if (pos < intern->current.pos) { in spl_limit_it_seek()
2487 spl_dual_it_rewind(intern); in spl_limit_it_seek()
2489 while (pos > intern->current.pos && spl_dual_it_valid(intern) == SUCCESS) { in spl_limit_it_seek()
2490 spl_dual_it_next(intern, 1); in spl_limit_it_seek()
2492 if (spl_dual_it_valid(intern) == SUCCESS) { in spl_limit_it_seek()
2493 spl_dual_it_fetch(intern, 1); in spl_limit_it_seek()
2509 spl_dual_it_object *intern; in SPL_METHOD() local
2511 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2512 spl_dual_it_rewind(intern); in SPL_METHOD()
2513 spl_limit_it_seek(intern, intern->u.limit.offset); in SPL_METHOD()
2520 spl_dual_it_object *intern; in SPL_METHOD() local
2522 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2525 …RETURN_BOOL((intern->u.limit.count == -1 || intern->current.pos < intern->u.limit.offset + intern-… in SPL_METHOD()
2532 spl_dual_it_object *intern; in SPL_METHOD() local
2534 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2536 spl_dual_it_next(intern, 1); in SPL_METHOD()
2537 …if (intern->u.limit.count == -1 || intern->current.pos < intern->u.limit.offset + intern->u.limit.… in SPL_METHOD()
2538 spl_dual_it_fetch(intern, 1); in SPL_METHOD()
2546 spl_dual_it_object *intern; in SPL_METHOD() local
2553 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2554 spl_limit_it_seek(intern, pos); in SPL_METHOD()
2555 RETURN_LONG(intern->current.pos); in SPL_METHOD()
2562 spl_dual_it_object *intern; in SPL_METHOD() local
2563 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2564 RETURN_LONG(intern->current.pos); in SPL_METHOD()
2599 static inline int spl_caching_it_valid(spl_dual_it_object *intern) in spl_caching_it_valid() argument
2601 return intern->u.caching.flags & CIT_VALID ? SUCCESS : FAILURE; in spl_caching_it_valid()
2604 static inline int spl_caching_it_has_next(spl_dual_it_object *intern) in spl_caching_it_has_next() argument
2606 return spl_dual_it_valid(intern); in spl_caching_it_has_next()
2609 static inline void spl_caching_it_next(spl_dual_it_object *intern) in spl_caching_it_next() argument
2611 if (spl_dual_it_fetch(intern, 1) == SUCCESS) { in spl_caching_it_next()
2612 intern->u.caching.flags |= CIT_VALID; in spl_caching_it_next()
2614 if (intern->u.caching.flags & CIT_FULL_CACHE) { in spl_caching_it_next()
2615 zval *key = &intern->current.key; in spl_caching_it_next()
2616 zval *data = &intern->current.data; in spl_caching_it_next()
2620 array_set_zval_key(Z_ARRVAL(intern->u.caching.zcache), key, data); in spl_caching_it_next()
2624 if (intern->dit_type == DIT_RecursiveCachingIterator) { in spl_caching_it_next()
2626 …zend_call_method_with_0_params(&intern->inner.zobject, intern->inner.ce, NULL, "haschildren", &ret… in spl_caching_it_next()
2629 if (intern->u.caching.flags & CIT_CATCH_GET_CHILD) { in spl_caching_it_next()
2636 …zend_call_method_with_0_params(&intern->inner.zobject, intern->inner.ce, NULL, "getchildren", &zch… in spl_caching_it_next()
2639 if (intern->u.caching.flags & CIT_CATCH_GET_CHILD) { in spl_caching_it_next()
2646 ZVAL_LONG(&zflags, intern->u.caching.flags & CIT_PUBLIC); in spl_caching_it_next()
2647 …spl_instantiate_arg_ex2(spl_ce_RecursiveCachingIterator, &intern->u.caching.zchildren, &zchildren,… in spl_caching_it_next()
2653 if (intern->u.caching.flags & CIT_CATCH_GET_CHILD) { in spl_caching_it_next()
2661 if (intern->u.caching.flags & (CIT_TOSTRING_USE_INNER|CIT_CALL_TOSTRING)) { in spl_caching_it_next()
2664 if (intern->u.caching.flags & CIT_TOSTRING_USE_INNER) { in spl_caching_it_next()
2665 ZVAL_COPY_VALUE(&intern->u.caching.zstr, &intern->inner.zobject); in spl_caching_it_next()
2667 ZVAL_COPY_VALUE(&intern->u.caching.zstr, &intern->current.data); in spl_caching_it_next()
2669 use_copy = zend_make_printable_zval(&intern->u.caching.zstr, &expr_copy); in spl_caching_it_next()
2671 ZVAL_COPY_VALUE(&intern->u.caching.zstr, &expr_copy); in spl_caching_it_next()
2673 Z_TRY_ADDREF(intern->u.caching.zstr); in spl_caching_it_next()
2676 spl_dual_it_next(intern, 0); in spl_caching_it_next()
2678 intern->u.caching.flags &= ~CIT_VALID; in spl_caching_it_next()
2682 static inline void spl_caching_it_rewind(spl_dual_it_object *intern) in spl_caching_it_rewind() argument
2684 spl_dual_it_rewind(intern); in spl_caching_it_rewind()
2685 zend_hash_clean(Z_ARRVAL(intern->u.caching.zcache)); in spl_caching_it_rewind()
2686 spl_caching_it_next(intern); in spl_caching_it_rewind()
2700 spl_dual_it_object *intern; in SPL_METHOD() local
2706 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2708 spl_caching_it_rewind(intern); in SPL_METHOD()
2715 spl_dual_it_object *intern; in SPL_METHOD() local
2721 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2723 RETURN_BOOL(spl_caching_it_valid(intern) == SUCCESS); in SPL_METHOD()
2730 spl_dual_it_object *intern; in SPL_METHOD() local
2736 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2738 spl_caching_it_next(intern); in SPL_METHOD()
2745 spl_dual_it_object *intern; in SPL_METHOD() local
2751 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2753 RETURN_BOOL(spl_caching_it_has_next(intern) == SUCCESS); in SPL_METHOD()
2760 spl_dual_it_object *intern; in SPL_METHOD() local
2762 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2764 …if (!(intern->u.caching.flags & (CIT_CALL_TOSTRING|CIT_TOSTRING_USE_KEY|CIT_TOSTRING_USE_CURRENT|C… in SPL_METHOD()
2768 if (intern->u.caching.flags & CIT_TOSTRING_USE_KEY) { in SPL_METHOD()
2769 ZVAL_COPY(return_value, &intern->current.key); in SPL_METHOD()
2772 } else if (intern->u.caching.flags & CIT_TOSTRING_USE_CURRENT) { in SPL_METHOD()
2773 ZVAL_COPY(return_value, &intern->current.data); in SPL_METHOD()
2777 if (Z_TYPE(intern->u.caching.zstr) == IS_STRING) { in SPL_METHOD()
2778 RETURN_STR_COPY(Z_STR_P(&intern->u.caching.zstr)); in SPL_METHOD()
2788 spl_dual_it_object *intern; in SPL_METHOD() local
2792 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2794 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in SPL_METHOD()
2804 zend_symtable_update(Z_ARRVAL(intern->u.caching.zcache), key, value); in SPL_METHOD()
2812 spl_dual_it_object *intern; in SPL_METHOD() local
2816 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2818 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in SPL_METHOD()
2827 if ((value = zend_symtable_find(Z_ARRVAL(intern->u.caching.zcache), key)) == NULL) { in SPL_METHOD()
2840 spl_dual_it_object *intern; in SPL_METHOD() local
2843 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2845 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in SPL_METHOD()
2854 zend_symtable_del(Z_ARRVAL(intern->u.caching.zcache), key); in SPL_METHOD()
2862 spl_dual_it_object *intern; in SPL_METHOD() local
2865 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2867 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in SPL_METHOD()
2876 RETURN_BOOL(zend_symtable_exists(Z_ARRVAL(intern->u.caching.zcache), key)); in SPL_METHOD()
2884 spl_dual_it_object *intern; in SPL_METHOD() local
2890 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2892 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in SPL_METHOD()
2897 ZVAL_COPY(return_value, &intern->u.caching.zcache); in SPL_METHOD()
2905 spl_dual_it_object *intern; in SPL_METHOD() local
2911 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2913 RETURN_LONG(intern->u.caching.flags); in SPL_METHOD()
2921 spl_dual_it_object *intern; in SPL_METHOD() local
2924 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2934 if ((intern->u.caching.flags & CIT_CALL_TOSTRING) != 0 && (flags & CIT_CALL_TOSTRING) == 0) { in SPL_METHOD()
2938 …if ((intern->u.caching.flags & CIT_TOSTRING_USE_INNER) != 0 && (flags & CIT_TOSTRING_USE_INNER) ==… in SPL_METHOD()
2942 if ((flags & CIT_FULL_CACHE) != 0 && (intern->u.caching.flags & CIT_FULL_CACHE) == 0) { in SPL_METHOD()
2944 zend_hash_clean(Z_ARRVAL(intern->u.caching.zcache)); in SPL_METHOD()
2946 intern->u.caching.flags = (intern->u.caching.flags & ~CIT_PUBLIC) | (flags & CIT_PUBLIC); in SPL_METHOD()
2954 spl_dual_it_object *intern; in SPL_METHOD() local
2960 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
2962 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in SPL_METHOD()
2967 RETURN_LONG(zend_hash_num_elements(Z_ARRVAL(intern->u.caching.zcache))); in SPL_METHOD()
3021 spl_dual_it_object *intern; in SPL_METHOD() local
3027 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
3029 RETURN_BOOL(Z_TYPE(intern->u.caching.zchildren) != IS_UNDEF); in SPL_METHOD()
3036 spl_dual_it_object *intern; in SPL_METHOD() local
3042 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
3044 if (Z_TYPE(intern->u.caching.zchildren) != IS_UNDEF) { in SPL_METHOD()
3045 zval *value = &intern->u.caching.zchildren; in SPL_METHOD()
3108 spl_dual_it_object *intern; in SPL_METHOD() local
3114 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
3115 RETURN_BOOL(intern->inner.iterator->funcs->valid(intern->inner.iterator) == SUCCESS); in SPL_METHOD()
3122 spl_dual_it_object *intern; in SPL_METHOD() local
3128 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
3130 if (intern->inner.iterator->funcs->get_current_key) { in SPL_METHOD()
3131 intern->inner.iterator->funcs->get_current_key(intern->inner.iterator, return_value); in SPL_METHOD()
3141 spl_dual_it_object *intern; in SPL_METHOD() local
3148 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
3149 data = intern->inner.iterator->funcs->get_current_data(intern->inner.iterator); in SPL_METHOD()
3159 spl_dual_it_object *intern; in SPL_METHOD() local
3165 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
3166 intern->inner.iterator->funcs->move_forward(intern->inner.iterator); in SPL_METHOD()
3195 spl_dual_it_object *intern; in SPL_METHOD() local
3201 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
3203 spl_dual_it_next(intern, 1); in SPL_METHOD()
3204 if (spl_dual_it_valid(intern) == SUCCESS) { in SPL_METHOD()
3205 spl_dual_it_fetch(intern, 0); in SPL_METHOD()
3207 spl_dual_it_rewind(intern); in SPL_METHOD()
3208 if (spl_dual_it_valid(intern) == SUCCESS) { in SPL_METHOD()
3209 spl_dual_it_fetch(intern, 0); in SPL_METHOD()
3277 int spl_append_it_next_iterator(spl_dual_it_object *intern) /* {{{*/ in spl_append_it_next_iterator() argument
3279 spl_dual_it_free(intern); in spl_append_it_next_iterator()
3281 if (!Z_ISUNDEF(intern->inner.zobject)) { in spl_append_it_next_iterator()
3282 zval_ptr_dtor(&intern->inner.zobject); in spl_append_it_next_iterator()
3283 ZVAL_UNDEF(&intern->inner.zobject); in spl_append_it_next_iterator()
3284 intern->inner.ce = NULL; in spl_append_it_next_iterator()
3285 if (intern->inner.iterator) { in spl_append_it_next_iterator()
3286 zend_iterator_dtor(intern->inner.iterator); in spl_append_it_next_iterator()
3287 intern->inner.iterator = NULL; in spl_append_it_next_iterator()
3290 if (intern->u.append.iterator->funcs->valid(intern->u.append.iterator) == SUCCESS) { in spl_append_it_next_iterator()
3293 it = intern->u.append.iterator->funcs->get_current_data(intern->u.append.iterator); in spl_append_it_next_iterator()
3294 ZVAL_COPY(&intern->inner.zobject, it); in spl_append_it_next_iterator()
3295 intern->inner.ce = Z_OBJCE_P(it); in spl_append_it_next_iterator()
3296 intern->inner.iterator = intern->inner.ce->get_iterator(intern->inner.ce, it, 0); in spl_append_it_next_iterator()
3297 spl_dual_it_rewind(intern); in spl_append_it_next_iterator()
3304 void spl_append_it_fetch(spl_dual_it_object *intern) /* {{{*/ in spl_append_it_fetch() argument
3306 while (spl_dual_it_valid(intern) != SUCCESS) { in spl_append_it_fetch()
3307 intern->u.append.iterator->funcs->move_forward(intern->u.append.iterator); in spl_append_it_fetch()
3308 if (spl_append_it_next_iterator(intern) != SUCCESS) { in spl_append_it_fetch()
3312 spl_dual_it_fetch(intern, 0); in spl_append_it_fetch()
3315 void spl_append_it_next(spl_dual_it_object *intern) /* {{{ */ in spl_append_it_next() argument
3317 if (spl_dual_it_valid(intern) == SUCCESS) { in spl_append_it_next()
3318 spl_dual_it_next(intern, 1); in spl_append_it_next()
3320 spl_append_it_fetch(intern); in spl_append_it_next()
3334 spl_dual_it_object *intern; in SPL_METHOD() local
3337 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
3342 …if (intern->u.append.iterator->funcs->valid(intern->u.append.iterator) == SUCCESS && spl_dual_it_v… in SPL_METHOD()
3343 spl_array_iterator_append(&intern->u.append.zarrayit, it); in SPL_METHOD()
3344 intern->u.append.iterator->funcs->move_forward(intern->u.append.iterator); in SPL_METHOD()
3346 spl_array_iterator_append(&intern->u.append.zarrayit, it); in SPL_METHOD()
3349 if (!intern->inner.iterator || spl_dual_it_valid(intern) != SUCCESS) { in SPL_METHOD()
3350 if (intern->u.append.iterator->funcs->valid(intern->u.append.iterator) != SUCCESS) { in SPL_METHOD()
3351 intern->u.append.iterator->funcs->rewind(intern->u.append.iterator); in SPL_METHOD()
3354 spl_append_it_next_iterator(intern); in SPL_METHOD()
3355 } while (Z_OBJ(intern->inner.zobject) != Z_OBJ_P(it)); in SPL_METHOD()
3356 spl_append_it_fetch(intern); in SPL_METHOD()
3364 spl_dual_it_object *intern; in SPL_METHOD() local
3370 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
3372 spl_dual_it_fetch(intern, 1); in SPL_METHOD()
3373 if (Z_TYPE(intern->current.data) != IS_UNDEF) { in SPL_METHOD()
3374 zval *value = &intern->current.data; in SPL_METHOD()
3386 spl_dual_it_object *intern; in SPL_METHOD() local
3392 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
3394 intern->u.append.iterator->funcs->rewind(intern->u.append.iterator); in SPL_METHOD()
3395 if (spl_append_it_next_iterator(intern) == SUCCESS) { in SPL_METHOD()
3396 spl_append_it_fetch(intern); in SPL_METHOD()
3404 spl_dual_it_object *intern; in SPL_METHOD() local
3410 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
3412 RETURN_BOOL(Z_TYPE(intern->current.data) != IS_UNDEF); in SPL_METHOD()
3419 spl_dual_it_object *intern; in SPL_METHOD() local
3425 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
3427 spl_append_it_next(intern); in SPL_METHOD()
3434 spl_dual_it_object *intern; in SPL_METHOD() local
3440 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
3442 APPENDIT_CHECK_CTOR(intern); in SPL_METHOD()
3443 spl_array_iterator_key(&intern->u.append.zarrayit, return_value); in SPL_METHOD()
3450 spl_dual_it_object *intern; in SPL_METHOD() local
3457 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in SPL_METHOD()
3459 value = &intern->u.append.zarrayit; in SPL_METHOD()