Lines Matching refs:intern

101 	zend_object_iterator   intern;  member
194 spl_recursive_it_object *object = Z_SPLRECURSIVE_IT_P(&iter->intern.data); in spl_recursive_it_dtor()
210 zval_ptr_dtor(&iter->intern.data); in spl_recursive_it_dtor()
511 ZVAL_OBJ_COPY(&iterator->intern.data, Z_OBJ_P(zobject)); in spl_recursive_it_get_iterator()
512 iterator->intern.funcs = &spl_recursive_it_iterator_funcs; in spl_recursive_it_get_iterator()
537 spl_recursive_it_object *intern; in spl_recursive_it_it_construct() local
599 intern = Z_SPLRECURSIVE_IT_P(object); in spl_recursive_it_it_construct()
600 intern->iterators = emalloc(sizeof(spl_sub_iterator)); in spl_recursive_it_it_construct()
601 intern->level = 0; in spl_recursive_it_it_construct()
602 intern->mode = mode; in spl_recursive_it_it_construct()
603 intern->flags = (int)flags; in spl_recursive_it_it_construct()
604 intern->max_depth = -1; in spl_recursive_it_it_construct()
605 intern->in_iteration = 0; in spl_recursive_it_it_construct()
606 intern->ce = Z_OBJCE_P(object); in spl_recursive_it_it_construct()
608intern->beginIteration = zend_hash_str_find_ptr(&intern->ce->function_table, "beginiteration", siz… in spl_recursive_it_it_construct()
609 if (intern->beginIteration->common.scope == ce_base) { in spl_recursive_it_it_construct()
610 intern->beginIteration = NULL; in spl_recursive_it_it_construct()
612intern->endIteration = zend_hash_str_find_ptr(&intern->ce->function_table, "enditeration", sizeof(… in spl_recursive_it_it_construct()
613 if (intern->endIteration->common.scope == ce_base) { in spl_recursive_it_it_construct()
614 intern->endIteration = NULL; in spl_recursive_it_it_construct()
616intern->callHasChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "callhaschildren", s… in spl_recursive_it_it_construct()
617 if (intern->callHasChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
618 intern->callHasChildren = NULL; in spl_recursive_it_it_construct()
620intern->callGetChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "callgetchildren", s… in spl_recursive_it_it_construct()
621 if (intern->callGetChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
622 intern->callGetChildren = NULL; in spl_recursive_it_it_construct()
624intern->beginChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "beginchildren", sizeo… in spl_recursive_it_it_construct()
625 if (intern->beginChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
626 intern->beginChildren = NULL; in spl_recursive_it_it_construct()
628intern->endChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "endchildren", sizeof("e… in spl_recursive_it_it_construct()
629 if (intern->endChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
630 intern->endChildren = NULL; in spl_recursive_it_it_construct()
632intern->nextElement = zend_hash_str_find_ptr(&intern->ce->function_table, "nextelement", sizeof("n… in spl_recursive_it_it_construct()
633 if (intern->nextElement->common.scope == ce_base) { in spl_recursive_it_it_construct()
634 intern->nextElement = NULL; in spl_recursive_it_it_construct()
638 intern->iterators[0].iterator = ce_iterator->get_iterator(ce_iterator, iterator, 0); in spl_recursive_it_it_construct()
639 ZVAL_OBJ(&intern->iterators[0].zobject, Z_OBJ_P(iterator)); in spl_recursive_it_it_construct()
640 intern->iterators[0].ce = ce_iterator; in spl_recursive_it_it_construct()
641 intern->iterators[0].state = RS_START; in spl_recursive_it_it_construct()
642 intern->iterators[0].haschildren = NULL; in spl_recursive_it_it_construct()
643 intern->iterators[0].getchildren = NULL; in spl_recursive_it_it_construct()
648 while (intern->level >= 0) { in spl_recursive_it_it_construct()
649 sub_iter = intern->iterators[intern->level].iterator; in spl_recursive_it_it_construct()
651 zval_ptr_dtor(&intern->iterators[intern->level--].zobject); in spl_recursive_it_it_construct()
653 efree(intern->iterators); in spl_recursive_it_it_construct()
654 intern->iterators = NULL; in spl_recursive_it_it_construct()
997 spl_recursive_it_object *intern; in spl_RecursiveIteratorIterator_new_ex() local
999 intern = zend_object_alloc(sizeof(spl_recursive_it_object), class_type); in spl_RecursiveIteratorIterator_new_ex()
1002 intern->prefix[0] = ZSTR_EMPTY_ALLOC(); in spl_RecursiveIteratorIterator_new_ex()
1003 intern->prefix[1] = ZSTR_INIT_LITERAL("| ", 0); in spl_RecursiveIteratorIterator_new_ex()
1004 intern->prefix[2] = ZSTR_INIT_LITERAL(" ", 0); in spl_RecursiveIteratorIterator_new_ex()
1005 intern->prefix[3] = ZSTR_INIT_LITERAL("|-", 0); in spl_RecursiveIteratorIterator_new_ex()
1006 intern->prefix[4] = ZSTR_INIT_LITERAL("\\-", 0); in spl_RecursiveIteratorIterator_new_ex()
1007 intern->prefix[5] = ZSTR_EMPTY_ALLOC(); in spl_RecursiveIteratorIterator_new_ex()
1009 intern->postfix[0] = ZSTR_EMPTY_ALLOC(); in spl_RecursiveIteratorIterator_new_ex()
1012 zend_object_std_init(&intern->std, class_type); in spl_RecursiveIteratorIterator_new_ex()
1013 object_properties_init(&intern->std, class_type); in spl_RecursiveIteratorIterator_new_ex()
1015 return &intern->std; in spl_RecursiveIteratorIterator_new_ex()
1275 spl_dual_it_object *intern; in spl_dual_it_get_method() local
1277 intern = spl_dual_it_from_obj(*object); in spl_dual_it_get_method()
1280 if (!function_handler && intern->inner.ce) { in spl_dual_it_get_method()
1281 if ((function_handler = zend_hash_find_ptr(&intern->inner.ce->function_table, method)) == NULL) { in spl_dual_it_get_method()
1282 if (Z_OBJ_HT(intern->inner.zobject)->get_method) { in spl_dual_it_get_method()
1283 *object = Z_OBJ(intern->inner.zobject); in spl_dual_it_get_method()
1287 *object = Z_OBJ(intern->inner.zobject); in spl_dual_it_get_method()
1293 #define SPL_CHECK_CTOR(intern, classname) \ argument
1294 if (intern->dit_type == DIT_Unknown) { \
1301 #define APPENDIT_CHECK_CTOR(intern) SPL_CHECK_CTOR(intern, AppendIterator) argument
1303 static inline zend_result spl_dual_it_fetch(spl_dual_it_object *intern, int check_more);
1320 spl_dual_it_object *intern; in spl_dual_it_construct() local
1325 intern = Z_SPLDUAL_IT_P(ZEND_THIS); in spl_dual_it_construct()
1327 if (intern->dit_type != DIT_Unknown) { in spl_dual_it_construct()
1334 intern->u.limit.offset = 0; /* start at beginning */ in spl_dual_it_construct()
1335 intern->u.limit.count = -1; /* get all */ in spl_dual_it_construct()
1336 …rse_parameters(ZEND_NUM_ARGS(), "O|ll", &zobject, ce_inner, &intern->u.limit.offset, &intern->u.li… in spl_dual_it_construct()
1339 if (intern->u.limit.offset < 0) { in spl_dual_it_construct()
1343 if (intern->u.limit.count < -1) { in spl_dual_it_construct()
1361 intern->u.caching.flags |= flags & CIT_PUBLIC; in spl_dual_it_construct()
1362 array_init(&intern->u.caching.zcache); in spl_dual_it_construct()
1399 intern->dit_type = DIT_AppendIterator; in spl_dual_it_construct()
1400 object_init_ex(&intern->u.append.zarrayit, spl_ce_ArrayIterator); in spl_dual_it_construct()
1401 …zend_call_method_with_0_params(Z_OBJ(intern->u.append.zarrayit), spl_ce_ArrayIterator, &spl_ce_Arr… in spl_dual_it_construct()
1402intern->u.append.iterator = spl_ce_ArrayIterator->get_iterator(spl_ce_ArrayIterator, &intern->u.ap… in spl_dual_it_construct()
1403 return intern; in spl_dual_it_construct()
1409 intern->u.regex.flags = 0; in spl_dual_it_construct()
1410 intern->u.regex.preg_flags = 0; in spl_dual_it_construct()
1411 …ND_NUM_ARGS(), "OS|lll", &zobject, ce_inner, &regex, &mode, &intern->u.regex.flags, &intern->u.reg… in spl_dual_it_construct()
1422 intern->u.regex.pce = pcre_get_compiled_regex_cache(regex); in spl_dual_it_construct()
1425 if (intern->u.regex.pce == NULL) { in spl_dual_it_construct()
1429 intern->u.regex.mode = mode; in spl_dual_it_construct()
1430 intern->u.regex.regex = zend_string_copy(regex); in spl_dual_it_construct()
1431 php_pcre_pce_incref(intern->u.regex.pce); in spl_dual_it_construct()
1437 …if (zend_parse_parameters(ZEND_NUM_ARGS(), "OF", &zobject, ce_inner, &fci, &intern->u.callback_fil… in spl_dual_it_construct()
1440 zend_fcc_addref(&intern->u.callback_filter); in spl_dual_it_construct()
1450 intern->dit_type = dit_type; in spl_dual_it_construct()
1454 ZVAL_OBJ(&intern->inner.zobject, Z_OBJ_P(zobject)); in spl_dual_it_construct()
1456 intern->inner.ce = dit_type == DIT_IteratorIterator ? ce : Z_OBJCE_P(zobject); in spl_dual_it_construct()
1457 intern->inner.object = Z_OBJ_P(zobject); in spl_dual_it_construct()
1458 intern->inner.iterator = intern->inner.ce->get_iterator(intern->inner.ce, zobject, 0); in spl_dual_it_construct()
1460 return intern; in spl_dual_it_construct()
1478 spl_dual_it_object *intern; in PHP_METHOD() local
1484 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1486 if (!Z_ISUNDEF(intern->inner.zobject)) { in PHP_METHOD()
1487 zval *value = &intern->inner.zobject; in PHP_METHOD()
1494 static inline void spl_dual_it_free(spl_dual_it_object *intern) in spl_dual_it_free() argument
1496 if (intern->inner.iterator && intern->inner.iterator->funcs->invalidate_current) { in spl_dual_it_free()
1497 intern->inner.iterator->funcs->invalidate_current(intern->inner.iterator); in spl_dual_it_free()
1499 if (Z_TYPE(intern->current.data) != IS_UNDEF) { in spl_dual_it_free()
1500 zval_ptr_dtor(&intern->current.data); in spl_dual_it_free()
1501 ZVAL_UNDEF(&intern->current.data); in spl_dual_it_free()
1503 if (Z_TYPE(intern->current.key) != IS_UNDEF) { in spl_dual_it_free()
1504 zval_ptr_dtor(&intern->current.key); in spl_dual_it_free()
1505 ZVAL_UNDEF(&intern->current.key); in spl_dual_it_free()
1507 if (intern->dit_type == DIT_CachingIterator || intern->dit_type == DIT_RecursiveCachingIterator) { in spl_dual_it_free()
1508 if (intern->u.caching.zstr) { in spl_dual_it_free()
1509 zend_string_release(intern->u.caching.zstr); in spl_dual_it_free()
1510 intern->u.caching.zstr = NULL; in spl_dual_it_free()
1512 if (Z_TYPE(intern->u.caching.zchildren) != IS_UNDEF) { in spl_dual_it_free()
1513 zval_ptr_dtor(&intern->u.caching.zchildren); in spl_dual_it_free()
1514 ZVAL_UNDEF(&intern->u.caching.zchildren); in spl_dual_it_free()
1519 static inline void spl_dual_it_rewind(spl_dual_it_object *intern) in spl_dual_it_rewind() argument
1521 spl_dual_it_free(intern); in spl_dual_it_rewind()
1522 intern->current.pos = 0; in spl_dual_it_rewind()
1523 if (intern->inner.iterator && intern->inner.iterator->funcs->rewind) { in spl_dual_it_rewind()
1524 intern->inner.iterator->funcs->rewind(intern->inner.iterator); in spl_dual_it_rewind()
1528 static inline zend_result spl_dual_it_valid(spl_dual_it_object *intern) in spl_dual_it_valid() argument
1530 if (!intern->inner.iterator) { in spl_dual_it_valid()
1534 return intern->inner.iterator->funcs->valid(intern->inner.iterator); in spl_dual_it_valid()
1537 static inline zend_result spl_dual_it_fetch(spl_dual_it_object *intern, int check_more) in spl_dual_it_fetch() argument
1541 spl_dual_it_free(intern); in spl_dual_it_fetch()
1542 if (!check_more || spl_dual_it_valid(intern) == SUCCESS) { in spl_dual_it_fetch()
1543 data = intern->inner.iterator->funcs->get_current_data(intern->inner.iterator); in spl_dual_it_fetch()
1545 ZVAL_COPY(&intern->current.data, data); in spl_dual_it_fetch()
1548 if (intern->inner.iterator->funcs->get_current_key) { in spl_dual_it_fetch()
1549 intern->inner.iterator->funcs->get_current_key(intern->inner.iterator, &intern->current.key); in spl_dual_it_fetch()
1551 zval_ptr_dtor(&intern->current.key); in spl_dual_it_fetch()
1552 ZVAL_UNDEF(&intern->current.key); in spl_dual_it_fetch()
1555 ZVAL_LONG(&intern->current.key, intern->current.pos); in spl_dual_it_fetch()
1562 static inline void spl_dual_it_next(spl_dual_it_object *intern, int do_free) in spl_dual_it_next() argument
1565 spl_dual_it_free(intern); in spl_dual_it_next()
1566 } else if (!intern->inner.iterator) { in spl_dual_it_next()
1570 intern->inner.iterator->funcs->move_forward(intern->inner.iterator); in spl_dual_it_next()
1571 intern->current.pos++; in spl_dual_it_next()
1577 spl_dual_it_object *intern; in PHP_METHOD() local
1583 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1585 spl_dual_it_rewind(intern); in PHP_METHOD()
1586 spl_dual_it_fetch(intern, 1); in PHP_METHOD()
1592 spl_dual_it_object *intern; in PHP_METHOD() local
1598 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1600 RETURN_BOOL(Z_TYPE(intern->current.data) != IS_UNDEF); in PHP_METHOD()
1606 spl_dual_it_object *intern; in PHP_METHOD() local
1612 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1614 if (Z_TYPE(intern->current.key) != IS_UNDEF) { in PHP_METHOD()
1615 RETURN_COPY_DEREF(&intern->current.key); in PHP_METHOD()
1624 spl_dual_it_object *intern; in PHP_METHOD() local
1630 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1632 if (Z_TYPE(intern->current.data) != IS_UNDEF) { in PHP_METHOD()
1633 RETURN_COPY_DEREF(&intern->current.data); in PHP_METHOD()
1642 spl_dual_it_object *intern; in PHP_METHOD() local
1648 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1650 spl_dual_it_next(intern, 1); in PHP_METHOD()
1651 spl_dual_it_fetch(intern, 1); in PHP_METHOD()
1654 static inline void spl_filter_it_fetch(zval *zthis, spl_dual_it_object *intern) in spl_filter_it_fetch() argument
1658 while (spl_dual_it_fetch(intern, 1) == SUCCESS) { in spl_filter_it_fetch()
1659 zend_call_method_with_0_params(Z_OBJ_P(zthis), intern->std.ce, NULL, "accept", &retval); in spl_filter_it_fetch()
1670 intern->inner.iterator->funcs->move_forward(intern->inner.iterator); in spl_filter_it_fetch()
1672 spl_dual_it_free(intern); in spl_filter_it_fetch()
1675 static inline void spl_filter_it_rewind(zval *zthis, spl_dual_it_object *intern) in spl_filter_it_rewind() argument
1677 spl_dual_it_rewind(intern); in spl_filter_it_rewind()
1678 spl_filter_it_fetch(zthis, intern); in spl_filter_it_rewind()
1681 static inline void spl_filter_it_next(zval *zthis, spl_dual_it_object *intern) in spl_filter_it_next() argument
1683 spl_dual_it_next(intern, 1); in spl_filter_it_next()
1684 spl_filter_it_fetch(zthis, intern); in spl_filter_it_next()
1690 spl_dual_it_object *intern; in PHP_METHOD() local
1696 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1697 spl_filter_it_rewind(ZEND_THIS, intern); in PHP_METHOD()
1703 spl_dual_it_object *intern; in PHP_METHOD() local
1709 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1710 spl_filter_it_next(ZEND_THIS, intern); in PHP_METHOD()
1729 spl_dual_it_object *intern; in PHP_METHOD() local
1735 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1737 …zend_call_method_with_0_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "haschildren"… in PHP_METHOD()
1743 spl_dual_it_object *intern; in PHP_METHOD() local
1750 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1752 …zend_call_method_with_0_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "getchildren"… in PHP_METHOD()
1762 spl_dual_it_object *intern; in PHP_METHOD() local
1769 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1771 …zend_call_method_with_0_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "getchildren"… in PHP_METHOD()
1774 zend_get_callable_zval_from_fcc(&intern->u.callback_filter, &callable); in PHP_METHOD()
1795 spl_dual_it_object *intern; in PHP_METHOD() local
1801 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1803 if (Z_TYPE(intern->current.data) == IS_UNDEF || Z_TYPE(intern->current.key) == IS_UNDEF) { in PHP_METHOD()
1808 ZVAL_COPY_VALUE(&params[0], &intern->current.data); in PHP_METHOD()
1809 ZVAL_COPY_VALUE(&params[1], &intern->current.key); in PHP_METHOD()
1810 ZVAL_COPY_VALUE(&params[2], &intern->inner.zobject); in PHP_METHOD()
1812 zend_fcall_info_cache *fcc = &intern->u.callback_filter; in PHP_METHOD()
1826 spl_dual_it_object *intern; in PHP_METHOD() local
1838 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1840 if (Z_TYPE(intern->current.data) == IS_UNDEF) { in PHP_METHOD()
1844 if (intern->u.regex.flags & REGIT_USE_KEY) { in PHP_METHOD()
1845 subject = zval_get_string(&intern->current.key); in PHP_METHOD()
1847 if (Z_TYPE(intern->current.data) == IS_ARRAY) { in PHP_METHOD()
1850 subject = zval_get_string(&intern->current.data); in PHP_METHOD()
1858 switch (intern->u.regex.mode) in PHP_METHOD()
1862 re = php_pcre_pce_re(intern->u.regex.pce); in PHP_METHOD()
1874 zval_ptr_dtor(&intern->current.data); in PHP_METHOD()
1875 ZVAL_UNDEF(&intern->current.data); in PHP_METHOD()
1876 php_pcre_match_impl(intern->u.regex.pce, subject, &zcount, in PHP_METHOD()
1877 …&intern->current.data, intern->u.regex.mode == REGIT_MODE_ALL_MATCHES, intern->u.regex.preg_flags,… in PHP_METHOD()
1882 zval_ptr_dtor(&intern->current.data); in PHP_METHOD()
1883 ZVAL_UNDEF(&intern->current.data); in PHP_METHOD()
1884 …php_pcre_split_impl(intern->u.regex.pce, subject, &intern->current.data, -1, intern->u.regex.preg_… in PHP_METHOD()
1885 count = zend_hash_num_elements(Z_ARRVAL(intern->current.data)); in PHP_METHOD()
1890 …zval *replacement = zend_read_property(intern->std.ce, Z_OBJ_P(ZEND_THIS), "replacement", sizeof("… in PHP_METHOD()
1897 …result = php_pcre_replace_impl(intern->u.regex.pce, subject, ZSTR_VAL(subject), ZSTR_LEN(subject),… in PHP_METHOD()
1899 if (intern->u.regex.flags & REGIT_USE_KEY) { in PHP_METHOD()
1900 zval_ptr_dtor(&intern->current.key); in PHP_METHOD()
1901 ZVAL_STR(&intern->current.key, result); in PHP_METHOD()
1903 zval_ptr_dtor(&intern->current.data); in PHP_METHOD()
1904 ZVAL_STR(&intern->current.data, result); in PHP_METHOD()
1912 if (intern->u.regex.flags & REGIT_INVERTED) { in PHP_METHOD()
1921 spl_dual_it_object *intern; in PHP_METHOD() local
1927 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1929 RETURN_STR_COPY(intern->u.regex.regex); in PHP_METHOD()
1935 spl_dual_it_object *intern; in PHP_METHOD() local
1941 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1943 RETURN_LONG(intern->u.regex.mode); in PHP_METHOD()
1949 spl_dual_it_object *intern; in PHP_METHOD() local
1962 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1964 intern->u.regex.mode = mode; in PHP_METHOD()
1970 spl_dual_it_object *intern; in PHP_METHOD() local
1976 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1978 RETURN_LONG(intern->u.regex.flags); in PHP_METHOD()
1984 spl_dual_it_object *intern; in PHP_METHOD() local
1991 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1993 intern->u.regex.flags = flags; in PHP_METHOD()
1999 spl_dual_it_object *intern; in PHP_METHOD() local
2005 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2007 RETURN_LONG(intern->u.regex.preg_flags); in PHP_METHOD()
2013 spl_dual_it_object *intern; in PHP_METHOD() local
2020 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2022 intern->u.regex.preg_flags = preg_flags; in PHP_METHOD()
2034 spl_dual_it_object *intern; in PHP_METHOD() local
2041 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2043 …zend_call_method_with_0_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "getchildren"… in PHP_METHOD()
2048 ZVAL_STR_COPY(&args[1], intern->u.regex.regex); in PHP_METHOD()
2049 ZVAL_LONG(&args[2], intern->u.regex.mode); in PHP_METHOD()
2050 ZVAL_LONG(&args[3], intern->u.regex.flags); in PHP_METHOD()
2051 ZVAL_LONG(&args[4], intern->u.regex.preg_flags); in PHP_METHOD()
2063 spl_dual_it_object *intern; in PHP_METHOD() local
2069 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2071 if (Z_TYPE(intern->current.data) == IS_UNDEF) { in PHP_METHOD()
2073 } else if (Z_TYPE(intern->current.data) == IS_ARRAY) { in PHP_METHOD()
2074 RETURN_BOOL(zend_hash_num_elements(Z_ARRVAL(intern->current.data)) > 0); in PHP_METHOD()
2175 spl_dual_it_object *intern; in spl_dual_it_new() local
2177 intern = zend_object_alloc(sizeof(spl_dual_it_object), class_type); in spl_dual_it_new()
2178 intern->dit_type = DIT_Unknown; in spl_dual_it_new()
2180 zend_object_std_init(&intern->std, class_type); in spl_dual_it_new()
2181 object_properties_init(&intern->std, class_type); in spl_dual_it_new()
2183 return &intern->std; in spl_dual_it_new()
2187 static inline zend_result spl_limit_it_valid(spl_dual_it_object *intern) in spl_limit_it_valid() argument
2190 …if (intern->u.limit.count != -1 && intern->current.pos >= intern->u.limit.offset + intern->u.limit… in spl_limit_it_valid()
2193 return spl_dual_it_valid(intern); in spl_limit_it_valid()
2197 static inline void spl_limit_it_seek(spl_dual_it_object *intern, zend_long pos) in spl_limit_it_seek() argument
2201 spl_dual_it_free(intern); in spl_limit_it_seek()
2202 if (pos < intern->u.limit.offset) { in spl_limit_it_seek()
2203 … seek to " ZEND_LONG_FMT " which is below the offset " ZEND_LONG_FMT, pos, intern->u.limit.offset); in spl_limit_it_seek()
2206 if (pos >= intern->u.limit.offset + intern->u.limit.count && intern->u.limit.count != -1) { in spl_limit_it_seek()
2207 …nd offset " ZEND_LONG_FMT " plus count " ZEND_LONG_FMT, pos, intern->u.limit.offset, intern->u.lim… in spl_limit_it_seek()
2210 if (pos != intern->current.pos && instanceof_function(intern->inner.ce, spl_ce_SeekableIterator)) { in spl_limit_it_seek()
2212 spl_dual_it_free(intern); in spl_limit_it_seek()
2213 …zend_call_method_with_1_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "seek", NULL,… in spl_limit_it_seek()
2215 intern->current.pos = pos; in spl_limit_it_seek()
2216 if (spl_limit_it_valid(intern) == SUCCESS) { in spl_limit_it_seek()
2217 spl_dual_it_fetch(intern, 0); in spl_limit_it_seek()
2223 if (pos < intern->current.pos) { in spl_limit_it_seek()
2224 spl_dual_it_rewind(intern); in spl_limit_it_seek()
2226 while (pos > intern->current.pos && spl_dual_it_valid(intern) == SUCCESS) { in spl_limit_it_seek()
2227 spl_dual_it_next(intern, 1); in spl_limit_it_seek()
2229 if (spl_dual_it_valid(intern) == SUCCESS) { in spl_limit_it_seek()
2230 spl_dual_it_fetch(intern, 1); in spl_limit_it_seek()
2244 spl_dual_it_object *intern; in PHP_METHOD() local
2250 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2251 spl_dual_it_rewind(intern); in PHP_METHOD()
2252 spl_limit_it_seek(intern, intern->u.limit.offset); in PHP_METHOD()
2258 spl_dual_it_object *intern; in PHP_METHOD() local
2264 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2267 …RETURN_BOOL((intern->u.limit.count == -1 || intern->current.pos < intern->u.limit.offset + intern-… in PHP_METHOD()
2273 spl_dual_it_object *intern; in PHP_METHOD() local
2279 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2281 spl_dual_it_next(intern, 1); in PHP_METHOD()
2282 …if (intern->u.limit.count == -1 || intern->current.pos < intern->u.limit.offset + intern->u.limit.… in PHP_METHOD()
2283 spl_dual_it_fetch(intern, 1); in PHP_METHOD()
2290 spl_dual_it_object *intern; in PHP_METHOD() local
2297 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2298 spl_limit_it_seek(intern, pos); in PHP_METHOD()
2299 RETURN_LONG(intern->current.pos); in PHP_METHOD()
2305 spl_dual_it_object *intern; in PHP_METHOD() local
2311 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2312 RETURN_LONG(intern->current.pos); in PHP_METHOD()
2315 static inline int spl_caching_it_valid(spl_dual_it_object *intern) in spl_caching_it_valid() argument
2317 return intern->u.caching.flags & CIT_VALID ? SUCCESS : FAILURE; in spl_caching_it_valid()
2320 static inline int spl_caching_it_has_next(spl_dual_it_object *intern) in spl_caching_it_has_next() argument
2322 return spl_dual_it_valid(intern); in spl_caching_it_has_next()
2325 static inline void spl_caching_it_next(spl_dual_it_object *intern) in spl_caching_it_next() argument
2327 if (spl_dual_it_fetch(intern, 1) == SUCCESS) { in spl_caching_it_next()
2328 intern->u.caching.flags |= CIT_VALID; in spl_caching_it_next()
2330 if (intern->u.caching.flags & CIT_FULL_CACHE) { in spl_caching_it_next()
2331 zval *key = &intern->current.key; in spl_caching_it_next()
2332 zval *data = &intern->current.data; in spl_caching_it_next()
2335 array_set_zval_key(Z_ARRVAL(intern->u.caching.zcache), key, data); in spl_caching_it_next()
2338 if (intern->dit_type == DIT_RecursiveCachingIterator) { in spl_caching_it_next()
2340 …zend_call_method_with_0_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "haschildren"… in spl_caching_it_next()
2343 if (intern->u.caching.flags & CIT_CATCH_GET_CHILD) { in spl_caching_it_next()
2350 …zend_call_method_with_0_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "getchildren"… in spl_caching_it_next()
2353 if (intern->u.caching.flags & CIT_CATCH_GET_CHILD) { in spl_caching_it_next()
2360 ZVAL_LONG(&zflags, intern->u.caching.flags & CIT_PUBLIC); in spl_caching_it_next()
2361 …spl_instantiate_arg_ex2(spl_ce_RecursiveCachingIterator, &intern->u.caching.zchildren, &zchildren,… in spl_caching_it_next()
2367 if (intern->u.caching.flags & CIT_CATCH_GET_CHILD) { in spl_caching_it_next()
2375 if (intern->u.caching.flags & (CIT_TOSTRING_USE_INNER|CIT_CALL_TOSTRING)) { in spl_caching_it_next()
2376 if (intern->u.caching.flags & CIT_TOSTRING_USE_INNER) { in spl_caching_it_next()
2377 intern->u.caching.zstr = zval_get_string(&intern->inner.zobject); in spl_caching_it_next()
2379 intern->u.caching.zstr = zval_get_string(&intern->current.data); in spl_caching_it_next()
2382 spl_dual_it_next(intern, 0); in spl_caching_it_next()
2384 intern->u.caching.flags &= ~CIT_VALID; in spl_caching_it_next()
2388 static inline void spl_caching_it_rewind(spl_dual_it_object *intern) in spl_caching_it_rewind() argument
2390 spl_dual_it_rewind(intern); in spl_caching_it_rewind()
2391 zend_hash_clean(Z_ARRVAL(intern->u.caching.zcache)); in spl_caching_it_rewind()
2392 spl_caching_it_next(intern); in spl_caching_it_rewind()
2404 spl_dual_it_object *intern; in PHP_METHOD() local
2410 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2412 spl_caching_it_rewind(intern); in PHP_METHOD()
2418 spl_dual_it_object *intern; in PHP_METHOD() local
2424 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2426 RETURN_BOOL(spl_caching_it_valid(intern) == SUCCESS); in PHP_METHOD()
2432 spl_dual_it_object *intern; in PHP_METHOD() local
2438 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2440 spl_caching_it_next(intern); in PHP_METHOD()
2446 spl_dual_it_object *intern; in PHP_METHOD() local
2452 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2454 RETURN_BOOL(spl_caching_it_has_next(intern) == SUCCESS); in PHP_METHOD()
2460 spl_dual_it_object *intern; in PHP_METHOD() local
2466 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2468 …if (!(intern->u.caching.flags & (CIT_CALL_TOSTRING|CIT_TOSTRING_USE_KEY|CIT_TOSTRING_USE_CURRENT|C… in PHP_METHOD()
2473 if (intern->u.caching.flags & CIT_TOSTRING_USE_KEY) { in PHP_METHOD()
2474 ZVAL_COPY(return_value, &intern->current.key); in PHP_METHOD()
2477 } else if (intern->u.caching.flags & CIT_TOSTRING_USE_CURRENT) { in PHP_METHOD()
2478 ZVAL_COPY(return_value, &intern->current.data); in PHP_METHOD()
2482 if (intern->u.caching.zstr) { in PHP_METHOD()
2483 RETURN_STR_COPY(intern->u.caching.zstr); in PHP_METHOD()
2492 spl_dual_it_object *intern; in PHP_METHOD() local
2500 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2502 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in PHP_METHOD()
2508 zend_symtable_update(Z_ARRVAL(intern->u.caching.zcache), key, value); in PHP_METHOD()
2515 spl_dual_it_object *intern; in PHP_METHOD() local
2523 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2525 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in PHP_METHOD()
2530 if ((value = zend_symtable_find(Z_ARRVAL(intern->u.caching.zcache), key)) == NULL) { in PHP_METHOD()
2542 spl_dual_it_object *intern; in PHP_METHOD() local
2545 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2551 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in PHP_METHOD()
2556 zend_symtable_del(Z_ARRVAL(intern->u.caching.zcache), key); in PHP_METHOD()
2563 spl_dual_it_object *intern; in PHP_METHOD() local
2570 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2572 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in PHP_METHOD()
2577 RETURN_BOOL(zend_symtable_exists(Z_ARRVAL(intern->u.caching.zcache), key)); in PHP_METHOD()
2584 spl_dual_it_object *intern; in PHP_METHOD() local
2590 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2592 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in PHP_METHOD()
2597 ZVAL_COPY(return_value, &intern->u.caching.zcache); in PHP_METHOD()
2604 spl_dual_it_object *intern; in PHP_METHOD() local
2610 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2612 RETURN_LONG(intern->u.caching.flags); in PHP_METHOD()
2619 spl_dual_it_object *intern; in PHP_METHOD() local
2626 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2634 if ((intern->u.caching.flags & CIT_CALL_TOSTRING) != 0 && (flags & CIT_CALL_TOSTRING) == 0) { in PHP_METHOD()
2638 …if ((intern->u.caching.flags & CIT_TOSTRING_USE_INNER) != 0 && (flags & CIT_TOSTRING_USE_INNER) ==… in PHP_METHOD()
2642 if ((flags & CIT_FULL_CACHE) != 0 && (intern->u.caching.flags & CIT_FULL_CACHE) == 0) { in PHP_METHOD()
2644 zend_hash_clean(Z_ARRVAL(intern->u.caching.zcache)); in PHP_METHOD()
2646 intern->u.caching.flags = (intern->u.caching.flags & ~CIT_PUBLIC) | (flags & CIT_PUBLIC); in PHP_METHOD()
2653 spl_dual_it_object *intern; in PHP_METHOD() local
2659 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2661 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in PHP_METHOD()
2666 RETURN_LONG(zend_hash_num_elements(Z_ARRVAL(intern->u.caching.zcache))); in PHP_METHOD()
2679 spl_dual_it_object *intern; in PHP_METHOD() local
2685 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2687 RETURN_BOOL(Z_TYPE(intern->u.caching.zchildren) != IS_UNDEF); in PHP_METHOD()
2693 spl_dual_it_object *intern; in PHP_METHOD() local
2699 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2701 if (Z_TYPE(intern->u.caching.zchildren) != IS_UNDEF) { in PHP_METHOD()
2702 zval *value = &intern->u.caching.zchildren; in PHP_METHOD()
2734 spl_dual_it_object *intern; in PHP_METHOD() local
2740 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2741 RETURN_BOOL(intern->inner.iterator->funcs->valid(intern->inner.iterator) == SUCCESS); in PHP_METHOD()
2747 spl_dual_it_object *intern; in PHP_METHOD() local
2753 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2755 if (intern->inner.iterator->funcs->get_current_key) { in PHP_METHOD()
2756 intern->inner.iterator->funcs->get_current_key(intern->inner.iterator, return_value); in PHP_METHOD()
2765 spl_dual_it_object *intern; in PHP_METHOD() local
2772 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2773 data = intern->inner.iterator->funcs->get_current_data(intern->inner.iterator); in PHP_METHOD()
2782 spl_dual_it_object *intern; in PHP_METHOD() local
2788 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2789 intern->inner.iterator->funcs->move_forward(intern->inner.iterator); in PHP_METHOD()
2801 spl_dual_it_object *intern; in PHP_METHOD() local
2807 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2809 spl_dual_it_next(intern, 1); in PHP_METHOD()
2810 if (spl_dual_it_valid(intern) == SUCCESS) { in PHP_METHOD()
2811 spl_dual_it_fetch(intern, 0); in PHP_METHOD()
2813 spl_dual_it_rewind(intern); in PHP_METHOD()
2814 if (spl_dual_it_valid(intern) == SUCCESS) { in PHP_METHOD()
2815 spl_dual_it_fetch(intern, 0); in PHP_METHOD()
2866 zend_result spl_append_it_next_iterator(spl_dual_it_object *intern) /* {{{*/ in spl_append_it_next_iterator() argument
2868 spl_dual_it_free(intern); in spl_append_it_next_iterator()
2870 if (!Z_ISUNDEF(intern->inner.zobject)) { in spl_append_it_next_iterator()
2871 zval_ptr_dtor(&intern->inner.zobject); in spl_append_it_next_iterator()
2872 ZVAL_UNDEF(&intern->inner.zobject); in spl_append_it_next_iterator()
2873 intern->inner.ce = NULL; in spl_append_it_next_iterator()
2874 if (intern->inner.iterator) { in spl_append_it_next_iterator()
2875 zend_iterator_dtor(intern->inner.iterator); in spl_append_it_next_iterator()
2876 intern->inner.iterator = NULL; in spl_append_it_next_iterator()
2879 if (intern->u.append.iterator->funcs->valid(intern->u.append.iterator) == SUCCESS) { in spl_append_it_next_iterator()
2882 it = intern->u.append.iterator->funcs->get_current_data(intern->u.append.iterator); in spl_append_it_next_iterator()
2883 ZVAL_COPY(&intern->inner.zobject, it); in spl_append_it_next_iterator()
2884 intern->inner.ce = Z_OBJCE_P(it); in spl_append_it_next_iterator()
2885 intern->inner.iterator = intern->inner.ce->get_iterator(intern->inner.ce, it, 0); in spl_append_it_next_iterator()
2886 spl_dual_it_rewind(intern); in spl_append_it_next_iterator()
2893 static void spl_append_it_fetch(spl_dual_it_object *intern) /* {{{*/ in spl_append_it_fetch() argument
2895 while (spl_dual_it_valid(intern) != SUCCESS) { in spl_append_it_fetch()
2896 intern->u.append.iterator->funcs->move_forward(intern->u.append.iterator); in spl_append_it_fetch()
2897 if (spl_append_it_next_iterator(intern) != SUCCESS) { in spl_append_it_fetch()
2901 spl_dual_it_fetch(intern, 0); in spl_append_it_fetch()
2904 static void spl_append_it_next(spl_dual_it_object *intern) /* {{{ */ in spl_append_it_next() argument
2906 if (spl_dual_it_valid(intern) == SUCCESS) { in spl_append_it_next()
2907 spl_dual_it_next(intern, 1); in spl_append_it_next()
2909 spl_append_it_fetch(intern); in spl_append_it_next()
2921 spl_dual_it_object *intern; in PHP_METHOD() local
2928 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2930 …if (intern->u.append.iterator->funcs->valid(intern->u.append.iterator) == SUCCESS && spl_dual_it_v… in PHP_METHOD()
2931 spl_array_iterator_append(&intern->u.append.zarrayit, it); in PHP_METHOD()
2932 intern->u.append.iterator->funcs->move_forward(intern->u.append.iterator); in PHP_METHOD()
2934 spl_array_iterator_append(&intern->u.append.zarrayit, it); in PHP_METHOD()
2937 if (!intern->inner.iterator || spl_dual_it_valid(intern) != SUCCESS) { in PHP_METHOD()
2938 if (intern->u.append.iterator->funcs->valid(intern->u.append.iterator) != SUCCESS) { in PHP_METHOD()
2939 intern->u.append.iterator->funcs->rewind(intern->u.append.iterator); in PHP_METHOD()
2942 spl_append_it_next_iterator(intern); in PHP_METHOD()
2943 } while (Z_OBJ(intern->inner.zobject) != Z_OBJ_P(it)); in PHP_METHOD()
2944 spl_append_it_fetch(intern); in PHP_METHOD()
2951 spl_dual_it_object *intern; in PHP_METHOD() local
2957 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2959 spl_dual_it_fetch(intern, 1); in PHP_METHOD()
2960 if (Z_TYPE(intern->current.data) != IS_UNDEF) { in PHP_METHOD()
2961 RETURN_COPY_DEREF(&intern->current.data); in PHP_METHOD()
2970 spl_dual_it_object *intern; in PHP_METHOD() local
2976 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2978 intern->u.append.iterator->funcs->rewind(intern->u.append.iterator); in PHP_METHOD()
2979 if (spl_append_it_next_iterator(intern) == SUCCESS) { in PHP_METHOD()
2980 spl_append_it_fetch(intern); in PHP_METHOD()
2987 spl_dual_it_object *intern; in PHP_METHOD() local
2993 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2995 RETURN_BOOL(Z_TYPE(intern->current.data) != IS_UNDEF); in PHP_METHOD()
3001 spl_dual_it_object *intern; in PHP_METHOD() local
3007 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
3009 spl_append_it_next(intern); in PHP_METHOD()
3015 spl_dual_it_object *intern; in PHP_METHOD() local
3021 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
3023 APPENDIT_CHECK_CTOR(intern); in PHP_METHOD()
3024 spl_array_iterator_key(&intern->u.append.zarrayit, return_value); in PHP_METHOD()
3030 spl_dual_it_object *intern; in PHP_METHOD() local
3037 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
3039 value = &intern->u.append.zarrayit; in PHP_METHOD()