Lines Matching refs:intern

111 	zend_object_iterator   intern;  member
158 spl_recursive_it_object *object = Z_SPLRECURSIVE_IT_P(&iter->intern.data); in spl_recursive_it_dtor()
172 zval_ptr_dtor(&iter->intern.data); in spl_recursive_it_dtor()
458 ZVAL_OBJ_COPY(&iterator->intern.data, Z_OBJ_P(zobject)); in spl_recursive_it_get_iterator()
459 iterator->intern.funcs = &spl_recursive_it_iterator_funcs; in spl_recursive_it_get_iterator()
484 spl_recursive_it_object *intern; in spl_recursive_it_it_construct() local
550 intern = Z_SPLRECURSIVE_IT_P(object); in spl_recursive_it_it_construct()
551 intern->iterators = emalloc(sizeof(spl_sub_iterator)); in spl_recursive_it_it_construct()
552 intern->level = 0; in spl_recursive_it_it_construct()
553 intern->mode = mode; in spl_recursive_it_it_construct()
554 intern->flags = (int)flags; in spl_recursive_it_it_construct()
555 intern->max_depth = -1; in spl_recursive_it_it_construct()
556 intern->in_iteration = 0; in spl_recursive_it_it_construct()
557 intern->ce = Z_OBJCE_P(object); in spl_recursive_it_it_construct()
559intern->beginIteration = zend_hash_str_find_ptr(&intern->ce->function_table, "beginiteration", siz… in spl_recursive_it_it_construct()
560 if (intern->beginIteration->common.scope == ce_base) { in spl_recursive_it_it_construct()
561 intern->beginIteration = NULL; in spl_recursive_it_it_construct()
563intern->endIteration = zend_hash_str_find_ptr(&intern->ce->function_table, "enditeration", sizeof(… in spl_recursive_it_it_construct()
564 if (intern->endIteration->common.scope == ce_base) { in spl_recursive_it_it_construct()
565 intern->endIteration = NULL; in spl_recursive_it_it_construct()
567intern->callHasChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "callhaschildren", s… in spl_recursive_it_it_construct()
568 if (intern->callHasChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
569 intern->callHasChildren = NULL; in spl_recursive_it_it_construct()
571intern->callGetChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "callgetchildren", s… in spl_recursive_it_it_construct()
572 if (intern->callGetChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
573 intern->callGetChildren = NULL; in spl_recursive_it_it_construct()
575intern->beginChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "beginchildren", sizeo… in spl_recursive_it_it_construct()
576 if (intern->beginChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
577 intern->beginChildren = NULL; in spl_recursive_it_it_construct()
579intern->endChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "endchildren", sizeof("e… in spl_recursive_it_it_construct()
580 if (intern->endChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
581 intern->endChildren = NULL; in spl_recursive_it_it_construct()
583intern->nextElement = zend_hash_str_find_ptr(&intern->ce->function_table, "nextelement", sizeof("n… in spl_recursive_it_it_construct()
584 if (intern->nextElement->common.scope == ce_base) { in spl_recursive_it_it_construct()
585 intern->nextElement = NULL; in spl_recursive_it_it_construct()
589 intern->iterators[0].iterator = ce_iterator->get_iterator(ce_iterator, iterator, 0); in spl_recursive_it_it_construct()
590 ZVAL_OBJ(&intern->iterators[0].zobject, Z_OBJ_P(iterator)); in spl_recursive_it_it_construct()
591 intern->iterators[0].ce = ce_iterator; in spl_recursive_it_it_construct()
592 intern->iterators[0].state = RS_START; in spl_recursive_it_it_construct()
599 while (intern->level >= 0) { in spl_recursive_it_it_construct()
600 sub_iter = intern->iterators[intern->level].iterator; in spl_recursive_it_it_construct()
602 zval_ptr_dtor(&intern->iterators[intern->level--].zobject); in spl_recursive_it_it_construct()
604 efree(intern->iterators); in spl_recursive_it_it_construct()
605 intern->iterators = NULL; in spl_recursive_it_it_construct()
947 spl_recursive_it_object *intern; in spl_RecursiveIteratorIterator_new_ex() local
949 intern = zend_object_alloc(sizeof(spl_recursive_it_object), class_type); in spl_RecursiveIteratorIterator_new_ex()
952 smart_str_appendl(&intern->prefix[0], "", 0); in spl_RecursiveIteratorIterator_new_ex()
953 smart_str_appendl(&intern->prefix[1], "| ", 2); in spl_RecursiveIteratorIterator_new_ex()
954 smart_str_appendl(&intern->prefix[2], " ", 2); in spl_RecursiveIteratorIterator_new_ex()
955 smart_str_appendl(&intern->prefix[3], "|-", 2); in spl_RecursiveIteratorIterator_new_ex()
956 smart_str_appendl(&intern->prefix[4], "\\-", 2); in spl_RecursiveIteratorIterator_new_ex()
957 smart_str_appendl(&intern->prefix[5], "", 0); in spl_RecursiveIteratorIterator_new_ex()
959 smart_str_appendl(&intern->postfix[0], "", 0); in spl_RecursiveIteratorIterator_new_ex()
962 zend_object_std_init(&intern->std, class_type); in spl_RecursiveIteratorIterator_new_ex()
963 object_properties_init(&intern->std, class_type); in spl_RecursiveIteratorIterator_new_ex()
965 intern->std.handlers = &spl_handlers_rec_it_it; in spl_RecursiveIteratorIterator_new_ex()
966 return &intern->std; in spl_RecursiveIteratorIterator_new_ex()
1251 spl_dual_it_object *intern; in spl_dual_it_get_method() local
1253 intern = spl_dual_it_from_obj(*object); in spl_dual_it_get_method()
1256 if (!function_handler && intern->inner.ce) { in spl_dual_it_get_method()
1257 if ((function_handler = zend_hash_find_ptr(&intern->inner.ce->function_table, method)) == NULL) { in spl_dual_it_get_method()
1258 if (Z_OBJ_HT(intern->inner.zobject)->get_method) { in spl_dual_it_get_method()
1259 *object = Z_OBJ(intern->inner.zobject); in spl_dual_it_get_method()
1263 *object = Z_OBJ(intern->inner.zobject); in spl_dual_it_get_method()
1269 #define SPL_CHECK_CTOR(intern, classname) \ argument
1270 if (intern->dit_type == DIT_Unknown) { \
1277 #define APPENDIT_CHECK_CTOR(intern) SPL_CHECK_CTOR(intern, AppendIterator) argument
1279 static inline int spl_dual_it_fetch(spl_dual_it_object *intern, int check_more);
1296 spl_dual_it_object *intern; in spl_dual_it_construct() local
1301 intern = Z_SPLDUAL_IT_P(ZEND_THIS); in spl_dual_it_construct()
1303 if (intern->dit_type != DIT_Unknown) { in spl_dual_it_construct()
1310 intern->u.limit.offset = 0; /* start at beginning */ in spl_dual_it_construct()
1311 intern->u.limit.count = -1; /* get all */ in spl_dual_it_construct()
1312 …rse_parameters(ZEND_NUM_ARGS(), "O|ll", &zobject, ce_inner, &intern->u.limit.offset, &intern->u.li… in spl_dual_it_construct()
1315 if (intern->u.limit.offset < 0) { in spl_dual_it_construct()
1319 if (intern->u.limit.count < -1) { in spl_dual_it_construct()
1337 intern->u.caching.flags |= flags & CIT_PUBLIC; in spl_dual_it_construct()
1338 array_init(&intern->u.caching.zcache); in spl_dual_it_construct()
1375 intern->dit_type = DIT_AppendIterator; in spl_dual_it_construct()
1377 object_init_ex(&intern->u.append.zarrayit, spl_ce_ArrayIterator); in spl_dual_it_construct()
1378 …zend_call_method_with_0_params(Z_OBJ(intern->u.append.zarrayit), spl_ce_ArrayIterator, &spl_ce_Arr… in spl_dual_it_construct()
1379intern->u.append.iterator = spl_ce_ArrayIterator->get_iterator(spl_ce_ArrayIterator, &intern->u.ap… in spl_dual_it_construct()
1381 return intern; in spl_dual_it_construct()
1387 intern->u.regex.use_flags = ZEND_NUM_ARGS() >= 5; in spl_dual_it_construct()
1388 intern->u.regex.flags = 0; in spl_dual_it_construct()
1389 intern->u.regex.preg_flags = 0; in spl_dual_it_construct()
1390 …ND_NUM_ARGS(), "OS|lll", &zobject, ce_inner, &regex, &mode, &intern->u.regex.flags, &intern->u.reg… in spl_dual_it_construct()
1400 intern->u.regex.pce = pcre_get_compiled_regex_cache(regex); in spl_dual_it_construct()
1403 if (intern->u.regex.pce == NULL) { in spl_dual_it_construct()
1407 intern->u.regex.mode = mode; in spl_dual_it_construct()
1408 intern->u.regex.regex = zend_string_copy(regex); in spl_dual_it_construct()
1409 php_pcre_pce_incref(intern->u.regex.pce); in spl_dual_it_construct()
1423 intern->u.cbfilter = cfi; in spl_dual_it_construct()
1433 intern->dit_type = dit_type; in spl_dual_it_construct()
1437 ZVAL_OBJ(&intern->inner.zobject, Z_OBJ_P(zobject)); in spl_dual_it_construct()
1439 intern->inner.ce = dit_type == DIT_IteratorIterator ? ce : Z_OBJCE_P(zobject); in spl_dual_it_construct()
1440 intern->inner.object = Z_OBJ_P(zobject); in spl_dual_it_construct()
1441 intern->inner.iterator = intern->inner.ce->get_iterator(intern->inner.ce, zobject, 0); in spl_dual_it_construct()
1443 return intern; in spl_dual_it_construct()
1461 spl_dual_it_object *intern; in PHP_METHOD() local
1467 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1469 if (!Z_ISUNDEF(intern->inner.zobject)) { in PHP_METHOD()
1470 zval *value = &intern->inner.zobject; in PHP_METHOD()
1478 static inline void spl_dual_it_free(spl_dual_it_object *intern) in spl_dual_it_free() argument
1480 if (intern->inner.iterator && intern->inner.iterator->funcs->invalidate_current) { in spl_dual_it_free()
1481 intern->inner.iterator->funcs->invalidate_current(intern->inner.iterator); in spl_dual_it_free()
1483 if (Z_TYPE(intern->current.data) != IS_UNDEF) { in spl_dual_it_free()
1484 zval_ptr_dtor(&intern->current.data); in spl_dual_it_free()
1485 ZVAL_UNDEF(&intern->current.data); in spl_dual_it_free()
1487 if (Z_TYPE(intern->current.key) != IS_UNDEF) { in spl_dual_it_free()
1488 zval_ptr_dtor(&intern->current.key); in spl_dual_it_free()
1489 ZVAL_UNDEF(&intern->current.key); in spl_dual_it_free()
1491 if (intern->dit_type == DIT_CachingIterator || intern->dit_type == DIT_RecursiveCachingIterator) { in spl_dual_it_free()
1492 if (Z_TYPE(intern->u.caching.zstr) != IS_UNDEF) { in spl_dual_it_free()
1493 zval_ptr_dtor(&intern->u.caching.zstr); in spl_dual_it_free()
1494 ZVAL_UNDEF(&intern->u.caching.zstr); in spl_dual_it_free()
1496 if (Z_TYPE(intern->u.caching.zchildren) != IS_UNDEF) { in spl_dual_it_free()
1497 zval_ptr_dtor(&intern->u.caching.zchildren); in spl_dual_it_free()
1498 ZVAL_UNDEF(&intern->u.caching.zchildren); in spl_dual_it_free()
1503 static inline void spl_dual_it_rewind(spl_dual_it_object *intern) in spl_dual_it_rewind() argument
1505 spl_dual_it_free(intern); in spl_dual_it_rewind()
1506 intern->current.pos = 0; in spl_dual_it_rewind()
1507 if (intern->inner.iterator && intern->inner.iterator->funcs->rewind) { in spl_dual_it_rewind()
1508 intern->inner.iterator->funcs->rewind(intern->inner.iterator); in spl_dual_it_rewind()
1512 static inline int spl_dual_it_valid(spl_dual_it_object *intern) in spl_dual_it_valid() argument
1514 if (!intern->inner.iterator) { in spl_dual_it_valid()
1518 return intern->inner.iterator->funcs->valid(intern->inner.iterator); in spl_dual_it_valid()
1521 static inline int spl_dual_it_fetch(spl_dual_it_object *intern, int check_more) in spl_dual_it_fetch() argument
1525 spl_dual_it_free(intern); in spl_dual_it_fetch()
1526 if (!check_more || spl_dual_it_valid(intern) == SUCCESS) { in spl_dual_it_fetch()
1527 data = intern->inner.iterator->funcs->get_current_data(intern->inner.iterator); in spl_dual_it_fetch()
1529 ZVAL_COPY(&intern->current.data, data); in spl_dual_it_fetch()
1532 if (intern->inner.iterator->funcs->get_current_key) { in spl_dual_it_fetch()
1533 intern->inner.iterator->funcs->get_current_key(intern->inner.iterator, &intern->current.key); in spl_dual_it_fetch()
1535 zval_ptr_dtor(&intern->current.key); in spl_dual_it_fetch()
1536 ZVAL_UNDEF(&intern->current.key); in spl_dual_it_fetch()
1539 ZVAL_LONG(&intern->current.key, intern->current.pos); in spl_dual_it_fetch()
1546 static inline void spl_dual_it_next(spl_dual_it_object *intern, int do_free) in spl_dual_it_next() argument
1549 spl_dual_it_free(intern); in spl_dual_it_next()
1550 } else if (!intern->inner.iterator) { in spl_dual_it_next()
1554 intern->inner.iterator->funcs->move_forward(intern->inner.iterator); in spl_dual_it_next()
1555 intern->current.pos++; in spl_dual_it_next()
1561 spl_dual_it_object *intern; in PHP_METHOD() local
1567 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1569 spl_dual_it_rewind(intern); in PHP_METHOD()
1570 spl_dual_it_fetch(intern, 1); in PHP_METHOD()
1576 spl_dual_it_object *intern; in PHP_METHOD() local
1582 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1584 RETURN_BOOL(Z_TYPE(intern->current.data) != IS_UNDEF); in PHP_METHOD()
1590 spl_dual_it_object *intern; in PHP_METHOD() local
1596 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1598 if (Z_TYPE(intern->current.key) != IS_UNDEF) { in PHP_METHOD()
1599 zval *value = &intern->current.key; in PHP_METHOD()
1610 spl_dual_it_object *intern; in PHP_METHOD() local
1616 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1618 if (Z_TYPE(intern->current.data) != IS_UNDEF) { in PHP_METHOD()
1619 zval *value = &intern->current.data; in PHP_METHOD()
1630 spl_dual_it_object *intern; in PHP_METHOD() local
1636 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1638 spl_dual_it_next(intern, 1); in PHP_METHOD()
1639 spl_dual_it_fetch(intern, 1); in PHP_METHOD()
1642 static inline void spl_filter_it_fetch(zval *zthis, spl_dual_it_object *intern) in spl_filter_it_fetch() argument
1646 while (spl_dual_it_fetch(intern, 1) == SUCCESS) { in spl_filter_it_fetch()
1647 zend_call_method_with_0_params(Z_OBJ_P(zthis), intern->std.ce, NULL, "accept", &retval); in spl_filter_it_fetch()
1658 intern->inner.iterator->funcs->move_forward(intern->inner.iterator); in spl_filter_it_fetch()
1660 spl_dual_it_free(intern); in spl_filter_it_fetch()
1663 static inline void spl_filter_it_rewind(zval *zthis, spl_dual_it_object *intern) in spl_filter_it_rewind() argument
1665 spl_dual_it_rewind(intern); in spl_filter_it_rewind()
1666 spl_filter_it_fetch(zthis, intern); in spl_filter_it_rewind()
1669 static inline void spl_filter_it_next(zval *zthis, spl_dual_it_object *intern) in spl_filter_it_next() argument
1671 spl_dual_it_next(intern, 1); in spl_filter_it_next()
1672 spl_filter_it_fetch(zthis, intern); in spl_filter_it_next()
1678 spl_dual_it_object *intern; in PHP_METHOD() local
1684 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1685 spl_filter_it_rewind(ZEND_THIS, intern); in PHP_METHOD()
1691 spl_dual_it_object *intern; in PHP_METHOD() local
1697 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1698 spl_filter_it_next(ZEND_THIS, intern); in PHP_METHOD()
1717 spl_dual_it_object *intern; in PHP_METHOD() local
1723 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1725 …zend_call_method_with_0_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "haschildren"… in PHP_METHOD()
1731 spl_dual_it_object *intern; in PHP_METHOD() local
1738 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1740 …zend_call_method_with_0_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "getchildren"… in PHP_METHOD()
1750 spl_dual_it_object *intern; in PHP_METHOD() local
1757 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1759 …zend_call_method_with_0_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "getchildren"… in PHP_METHOD()
1761 …spl_instantiate_arg_ex2(Z_OBJCE_P(ZEND_THIS), return_value, &retval, &intern->u.cbfilter->fci.func… in PHP_METHOD()
1780 spl_dual_it_object *intern = Z_SPLDUAL_IT_P(ZEND_THIS); in PHP_METHOD() local
1786 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1788 if (Z_TYPE(intern->current.data) == IS_UNDEF || Z_TYPE(intern->current.key) == IS_UNDEF) { in PHP_METHOD()
1793 ZVAL_COPY_VALUE(&params[0], &intern->current.data); in PHP_METHOD()
1794 ZVAL_COPY_VALUE(&params[1], &intern->current.key); in PHP_METHOD()
1795 ZVAL_COPY_VALUE(&params[2], &intern->inner.zobject); in PHP_METHOD()
1797 zend_fcall_info *fci = &intern->u.cbfilter->fci; in PHP_METHOD()
1798 zend_fcall_info_cache *fcc = &intern->u.cbfilter->fcc; in PHP_METHOD()
1812 spl_dual_it_object *intern; in PHP_METHOD() local
1824 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1826 if (Z_TYPE(intern->current.data) == IS_UNDEF) { in PHP_METHOD()
1830 if (intern->u.regex.flags & REGIT_USE_KEY) { in PHP_METHOD()
1831 subject = zval_get_string(&intern->current.key); in PHP_METHOD()
1833 if (Z_TYPE(intern->current.data) == IS_ARRAY) { in PHP_METHOD()
1836 subject = zval_get_string(&intern->current.data); in PHP_METHOD()
1844 switch (intern->u.regex.mode) in PHP_METHOD()
1848 re = php_pcre_pce_re(intern->u.regex.pce); in PHP_METHOD()
1860 zval_ptr_dtor(&intern->current.data); in PHP_METHOD()
1861 ZVAL_UNDEF(&intern->current.data); in PHP_METHOD()
1862 php_pcre_match_impl(intern->u.regex.pce, subject, &zcount, in PHP_METHOD()
1863 …&intern->current.data, intern->u.regex.mode == REGIT_MODE_ALL_MATCHES, intern->u.regex.use_flags, in PHP_METHOD()
1868 zval_ptr_dtor(&intern->current.data); in PHP_METHOD()
1869 ZVAL_UNDEF(&intern->current.data); in PHP_METHOD()
1870 …php_pcre_split_impl(intern->u.regex.pce, subject, &intern->current.data, -1, intern->u.regex.preg_… in PHP_METHOD()
1871 count = zend_hash_num_elements(Z_ARRVAL(intern->current.data)); in PHP_METHOD()
1876 …zval *replacement = zend_read_property(intern->std.ce, Z_OBJ_P(ZEND_THIS), "replacement", sizeof("… in PHP_METHOD()
1882 …result = php_pcre_replace_impl(intern->u.regex.pce, subject, ZSTR_VAL(subject), ZSTR_LEN(subject),… in PHP_METHOD()
1884 if (intern->u.regex.flags & REGIT_USE_KEY) { in PHP_METHOD()
1885 zval_ptr_dtor(&intern->current.key); in PHP_METHOD()
1886 ZVAL_STR(&intern->current.key, result); in PHP_METHOD()
1888 zval_ptr_dtor(&intern->current.data); in PHP_METHOD()
1889 ZVAL_STR(&intern->current.data, result); in PHP_METHOD()
1897 if (intern->u.regex.flags & REGIT_INVERTED) { in PHP_METHOD()
1906 spl_dual_it_object *intern = Z_SPLDUAL_IT_P(ZEND_THIS); in PHP_METHOD() local
1912 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1914 RETURN_STR_COPY(intern->u.regex.regex); in PHP_METHOD()
1920 spl_dual_it_object *intern; in PHP_METHOD() local
1926 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1928 RETURN_LONG(intern->u.regex.mode); in PHP_METHOD()
1934 spl_dual_it_object *intern; in PHP_METHOD() local
1947 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1949 intern->u.regex.mode = mode; in PHP_METHOD()
1955 spl_dual_it_object *intern; in PHP_METHOD() local
1961 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1963 RETURN_LONG(intern->u.regex.flags); in PHP_METHOD()
1969 spl_dual_it_object *intern; in PHP_METHOD() local
1976 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1978 intern->u.regex.flags = flags; in PHP_METHOD()
1984 spl_dual_it_object *intern; in PHP_METHOD() local
1990 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1992 if (intern->u.regex.use_flags) { in PHP_METHOD()
1993 RETURN_LONG(intern->u.regex.preg_flags); in PHP_METHOD()
2002 spl_dual_it_object *intern; in PHP_METHOD() local
2009 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2011 intern->u.regex.preg_flags = preg_flags; in PHP_METHOD()
2012 intern->u.regex.use_flags = 1; in PHP_METHOD()
2024 spl_dual_it_object *intern; in PHP_METHOD() local
2031 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2033 …zend_call_method_with_0_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "getchildren"… in PHP_METHOD()
2038 ZVAL_STR_COPY(&args[1], intern->u.regex.regex); in PHP_METHOD()
2039 ZVAL_LONG(&args[2], intern->u.regex.mode); in PHP_METHOD()
2040 ZVAL_LONG(&args[3], intern->u.regex.flags); in PHP_METHOD()
2041 ZVAL_LONG(&args[4], intern->u.regex.preg_flags); in PHP_METHOD()
2053 spl_dual_it_object *intern; in PHP_METHOD() local
2059 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2061 if (Z_TYPE(intern->current.data) == IS_UNDEF) { in PHP_METHOD()
2063 } else if (Z_TYPE(intern->current.data) == IS_ARRAY) { in PHP_METHOD()
2064 RETURN_BOOL(zend_hash_num_elements(Z_ARRVAL(intern->current.data)) > 0); in PHP_METHOD()
2180 spl_dual_it_object *intern; in spl_dual_it_new() local
2182 intern = zend_object_alloc(sizeof(spl_dual_it_object), class_type); in spl_dual_it_new()
2183 intern->dit_type = DIT_Unknown; in spl_dual_it_new()
2185 zend_object_std_init(&intern->std, class_type); in spl_dual_it_new()
2186 object_properties_init(&intern->std, class_type); in spl_dual_it_new()
2188 intern->std.handlers = &spl_handlers_dual_it; in spl_dual_it_new()
2189 return &intern->std; in spl_dual_it_new()
2193 static inline int spl_limit_it_valid(spl_dual_it_object *intern) in spl_limit_it_valid() argument
2196 …if (intern->u.limit.count != -1 && intern->current.pos >= intern->u.limit.offset + intern->u.limit… in spl_limit_it_valid()
2199 return spl_dual_it_valid(intern); in spl_limit_it_valid()
2203 static inline void spl_limit_it_seek(spl_dual_it_object *intern, zend_long pos) in spl_limit_it_seek() argument
2207 spl_dual_it_free(intern); in spl_limit_it_seek()
2208 if (pos < intern->u.limit.offset) { in spl_limit_it_seek()
2209 … seek to " ZEND_LONG_FMT " which is below the offset " ZEND_LONG_FMT, pos, intern->u.limit.offset); in spl_limit_it_seek()
2212 if (pos >= intern->u.limit.offset + intern->u.limit.count && intern->u.limit.count != -1) { in spl_limit_it_seek()
2213 …nd offset " ZEND_LONG_FMT " plus count " ZEND_LONG_FMT, pos, intern->u.limit.offset, intern->u.lim… in spl_limit_it_seek()
2216 if (pos != intern->current.pos && instanceof_function(intern->inner.ce, spl_ce_SeekableIterator)) { in spl_limit_it_seek()
2218 spl_dual_it_free(intern); in spl_limit_it_seek()
2219 …zend_call_method_with_1_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "seek", NULL,… in spl_limit_it_seek()
2221 intern->current.pos = pos; in spl_limit_it_seek()
2222 if (spl_limit_it_valid(intern) == SUCCESS) { in spl_limit_it_seek()
2223 spl_dual_it_fetch(intern, 0); in spl_limit_it_seek()
2229 if (pos < intern->current.pos) { in spl_limit_it_seek()
2230 spl_dual_it_rewind(intern); in spl_limit_it_seek()
2232 while (pos > intern->current.pos && spl_dual_it_valid(intern) == SUCCESS) { in spl_limit_it_seek()
2233 spl_dual_it_next(intern, 1); in spl_limit_it_seek()
2235 if (spl_dual_it_valid(intern) == SUCCESS) { in spl_limit_it_seek()
2236 spl_dual_it_fetch(intern, 1); in spl_limit_it_seek()
2250 spl_dual_it_object *intern; in PHP_METHOD() local
2256 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2257 spl_dual_it_rewind(intern); in PHP_METHOD()
2258 spl_limit_it_seek(intern, intern->u.limit.offset); in PHP_METHOD()
2264 spl_dual_it_object *intern; in PHP_METHOD() local
2270 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2273 …RETURN_BOOL((intern->u.limit.count == -1 || intern->current.pos < intern->u.limit.offset + intern-… in PHP_METHOD()
2279 spl_dual_it_object *intern; in PHP_METHOD() local
2285 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2287 spl_dual_it_next(intern, 1); in PHP_METHOD()
2288 …if (intern->u.limit.count == -1 || intern->current.pos < intern->u.limit.offset + intern->u.limit.… in PHP_METHOD()
2289 spl_dual_it_fetch(intern, 1); in PHP_METHOD()
2296 spl_dual_it_object *intern; in PHP_METHOD() local
2303 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2304 spl_limit_it_seek(intern, pos); in PHP_METHOD()
2305 RETURN_LONG(intern->current.pos); in PHP_METHOD()
2311 spl_dual_it_object *intern; in PHP_METHOD() local
2317 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2318 RETURN_LONG(intern->current.pos); in PHP_METHOD()
2321 static inline int spl_caching_it_valid(spl_dual_it_object *intern) in spl_caching_it_valid() argument
2323 return intern->u.caching.flags & CIT_VALID ? SUCCESS : FAILURE; in spl_caching_it_valid()
2326 static inline int spl_caching_it_has_next(spl_dual_it_object *intern) in spl_caching_it_has_next() argument
2328 return spl_dual_it_valid(intern); in spl_caching_it_has_next()
2331 static inline void spl_caching_it_next(spl_dual_it_object *intern) in spl_caching_it_next() argument
2333 if (spl_dual_it_fetch(intern, 1) == SUCCESS) { in spl_caching_it_next()
2334 intern->u.caching.flags |= CIT_VALID; in spl_caching_it_next()
2336 if (intern->u.caching.flags & CIT_FULL_CACHE) { in spl_caching_it_next()
2337 zval *key = &intern->current.key; in spl_caching_it_next()
2338 zval *data = &intern->current.data; in spl_caching_it_next()
2341 array_set_zval_key(Z_ARRVAL(intern->u.caching.zcache), key, data); in spl_caching_it_next()
2344 if (intern->dit_type == DIT_RecursiveCachingIterator) { in spl_caching_it_next()
2346 …zend_call_method_with_0_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "haschildren"… in spl_caching_it_next()
2349 if (intern->u.caching.flags & CIT_CATCH_GET_CHILD) { in spl_caching_it_next()
2356 …zend_call_method_with_0_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "getchildren"… in spl_caching_it_next()
2359 if (intern->u.caching.flags & CIT_CATCH_GET_CHILD) { in spl_caching_it_next()
2366 ZVAL_LONG(&zflags, intern->u.caching.flags & CIT_PUBLIC); in spl_caching_it_next()
2367 …spl_instantiate_arg_ex2(spl_ce_RecursiveCachingIterator, &intern->u.caching.zchildren, &zchildren,… in spl_caching_it_next()
2373 if (intern->u.caching.flags & CIT_CATCH_GET_CHILD) { in spl_caching_it_next()
2381 if (intern->u.caching.flags & (CIT_TOSTRING_USE_INNER|CIT_CALL_TOSTRING)) { in spl_caching_it_next()
2384 if (intern->u.caching.flags & CIT_TOSTRING_USE_INNER) { in spl_caching_it_next()
2385 ZVAL_COPY_VALUE(&intern->u.caching.zstr, &intern->inner.zobject); in spl_caching_it_next()
2387 ZVAL_COPY_VALUE(&intern->u.caching.zstr, &intern->current.data); in spl_caching_it_next()
2389 use_copy = zend_make_printable_zval(&intern->u.caching.zstr, &expr_copy); in spl_caching_it_next()
2391 ZVAL_COPY_VALUE(&intern->u.caching.zstr, &expr_copy); in spl_caching_it_next()
2393 Z_TRY_ADDREF(intern->u.caching.zstr); in spl_caching_it_next()
2396 spl_dual_it_next(intern, 0); in spl_caching_it_next()
2398 intern->u.caching.flags &= ~CIT_VALID; in spl_caching_it_next()
2402 static inline void spl_caching_it_rewind(spl_dual_it_object *intern) in spl_caching_it_rewind() argument
2404 spl_dual_it_rewind(intern); in spl_caching_it_rewind()
2405 zend_hash_clean(Z_ARRVAL(intern->u.caching.zcache)); in spl_caching_it_rewind()
2406 spl_caching_it_next(intern); in spl_caching_it_rewind()
2418 spl_dual_it_object *intern; in PHP_METHOD() local
2424 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2426 spl_caching_it_rewind(intern); 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 RETURN_BOOL(spl_caching_it_valid(intern) == SUCCESS); 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 spl_caching_it_next(intern); 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 RETURN_BOOL(spl_caching_it_has_next(intern) == SUCCESS); in PHP_METHOD()
2474 spl_dual_it_object *intern; in PHP_METHOD() local
2480 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2482 …if (!(intern->u.caching.flags & (CIT_CALL_TOSTRING|CIT_TOSTRING_USE_KEY|CIT_TOSTRING_USE_CURRENT|C… in PHP_METHOD()
2487 if (intern->u.caching.flags & CIT_TOSTRING_USE_KEY) { in PHP_METHOD()
2488 ZVAL_COPY(return_value, &intern->current.key); in PHP_METHOD()
2491 } else if (intern->u.caching.flags & CIT_TOSTRING_USE_CURRENT) { in PHP_METHOD()
2492 ZVAL_COPY(return_value, &intern->current.data); in PHP_METHOD()
2496 if (Z_TYPE(intern->u.caching.zstr) == IS_STRING) { in PHP_METHOD()
2497 RETURN_STR_COPY(Z_STR_P(&intern->u.caching.zstr)); in PHP_METHOD()
2506 spl_dual_it_object *intern; in PHP_METHOD() local
2514 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2516 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in PHP_METHOD()
2522 zend_symtable_update(Z_ARRVAL(intern->u.caching.zcache), key, value); in PHP_METHOD()
2529 spl_dual_it_object *intern; in PHP_METHOD() local
2537 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2539 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in PHP_METHOD()
2544 if ((value = zend_symtable_find(Z_ARRVAL(intern->u.caching.zcache), key)) == NULL) { in PHP_METHOD()
2556 spl_dual_it_object *intern; in PHP_METHOD() local
2559 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2565 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in PHP_METHOD()
2570 zend_symtable_del(Z_ARRVAL(intern->u.caching.zcache), key); in PHP_METHOD()
2577 spl_dual_it_object *intern; in PHP_METHOD() local
2584 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2586 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in PHP_METHOD()
2591 RETURN_BOOL(zend_symtable_exists(Z_ARRVAL(intern->u.caching.zcache), key)); in PHP_METHOD()
2598 spl_dual_it_object *intern; in PHP_METHOD() local
2604 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2606 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in PHP_METHOD()
2611 ZVAL_COPY(return_value, &intern->u.caching.zcache); in PHP_METHOD()
2618 spl_dual_it_object *intern; in PHP_METHOD() local
2624 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2626 RETURN_LONG(intern->u.caching.flags); in PHP_METHOD()
2633 spl_dual_it_object *intern; in PHP_METHOD() local
2640 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2648 if ((intern->u.caching.flags & CIT_CALL_TOSTRING) != 0 && (flags & CIT_CALL_TOSTRING) == 0) { in PHP_METHOD()
2652 …if ((intern->u.caching.flags & CIT_TOSTRING_USE_INNER) != 0 && (flags & CIT_TOSTRING_USE_INNER) ==… in PHP_METHOD()
2656 if ((flags & CIT_FULL_CACHE) != 0 && (intern->u.caching.flags & CIT_FULL_CACHE) == 0) { in PHP_METHOD()
2658 zend_hash_clean(Z_ARRVAL(intern->u.caching.zcache)); in PHP_METHOD()
2660 intern->u.caching.flags = (intern->u.caching.flags & ~CIT_PUBLIC) | (flags & CIT_PUBLIC); in PHP_METHOD()
2667 spl_dual_it_object *intern; in PHP_METHOD() local
2673 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2675 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in PHP_METHOD()
2680 RETURN_LONG(zend_hash_num_elements(Z_ARRVAL(intern->u.caching.zcache))); 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 RETURN_BOOL(Z_TYPE(intern->u.caching.zchildren) != IS_UNDEF); in PHP_METHOD()
2707 spl_dual_it_object *intern; in PHP_METHOD() local
2713 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2715 if (Z_TYPE(intern->u.caching.zchildren) != IS_UNDEF) { in PHP_METHOD()
2716 zval *value = &intern->u.caching.zchildren; in PHP_METHOD()
2748 spl_dual_it_object *intern; in PHP_METHOD() local
2754 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2755 RETURN_BOOL(intern->inner.iterator->funcs->valid(intern->inner.iterator) == SUCCESS); in PHP_METHOD()
2761 spl_dual_it_object *intern; in PHP_METHOD() local
2767 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2769 if (intern->inner.iterator->funcs->get_current_key) { in PHP_METHOD()
2770 intern->inner.iterator->funcs->get_current_key(intern->inner.iterator, return_value); in PHP_METHOD()
2779 spl_dual_it_object *intern; in PHP_METHOD() local
2786 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2787 data = intern->inner.iterator->funcs->get_current_data(intern->inner.iterator); in PHP_METHOD()
2796 spl_dual_it_object *intern; in PHP_METHOD() local
2802 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2803 intern->inner.iterator->funcs->move_forward(intern->inner.iterator); in PHP_METHOD()
2815 spl_dual_it_object *intern; in PHP_METHOD() local
2821 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2823 spl_dual_it_next(intern, 1); in PHP_METHOD()
2824 if (spl_dual_it_valid(intern) == SUCCESS) { in PHP_METHOD()
2825 spl_dual_it_fetch(intern, 0); in PHP_METHOD()
2827 spl_dual_it_rewind(intern); in PHP_METHOD()
2828 if (spl_dual_it_valid(intern) == SUCCESS) { in PHP_METHOD()
2829 spl_dual_it_fetch(intern, 0); in PHP_METHOD()
2880 int spl_append_it_next_iterator(spl_dual_it_object *intern) /* {{{*/ in spl_append_it_next_iterator() argument
2882 spl_dual_it_free(intern); in spl_append_it_next_iterator()
2884 if (!Z_ISUNDEF(intern->inner.zobject)) { in spl_append_it_next_iterator()
2885 zval_ptr_dtor(&intern->inner.zobject); in spl_append_it_next_iterator()
2886 ZVAL_UNDEF(&intern->inner.zobject); in spl_append_it_next_iterator()
2887 intern->inner.ce = NULL; in spl_append_it_next_iterator()
2888 if (intern->inner.iterator) { in spl_append_it_next_iterator()
2889 zend_iterator_dtor(intern->inner.iterator); in spl_append_it_next_iterator()
2890 intern->inner.iterator = NULL; in spl_append_it_next_iterator()
2893 if (intern->u.append.iterator->funcs->valid(intern->u.append.iterator) == SUCCESS) { in spl_append_it_next_iterator()
2896 it = intern->u.append.iterator->funcs->get_current_data(intern->u.append.iterator); in spl_append_it_next_iterator()
2897 ZVAL_COPY(&intern->inner.zobject, it); in spl_append_it_next_iterator()
2898 intern->inner.ce = Z_OBJCE_P(it); in spl_append_it_next_iterator()
2899 intern->inner.iterator = intern->inner.ce->get_iterator(intern->inner.ce, it, 0); in spl_append_it_next_iterator()
2900 spl_dual_it_rewind(intern); in spl_append_it_next_iterator()
2907 void spl_append_it_fetch(spl_dual_it_object *intern) /* {{{*/ in spl_append_it_fetch() argument
2909 while (spl_dual_it_valid(intern) != SUCCESS) { in spl_append_it_fetch()
2910 intern->u.append.iterator->funcs->move_forward(intern->u.append.iterator); in spl_append_it_fetch()
2911 if (spl_append_it_next_iterator(intern) != SUCCESS) { in spl_append_it_fetch()
2915 spl_dual_it_fetch(intern, 0); in spl_append_it_fetch()
2918 void spl_append_it_next(spl_dual_it_object *intern) /* {{{ */ in spl_append_it_next() argument
2920 if (spl_dual_it_valid(intern) == SUCCESS) { in spl_append_it_next()
2921 spl_dual_it_next(intern, 1); in spl_append_it_next()
2923 spl_append_it_fetch(intern); in spl_append_it_next()
2935 spl_dual_it_object *intern; in PHP_METHOD() local
2942 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2944 …if (intern->u.append.iterator->funcs->valid(intern->u.append.iterator) == SUCCESS && spl_dual_it_v… in PHP_METHOD()
2945 spl_array_iterator_append(&intern->u.append.zarrayit, it); in PHP_METHOD()
2946 intern->u.append.iterator->funcs->move_forward(intern->u.append.iterator); in PHP_METHOD()
2948 spl_array_iterator_append(&intern->u.append.zarrayit, it); in PHP_METHOD()
2951 if (!intern->inner.iterator || spl_dual_it_valid(intern) != SUCCESS) { in PHP_METHOD()
2952 if (intern->u.append.iterator->funcs->valid(intern->u.append.iterator) != SUCCESS) { in PHP_METHOD()
2953 intern->u.append.iterator->funcs->rewind(intern->u.append.iterator); in PHP_METHOD()
2956 spl_append_it_next_iterator(intern); in PHP_METHOD()
2957 } while (Z_OBJ(intern->inner.zobject) != Z_OBJ_P(it)); in PHP_METHOD()
2958 spl_append_it_fetch(intern); in PHP_METHOD()
2965 spl_dual_it_object *intern; in PHP_METHOD() local
2971 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2973 spl_dual_it_fetch(intern, 1); in PHP_METHOD()
2974 if (Z_TYPE(intern->current.data) != IS_UNDEF) { in PHP_METHOD()
2975 zval *value = &intern->current.data; in PHP_METHOD()
2986 spl_dual_it_object *intern; in PHP_METHOD() local
2992 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2994 intern->u.append.iterator->funcs->rewind(intern->u.append.iterator); in PHP_METHOD()
2995 if (spl_append_it_next_iterator(intern) == SUCCESS) { in PHP_METHOD()
2996 spl_append_it_fetch(intern); in PHP_METHOD()
3003 spl_dual_it_object *intern; in PHP_METHOD() local
3009 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
3011 RETURN_BOOL(Z_TYPE(intern->current.data) != IS_UNDEF); in PHP_METHOD()
3017 spl_dual_it_object *intern; in PHP_METHOD() local
3023 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
3025 spl_append_it_next(intern); in PHP_METHOD()
3031 spl_dual_it_object *intern; in PHP_METHOD() local
3037 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
3039 APPENDIT_CHECK_CTOR(intern); in PHP_METHOD()
3040 spl_array_iterator_key(&intern->u.append.zarrayit, return_value); in PHP_METHOD()
3046 spl_dual_it_object *intern; in PHP_METHOD() local
3053 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
3055 value = &intern->u.append.zarrayit; in PHP_METHOD()