Lines Matching refs:intern

113 	zend_object_iterator   intern;  member
160 spl_recursive_it_object *object = Z_SPLRECURSIVE_IT_P(&iter->intern.data); in spl_recursive_it_dtor()
176 zval_ptr_dtor(&iter->intern.data); in spl_recursive_it_dtor()
477 ZVAL_OBJ_COPY(&iterator->intern.data, Z_OBJ_P(zobject)); in spl_recursive_it_get_iterator()
478 iterator->intern.funcs = &spl_recursive_it_iterator_funcs; in spl_recursive_it_get_iterator()
503 spl_recursive_it_object *intern; in spl_recursive_it_it_construct() local
565 intern = Z_SPLRECURSIVE_IT_P(object); in spl_recursive_it_it_construct()
566 intern->iterators = emalloc(sizeof(spl_sub_iterator)); in spl_recursive_it_it_construct()
567 intern->level = 0; in spl_recursive_it_it_construct()
568 intern->mode = mode; in spl_recursive_it_it_construct()
569 intern->flags = (int)flags; in spl_recursive_it_it_construct()
570 intern->max_depth = -1; in spl_recursive_it_it_construct()
571 intern->in_iteration = 0; in spl_recursive_it_it_construct()
572 intern->ce = Z_OBJCE_P(object); in spl_recursive_it_it_construct()
574intern->beginIteration = zend_hash_str_find_ptr(&intern->ce->function_table, "beginiteration", siz… in spl_recursive_it_it_construct()
575 if (intern->beginIteration->common.scope == ce_base) { in spl_recursive_it_it_construct()
576 intern->beginIteration = NULL; in spl_recursive_it_it_construct()
578intern->endIteration = zend_hash_str_find_ptr(&intern->ce->function_table, "enditeration", sizeof(… in spl_recursive_it_it_construct()
579 if (intern->endIteration->common.scope == ce_base) { in spl_recursive_it_it_construct()
580 intern->endIteration = NULL; in spl_recursive_it_it_construct()
582intern->callHasChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "callhaschildren", s… in spl_recursive_it_it_construct()
583 if (intern->callHasChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
584 intern->callHasChildren = NULL; in spl_recursive_it_it_construct()
586intern->callGetChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "callgetchildren", s… in spl_recursive_it_it_construct()
587 if (intern->callGetChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
588 intern->callGetChildren = NULL; in spl_recursive_it_it_construct()
590intern->beginChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "beginchildren", sizeo… in spl_recursive_it_it_construct()
591 if (intern->beginChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
592 intern->beginChildren = NULL; in spl_recursive_it_it_construct()
594intern->endChildren = zend_hash_str_find_ptr(&intern->ce->function_table, "endchildren", sizeof("e… in spl_recursive_it_it_construct()
595 if (intern->endChildren->common.scope == ce_base) { in spl_recursive_it_it_construct()
596 intern->endChildren = NULL; in spl_recursive_it_it_construct()
598intern->nextElement = zend_hash_str_find_ptr(&intern->ce->function_table, "nextelement", sizeof("n… in spl_recursive_it_it_construct()
599 if (intern->nextElement->common.scope == ce_base) { in spl_recursive_it_it_construct()
600 intern->nextElement = NULL; in spl_recursive_it_it_construct()
604 intern->iterators[0].iterator = ce_iterator->get_iterator(ce_iterator, iterator, 0); in spl_recursive_it_it_construct()
605 ZVAL_OBJ(&intern->iterators[0].zobject, Z_OBJ_P(iterator)); in spl_recursive_it_it_construct()
606 intern->iterators[0].ce = ce_iterator; in spl_recursive_it_it_construct()
607 intern->iterators[0].state = RS_START; in spl_recursive_it_it_construct()
608 intern->iterators[0].haschildren = NULL; in spl_recursive_it_it_construct()
609 intern->iterators[0].getchildren = NULL; in spl_recursive_it_it_construct()
614 while (intern->level >= 0) { in spl_recursive_it_it_construct()
615 sub_iter = intern->iterators[intern->level].iterator; in spl_recursive_it_it_construct()
617 zval_ptr_dtor(&intern->iterators[intern->level--].zobject); in spl_recursive_it_it_construct()
619 efree(intern->iterators); in spl_recursive_it_it_construct()
620 intern->iterators = NULL; in spl_recursive_it_it_construct()
963 spl_recursive_it_object *intern; in spl_RecursiveIteratorIterator_new_ex() local
965 intern = zend_object_alloc(sizeof(spl_recursive_it_object), class_type); in spl_RecursiveIteratorIterator_new_ex()
968 intern->prefix[0] = ZSTR_EMPTY_ALLOC(); in spl_RecursiveIteratorIterator_new_ex()
969 intern->prefix[1] = zend_string_init("| ", 2, 0); in spl_RecursiveIteratorIterator_new_ex()
970 intern->prefix[2] = zend_string_init(" ", 2, 0); in spl_RecursiveIteratorIterator_new_ex()
971 intern->prefix[3] = zend_string_init("|-", 2, 0); in spl_RecursiveIteratorIterator_new_ex()
972 intern->prefix[4] = zend_string_init("\\-", 2, 0); in spl_RecursiveIteratorIterator_new_ex()
973 intern->prefix[5] = ZSTR_EMPTY_ALLOC(); in spl_RecursiveIteratorIterator_new_ex()
975 intern->postfix[0] = ZSTR_EMPTY_ALLOC(); in spl_RecursiveIteratorIterator_new_ex()
978 zend_object_std_init(&intern->std, class_type); in spl_RecursiveIteratorIterator_new_ex()
979 object_properties_init(&intern->std, class_type); in spl_RecursiveIteratorIterator_new_ex()
981 intern->std.handlers = &spl_handlers_rec_it_it; in spl_RecursiveIteratorIterator_new_ex()
982 return &intern->std; in spl_RecursiveIteratorIterator_new_ex()
1242 spl_dual_it_object *intern; in spl_dual_it_get_method() local
1244 intern = spl_dual_it_from_obj(*object); in spl_dual_it_get_method()
1247 if (!function_handler && intern->inner.ce) { in spl_dual_it_get_method()
1248 if ((function_handler = zend_hash_find_ptr(&intern->inner.ce->function_table, method)) == NULL) { in spl_dual_it_get_method()
1249 if (Z_OBJ_HT(intern->inner.zobject)->get_method) { in spl_dual_it_get_method()
1250 *object = Z_OBJ(intern->inner.zobject); in spl_dual_it_get_method()
1254 *object = Z_OBJ(intern->inner.zobject); in spl_dual_it_get_method()
1260 #define SPL_CHECK_CTOR(intern, classname) \ argument
1261 if (intern->dit_type == DIT_Unknown) { \
1268 #define APPENDIT_CHECK_CTOR(intern) SPL_CHECK_CTOR(intern, AppendIterator) argument
1270 static inline int spl_dual_it_fetch(spl_dual_it_object *intern, int check_more);
1287 spl_dual_it_object *intern; in spl_dual_it_construct() local
1292 intern = Z_SPLDUAL_IT_P(ZEND_THIS); in spl_dual_it_construct()
1294 if (intern->dit_type != DIT_Unknown) { in spl_dual_it_construct()
1301 intern->u.limit.offset = 0; /* start at beginning */ in spl_dual_it_construct()
1302 intern->u.limit.count = -1; /* get all */ in spl_dual_it_construct()
1303 …rse_parameters(ZEND_NUM_ARGS(), "O|ll", &zobject, ce_inner, &intern->u.limit.offset, &intern->u.li… in spl_dual_it_construct()
1306 if (intern->u.limit.offset < 0) { in spl_dual_it_construct()
1310 if (intern->u.limit.count < -1) { in spl_dual_it_construct()
1328 intern->u.caching.flags |= flags & CIT_PUBLIC; in spl_dual_it_construct()
1329 array_init(&intern->u.caching.zcache); in spl_dual_it_construct()
1366 intern->dit_type = DIT_AppendIterator; in spl_dual_it_construct()
1367 object_init_ex(&intern->u.append.zarrayit, spl_ce_ArrayIterator); in spl_dual_it_construct()
1368 …zend_call_method_with_0_params(Z_OBJ(intern->u.append.zarrayit), spl_ce_ArrayIterator, &spl_ce_Arr… in spl_dual_it_construct()
1369intern->u.append.iterator = spl_ce_ArrayIterator->get_iterator(spl_ce_ArrayIterator, &intern->u.ap… in spl_dual_it_construct()
1370 return intern; in spl_dual_it_construct()
1376 intern->u.regex.use_flags = ZEND_NUM_ARGS() >= 5; in spl_dual_it_construct()
1377 intern->u.regex.flags = 0; in spl_dual_it_construct()
1378 intern->u.regex.preg_flags = 0; in spl_dual_it_construct()
1379 …ND_NUM_ARGS(), "OS|lll", &zobject, ce_inner, &regex, &mode, &intern->u.regex.flags, &intern->u.reg… in spl_dual_it_construct()
1390 intern->u.regex.pce = pcre_get_compiled_regex_cache(regex); in spl_dual_it_construct()
1393 if (intern->u.regex.pce == NULL) { in spl_dual_it_construct()
1397 intern->u.regex.mode = mode; in spl_dual_it_construct()
1398 intern->u.regex.regex = zend_string_copy(regex); in spl_dual_it_construct()
1399 php_pcre_pce_incref(intern->u.regex.pce); in spl_dual_it_construct()
1413 intern->u.cbfilter = cfi; in spl_dual_it_construct()
1423 intern->dit_type = dit_type; in spl_dual_it_construct()
1427 ZVAL_OBJ(&intern->inner.zobject, Z_OBJ_P(zobject)); in spl_dual_it_construct()
1429 intern->inner.ce = dit_type == DIT_IteratorIterator ? ce : Z_OBJCE_P(zobject); in spl_dual_it_construct()
1430 intern->inner.object = Z_OBJ_P(zobject); in spl_dual_it_construct()
1431 intern->inner.iterator = intern->inner.ce->get_iterator(intern->inner.ce, zobject, 0); in spl_dual_it_construct()
1433 return intern; in spl_dual_it_construct()
1451 spl_dual_it_object *intern; in PHP_METHOD() local
1457 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1459 if (!Z_ISUNDEF(intern->inner.zobject)) { in PHP_METHOD()
1460 zval *value = &intern->inner.zobject; in PHP_METHOD()
1467 static inline void spl_dual_it_free(spl_dual_it_object *intern) in spl_dual_it_free() argument
1469 if (intern->inner.iterator && intern->inner.iterator->funcs->invalidate_current) { in spl_dual_it_free()
1470 intern->inner.iterator->funcs->invalidate_current(intern->inner.iterator); in spl_dual_it_free()
1472 if (Z_TYPE(intern->current.data) != IS_UNDEF) { in spl_dual_it_free()
1473 zval_ptr_dtor(&intern->current.data); in spl_dual_it_free()
1474 ZVAL_UNDEF(&intern->current.data); in spl_dual_it_free()
1476 if (Z_TYPE(intern->current.key) != IS_UNDEF) { in spl_dual_it_free()
1477 zval_ptr_dtor(&intern->current.key); in spl_dual_it_free()
1478 ZVAL_UNDEF(&intern->current.key); in spl_dual_it_free()
1480 if (intern->dit_type == DIT_CachingIterator || intern->dit_type == DIT_RecursiveCachingIterator) { in spl_dual_it_free()
1481 if (intern->u.caching.zstr) { in spl_dual_it_free()
1482 zend_string_release(intern->u.caching.zstr); in spl_dual_it_free()
1483 intern->u.caching.zstr = NULL; in spl_dual_it_free()
1485 if (Z_TYPE(intern->u.caching.zchildren) != IS_UNDEF) { in spl_dual_it_free()
1486 zval_ptr_dtor(&intern->u.caching.zchildren); in spl_dual_it_free()
1487 ZVAL_UNDEF(&intern->u.caching.zchildren); in spl_dual_it_free()
1492 static inline void spl_dual_it_rewind(spl_dual_it_object *intern) in spl_dual_it_rewind() argument
1494 spl_dual_it_free(intern); in spl_dual_it_rewind()
1495 intern->current.pos = 0; in spl_dual_it_rewind()
1496 if (intern->inner.iterator && intern->inner.iterator->funcs->rewind) { in spl_dual_it_rewind()
1497 intern->inner.iterator->funcs->rewind(intern->inner.iterator); in spl_dual_it_rewind()
1501 static inline int spl_dual_it_valid(spl_dual_it_object *intern) in spl_dual_it_valid() argument
1503 if (!intern->inner.iterator) { in spl_dual_it_valid()
1507 return intern->inner.iterator->funcs->valid(intern->inner.iterator); in spl_dual_it_valid()
1510 static inline int spl_dual_it_fetch(spl_dual_it_object *intern, int check_more) in spl_dual_it_fetch() argument
1514 spl_dual_it_free(intern); in spl_dual_it_fetch()
1515 if (!check_more || spl_dual_it_valid(intern) == SUCCESS) { in spl_dual_it_fetch()
1516 data = intern->inner.iterator->funcs->get_current_data(intern->inner.iterator); in spl_dual_it_fetch()
1518 ZVAL_COPY(&intern->current.data, data); in spl_dual_it_fetch()
1521 if (intern->inner.iterator->funcs->get_current_key) { in spl_dual_it_fetch()
1522 intern->inner.iterator->funcs->get_current_key(intern->inner.iterator, &intern->current.key); in spl_dual_it_fetch()
1524 zval_ptr_dtor(&intern->current.key); in spl_dual_it_fetch()
1525 ZVAL_UNDEF(&intern->current.key); in spl_dual_it_fetch()
1528 ZVAL_LONG(&intern->current.key, intern->current.pos); in spl_dual_it_fetch()
1535 static inline void spl_dual_it_next(spl_dual_it_object *intern, int do_free) in spl_dual_it_next() argument
1538 spl_dual_it_free(intern); in spl_dual_it_next()
1539 } else if (!intern->inner.iterator) { in spl_dual_it_next()
1543 intern->inner.iterator->funcs->move_forward(intern->inner.iterator); in spl_dual_it_next()
1544 intern->current.pos++; in spl_dual_it_next()
1550 spl_dual_it_object *intern; in PHP_METHOD() local
1556 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1558 spl_dual_it_rewind(intern); in PHP_METHOD()
1559 spl_dual_it_fetch(intern, 1); in PHP_METHOD()
1565 spl_dual_it_object *intern; in PHP_METHOD() local
1571 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1573 RETURN_BOOL(Z_TYPE(intern->current.data) != IS_UNDEF); in PHP_METHOD()
1579 spl_dual_it_object *intern; in PHP_METHOD() local
1585 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1587 if (Z_TYPE(intern->current.key) != IS_UNDEF) { in PHP_METHOD()
1588 RETURN_COPY_DEREF(&intern->current.key); in PHP_METHOD()
1597 spl_dual_it_object *intern; in PHP_METHOD() local
1603 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1605 if (Z_TYPE(intern->current.data) != IS_UNDEF) { in PHP_METHOD()
1606 RETURN_COPY_DEREF(&intern->current.data); in PHP_METHOD()
1615 spl_dual_it_object *intern; in PHP_METHOD() local
1621 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1623 spl_dual_it_next(intern, 1); in PHP_METHOD()
1624 spl_dual_it_fetch(intern, 1); in PHP_METHOD()
1627 static inline void spl_filter_it_fetch(zval *zthis, spl_dual_it_object *intern) in spl_filter_it_fetch() argument
1631 while (spl_dual_it_fetch(intern, 1) == SUCCESS) { in spl_filter_it_fetch()
1632 zend_call_method_with_0_params(Z_OBJ_P(zthis), intern->std.ce, NULL, "accept", &retval); in spl_filter_it_fetch()
1643 intern->inner.iterator->funcs->move_forward(intern->inner.iterator); in spl_filter_it_fetch()
1645 spl_dual_it_free(intern); in spl_filter_it_fetch()
1648 static inline void spl_filter_it_rewind(zval *zthis, spl_dual_it_object *intern) in spl_filter_it_rewind() argument
1650 spl_dual_it_rewind(intern); in spl_filter_it_rewind()
1651 spl_filter_it_fetch(zthis, intern); in spl_filter_it_rewind()
1654 static inline void spl_filter_it_next(zval *zthis, spl_dual_it_object *intern) in spl_filter_it_next() argument
1656 spl_dual_it_next(intern, 1); in spl_filter_it_next()
1657 spl_filter_it_fetch(zthis, intern); in spl_filter_it_next()
1663 spl_dual_it_object *intern; in PHP_METHOD() local
1669 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1670 spl_filter_it_rewind(ZEND_THIS, intern); in PHP_METHOD()
1676 spl_dual_it_object *intern; in PHP_METHOD() local
1682 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1683 spl_filter_it_next(ZEND_THIS, intern); in PHP_METHOD()
1702 spl_dual_it_object *intern; in PHP_METHOD() local
1708 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1710 …zend_call_method_with_0_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "haschildren"… in PHP_METHOD()
1716 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, "getchildren"… in PHP_METHOD()
1735 spl_dual_it_object *intern; in PHP_METHOD() local
1742 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1744 …zend_call_method_with_0_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "getchildren"… in PHP_METHOD()
1746 …spl_instantiate_arg_ex2(Z_OBJCE_P(ZEND_THIS), return_value, &retval, &intern->u.cbfilter->fci.func… in PHP_METHOD()
1765 spl_dual_it_object *intern; in PHP_METHOD() local
1771 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1773 if (Z_TYPE(intern->current.data) == IS_UNDEF || Z_TYPE(intern->current.key) == IS_UNDEF) { in PHP_METHOD()
1778 ZVAL_COPY_VALUE(&params[0], &intern->current.data); in PHP_METHOD()
1779 ZVAL_COPY_VALUE(&params[1], &intern->current.key); in PHP_METHOD()
1780 ZVAL_COPY_VALUE(&params[2], &intern->inner.zobject); in PHP_METHOD()
1782 zend_fcall_info *fci = &intern->u.cbfilter->fci; in PHP_METHOD()
1783 zend_fcall_info_cache *fcc = &intern->u.cbfilter->fcc; in PHP_METHOD()
1799 spl_dual_it_object *intern; in PHP_METHOD() local
1811 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1813 if (Z_TYPE(intern->current.data) == IS_UNDEF) { in PHP_METHOD()
1817 if (intern->u.regex.flags & REGIT_USE_KEY) { in PHP_METHOD()
1818 subject = zval_get_string(&intern->current.key); in PHP_METHOD()
1820 if (Z_TYPE(intern->current.data) == IS_ARRAY) { in PHP_METHOD()
1823 subject = zval_get_string(&intern->current.data); in PHP_METHOD()
1831 switch (intern->u.regex.mode) in PHP_METHOD()
1835 re = php_pcre_pce_re(intern->u.regex.pce); in PHP_METHOD()
1847 zval_ptr_dtor(&intern->current.data); in PHP_METHOD()
1848 ZVAL_UNDEF(&intern->current.data); in PHP_METHOD()
1849 php_pcre_match_impl(intern->u.regex.pce, subject, &zcount, in PHP_METHOD()
1850 …&intern->current.data, intern->u.regex.mode == REGIT_MODE_ALL_MATCHES, intern->u.regex.use_flags, in PHP_METHOD()
1855 zval_ptr_dtor(&intern->current.data); in PHP_METHOD()
1856 ZVAL_UNDEF(&intern->current.data); in PHP_METHOD()
1857 …php_pcre_split_impl(intern->u.regex.pce, subject, &intern->current.data, -1, intern->u.regex.preg_… in PHP_METHOD()
1858 count = zend_hash_num_elements(Z_ARRVAL(intern->current.data)); in PHP_METHOD()
1863 …zval *replacement = zend_read_property(intern->std.ce, Z_OBJ_P(ZEND_THIS), "replacement", sizeof("… in PHP_METHOD()
1870 …result = php_pcre_replace_impl(intern->u.regex.pce, subject, ZSTR_VAL(subject), ZSTR_LEN(subject),… in PHP_METHOD()
1872 if (intern->u.regex.flags & REGIT_USE_KEY) { in PHP_METHOD()
1873 zval_ptr_dtor(&intern->current.key); in PHP_METHOD()
1874 ZVAL_STR(&intern->current.key, result); in PHP_METHOD()
1876 zval_ptr_dtor(&intern->current.data); in PHP_METHOD()
1877 ZVAL_STR(&intern->current.data, result); in PHP_METHOD()
1885 if (intern->u.regex.flags & REGIT_INVERTED) { in PHP_METHOD()
1894 spl_dual_it_object *intern = Z_SPLDUAL_IT_P(ZEND_THIS); in PHP_METHOD() local
1900 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1902 RETURN_STR_COPY(intern->u.regex.regex); in PHP_METHOD()
1908 spl_dual_it_object *intern; in PHP_METHOD() local
1914 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1916 RETURN_LONG(intern->u.regex.mode); in PHP_METHOD()
1922 spl_dual_it_object *intern; in PHP_METHOD() local
1935 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1937 intern->u.regex.mode = mode; in PHP_METHOD()
1943 spl_dual_it_object *intern; in PHP_METHOD() local
1949 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1951 RETURN_LONG(intern->u.regex.flags); in PHP_METHOD()
1957 spl_dual_it_object *intern; in PHP_METHOD() local
1964 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1966 intern->u.regex.flags = flags; in PHP_METHOD()
1972 spl_dual_it_object *intern; in PHP_METHOD() local
1978 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1980 if (intern->u.regex.use_flags) { in PHP_METHOD()
1981 RETURN_LONG(intern->u.regex.preg_flags); in PHP_METHOD()
1990 spl_dual_it_object *intern; in PHP_METHOD() local
1997 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
1999 intern->u.regex.preg_flags = preg_flags; in PHP_METHOD()
2000 intern->u.regex.use_flags = 1; in PHP_METHOD()
2012 spl_dual_it_object *intern; in PHP_METHOD() local
2019 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2021 …zend_call_method_with_0_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "getchildren"… in PHP_METHOD()
2026 ZVAL_STR_COPY(&args[1], intern->u.regex.regex); in PHP_METHOD()
2027 ZVAL_LONG(&args[2], intern->u.regex.mode); in PHP_METHOD()
2028 ZVAL_LONG(&args[3], intern->u.regex.flags); in PHP_METHOD()
2029 ZVAL_LONG(&args[4], intern->u.regex.preg_flags); in PHP_METHOD()
2041 spl_dual_it_object *intern; in PHP_METHOD() local
2047 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2049 if (Z_TYPE(intern->current.data) == IS_UNDEF) { in PHP_METHOD()
2051 } else if (Z_TYPE(intern->current.data) == IS_ARRAY) { in PHP_METHOD()
2052 RETURN_BOOL(zend_hash_num_elements(Z_ARRVAL(intern->current.data)) > 0); in PHP_METHOD()
2162 spl_dual_it_object *intern; in spl_dual_it_new() local
2164 intern = zend_object_alloc(sizeof(spl_dual_it_object), class_type); in spl_dual_it_new()
2165 intern->dit_type = DIT_Unknown; in spl_dual_it_new()
2167 zend_object_std_init(&intern->std, class_type); in spl_dual_it_new()
2168 object_properties_init(&intern->std, class_type); in spl_dual_it_new()
2170 intern->std.handlers = &spl_handlers_dual_it; in spl_dual_it_new()
2171 return &intern->std; in spl_dual_it_new()
2175 static inline int spl_limit_it_valid(spl_dual_it_object *intern) in spl_limit_it_valid() argument
2178 …if (intern->u.limit.count != -1 && intern->current.pos >= intern->u.limit.offset + intern->u.limit… in spl_limit_it_valid()
2181 return spl_dual_it_valid(intern); in spl_limit_it_valid()
2185 static inline void spl_limit_it_seek(spl_dual_it_object *intern, zend_long pos) in spl_limit_it_seek() argument
2189 spl_dual_it_free(intern); in spl_limit_it_seek()
2190 if (pos < intern->u.limit.offset) { in spl_limit_it_seek()
2191 … seek to " ZEND_LONG_FMT " which is below the offset " ZEND_LONG_FMT, pos, intern->u.limit.offset); in spl_limit_it_seek()
2194 if (pos >= intern->u.limit.offset + intern->u.limit.count && intern->u.limit.count != -1) { in spl_limit_it_seek()
2195 …nd offset " ZEND_LONG_FMT " plus count " ZEND_LONG_FMT, pos, intern->u.limit.offset, intern->u.lim… in spl_limit_it_seek()
2198 if (pos != intern->current.pos && instanceof_function(intern->inner.ce, spl_ce_SeekableIterator)) { in spl_limit_it_seek()
2200 spl_dual_it_free(intern); in spl_limit_it_seek()
2201 …zend_call_method_with_1_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "seek", NULL,… in spl_limit_it_seek()
2203 intern->current.pos = pos; in spl_limit_it_seek()
2204 if (spl_limit_it_valid(intern) == SUCCESS) { in spl_limit_it_seek()
2205 spl_dual_it_fetch(intern, 0); in spl_limit_it_seek()
2211 if (pos < intern->current.pos) { in spl_limit_it_seek()
2212 spl_dual_it_rewind(intern); in spl_limit_it_seek()
2214 while (pos > intern->current.pos && spl_dual_it_valid(intern) == SUCCESS) { in spl_limit_it_seek()
2215 spl_dual_it_next(intern, 1); in spl_limit_it_seek()
2217 if (spl_dual_it_valid(intern) == SUCCESS) { in spl_limit_it_seek()
2218 spl_dual_it_fetch(intern, 1); in spl_limit_it_seek()
2232 spl_dual_it_object *intern; in PHP_METHOD() local
2238 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2239 spl_dual_it_rewind(intern); in PHP_METHOD()
2240 spl_limit_it_seek(intern, intern->u.limit.offset); in PHP_METHOD()
2246 spl_dual_it_object *intern; in PHP_METHOD() local
2252 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2255 …RETURN_BOOL((intern->u.limit.count == -1 || intern->current.pos < intern->u.limit.offset + intern-… in PHP_METHOD()
2261 spl_dual_it_object *intern; in PHP_METHOD() local
2267 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2269 spl_dual_it_next(intern, 1); in PHP_METHOD()
2270 …if (intern->u.limit.count == -1 || intern->current.pos < intern->u.limit.offset + intern->u.limit.… in PHP_METHOD()
2271 spl_dual_it_fetch(intern, 1); in PHP_METHOD()
2278 spl_dual_it_object *intern; in PHP_METHOD() local
2285 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2286 spl_limit_it_seek(intern, pos); in PHP_METHOD()
2287 RETURN_LONG(intern->current.pos); in PHP_METHOD()
2293 spl_dual_it_object *intern; in PHP_METHOD() local
2299 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2300 RETURN_LONG(intern->current.pos); in PHP_METHOD()
2303 static inline int spl_caching_it_valid(spl_dual_it_object *intern) in spl_caching_it_valid() argument
2305 return intern->u.caching.flags & CIT_VALID ? SUCCESS : FAILURE; in spl_caching_it_valid()
2308 static inline int spl_caching_it_has_next(spl_dual_it_object *intern) in spl_caching_it_has_next() argument
2310 return spl_dual_it_valid(intern); in spl_caching_it_has_next()
2313 static inline void spl_caching_it_next(spl_dual_it_object *intern) in spl_caching_it_next() argument
2315 if (spl_dual_it_fetch(intern, 1) == SUCCESS) { in spl_caching_it_next()
2316 intern->u.caching.flags |= CIT_VALID; in spl_caching_it_next()
2318 if (intern->u.caching.flags & CIT_FULL_CACHE) { in spl_caching_it_next()
2319 zval *key = &intern->current.key; in spl_caching_it_next()
2320 zval *data = &intern->current.data; in spl_caching_it_next()
2323 array_set_zval_key(Z_ARRVAL(intern->u.caching.zcache), key, data); in spl_caching_it_next()
2326 if (intern->dit_type == DIT_RecursiveCachingIterator) { in spl_caching_it_next()
2328 …zend_call_method_with_0_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "haschildren"… in spl_caching_it_next()
2331 if (intern->u.caching.flags & CIT_CATCH_GET_CHILD) { in spl_caching_it_next()
2338 …zend_call_method_with_0_params(Z_OBJ(intern->inner.zobject), intern->inner.ce, NULL, "getchildren"… in spl_caching_it_next()
2341 if (intern->u.caching.flags & CIT_CATCH_GET_CHILD) { in spl_caching_it_next()
2348 ZVAL_LONG(&zflags, intern->u.caching.flags & CIT_PUBLIC); in spl_caching_it_next()
2349 …spl_instantiate_arg_ex2(spl_ce_RecursiveCachingIterator, &intern->u.caching.zchildren, &zchildren,… in spl_caching_it_next()
2355 if (intern->u.caching.flags & CIT_CATCH_GET_CHILD) { in spl_caching_it_next()
2363 if (intern->u.caching.flags & (CIT_TOSTRING_USE_INNER|CIT_CALL_TOSTRING)) { in spl_caching_it_next()
2364 if (intern->u.caching.flags & CIT_TOSTRING_USE_INNER) { in spl_caching_it_next()
2365 intern->u.caching.zstr = zval_get_string(&intern->inner.zobject); in spl_caching_it_next()
2367 intern->u.caching.zstr = zval_get_string(&intern->current.data); in spl_caching_it_next()
2370 spl_dual_it_next(intern, 0); in spl_caching_it_next()
2372 intern->u.caching.flags &= ~CIT_VALID; in spl_caching_it_next()
2376 static inline void spl_caching_it_rewind(spl_dual_it_object *intern) in spl_caching_it_rewind() argument
2378 spl_dual_it_rewind(intern); in spl_caching_it_rewind()
2379 zend_hash_clean(Z_ARRVAL(intern->u.caching.zcache)); in spl_caching_it_rewind()
2380 spl_caching_it_next(intern); in spl_caching_it_rewind()
2392 spl_dual_it_object *intern; in PHP_METHOD() local
2398 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2400 spl_caching_it_rewind(intern); in PHP_METHOD()
2406 spl_dual_it_object *intern; in PHP_METHOD() local
2412 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2414 RETURN_BOOL(spl_caching_it_valid(intern) == SUCCESS); in PHP_METHOD()
2420 spl_dual_it_object *intern; in PHP_METHOD() local
2426 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2428 spl_caching_it_next(intern); in PHP_METHOD()
2434 spl_dual_it_object *intern; in PHP_METHOD() local
2440 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2442 RETURN_BOOL(spl_caching_it_has_next(intern) == SUCCESS); in PHP_METHOD()
2448 spl_dual_it_object *intern; in PHP_METHOD() local
2454 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2456 …if (!(intern->u.caching.flags & (CIT_CALL_TOSTRING|CIT_TOSTRING_USE_KEY|CIT_TOSTRING_USE_CURRENT|C… in PHP_METHOD()
2461 if (intern->u.caching.flags & CIT_TOSTRING_USE_KEY) { in PHP_METHOD()
2462 ZVAL_COPY(return_value, &intern->current.key); in PHP_METHOD()
2465 } else if (intern->u.caching.flags & CIT_TOSTRING_USE_CURRENT) { in PHP_METHOD()
2466 ZVAL_COPY(return_value, &intern->current.data); in PHP_METHOD()
2470 if (intern->u.caching.zstr) { in PHP_METHOD()
2471 RETURN_STR_COPY(intern->u.caching.zstr); in PHP_METHOD()
2480 spl_dual_it_object *intern; in PHP_METHOD() local
2488 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2490 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in PHP_METHOD()
2496 zend_symtable_update(Z_ARRVAL(intern->u.caching.zcache), key, value); in PHP_METHOD()
2503 spl_dual_it_object *intern; in PHP_METHOD() local
2511 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2513 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in PHP_METHOD()
2518 if ((value = zend_symtable_find(Z_ARRVAL(intern->u.caching.zcache), key)) == NULL) { in PHP_METHOD()
2530 spl_dual_it_object *intern; in PHP_METHOD() local
2533 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 zend_symtable_del(Z_ARRVAL(intern->u.caching.zcache), key); in PHP_METHOD()
2551 spl_dual_it_object *intern; in PHP_METHOD() local
2558 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2560 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in PHP_METHOD()
2565 RETURN_BOOL(zend_symtable_exists(Z_ARRVAL(intern->u.caching.zcache), key)); in PHP_METHOD()
2572 spl_dual_it_object *intern; in PHP_METHOD() local
2578 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2580 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in PHP_METHOD()
2585 ZVAL_COPY(return_value, &intern->u.caching.zcache); in PHP_METHOD()
2592 spl_dual_it_object *intern; in PHP_METHOD() local
2598 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2600 RETURN_LONG(intern->u.caching.flags); in PHP_METHOD()
2607 spl_dual_it_object *intern; in PHP_METHOD() local
2614 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2622 if ((intern->u.caching.flags & CIT_CALL_TOSTRING) != 0 && (flags & CIT_CALL_TOSTRING) == 0) { in PHP_METHOD()
2626 …if ((intern->u.caching.flags & CIT_TOSTRING_USE_INNER) != 0 && (flags & CIT_TOSTRING_USE_INNER) ==… in PHP_METHOD()
2630 if ((flags & CIT_FULL_CACHE) != 0 && (intern->u.caching.flags & CIT_FULL_CACHE) == 0) { in PHP_METHOD()
2632 zend_hash_clean(Z_ARRVAL(intern->u.caching.zcache)); in PHP_METHOD()
2634 intern->u.caching.flags = (intern->u.caching.flags & ~CIT_PUBLIC) | (flags & CIT_PUBLIC); in PHP_METHOD()
2641 spl_dual_it_object *intern; in PHP_METHOD() local
2647 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2649 if (!(intern->u.caching.flags & CIT_FULL_CACHE)) { in PHP_METHOD()
2654 RETURN_LONG(zend_hash_num_elements(Z_ARRVAL(intern->u.caching.zcache))); 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 RETURN_BOOL(Z_TYPE(intern->u.caching.zchildren) != IS_UNDEF); in PHP_METHOD()
2681 spl_dual_it_object *intern; in PHP_METHOD() local
2687 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2689 if (Z_TYPE(intern->u.caching.zchildren) != IS_UNDEF) { in PHP_METHOD()
2690 zval *value = &intern->u.caching.zchildren; in PHP_METHOD()
2722 spl_dual_it_object *intern; in PHP_METHOD() local
2728 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2729 RETURN_BOOL(intern->inner.iterator->funcs->valid(intern->inner.iterator) == SUCCESS); in PHP_METHOD()
2735 spl_dual_it_object *intern; in PHP_METHOD() local
2741 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2743 if (intern->inner.iterator->funcs->get_current_key) { in PHP_METHOD()
2744 intern->inner.iterator->funcs->get_current_key(intern->inner.iterator, return_value); in PHP_METHOD()
2753 spl_dual_it_object *intern; in PHP_METHOD() local
2760 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2761 data = intern->inner.iterator->funcs->get_current_data(intern->inner.iterator); in PHP_METHOD()
2770 spl_dual_it_object *intern; in PHP_METHOD() local
2776 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2777 intern->inner.iterator->funcs->move_forward(intern->inner.iterator); in PHP_METHOD()
2789 spl_dual_it_object *intern; in PHP_METHOD() local
2795 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2797 spl_dual_it_next(intern, 1); in PHP_METHOD()
2798 if (spl_dual_it_valid(intern) == SUCCESS) { in PHP_METHOD()
2799 spl_dual_it_fetch(intern, 0); in PHP_METHOD()
2801 spl_dual_it_rewind(intern); in PHP_METHOD()
2802 if (spl_dual_it_valid(intern) == SUCCESS) { in PHP_METHOD()
2803 spl_dual_it_fetch(intern, 0); in PHP_METHOD()
2854 int spl_append_it_next_iterator(spl_dual_it_object *intern) /* {{{*/ in spl_append_it_next_iterator() argument
2856 spl_dual_it_free(intern); in spl_append_it_next_iterator()
2858 if (!Z_ISUNDEF(intern->inner.zobject)) { in spl_append_it_next_iterator()
2859 zval_ptr_dtor(&intern->inner.zobject); in spl_append_it_next_iterator()
2860 ZVAL_UNDEF(&intern->inner.zobject); in spl_append_it_next_iterator()
2861 intern->inner.ce = NULL; in spl_append_it_next_iterator()
2862 if (intern->inner.iterator) { in spl_append_it_next_iterator()
2863 zend_iterator_dtor(intern->inner.iterator); in spl_append_it_next_iterator()
2864 intern->inner.iterator = NULL; in spl_append_it_next_iterator()
2867 if (intern->u.append.iterator->funcs->valid(intern->u.append.iterator) == SUCCESS) { in spl_append_it_next_iterator()
2870 it = intern->u.append.iterator->funcs->get_current_data(intern->u.append.iterator); in spl_append_it_next_iterator()
2871 ZVAL_COPY(&intern->inner.zobject, it); in spl_append_it_next_iterator()
2872 intern->inner.ce = Z_OBJCE_P(it); in spl_append_it_next_iterator()
2873 intern->inner.iterator = intern->inner.ce->get_iterator(intern->inner.ce, it, 0); in spl_append_it_next_iterator()
2874 spl_dual_it_rewind(intern); in spl_append_it_next_iterator()
2881 void spl_append_it_fetch(spl_dual_it_object *intern) /* {{{*/ in spl_append_it_fetch() argument
2883 while (spl_dual_it_valid(intern) != SUCCESS) { in spl_append_it_fetch()
2884 intern->u.append.iterator->funcs->move_forward(intern->u.append.iterator); in spl_append_it_fetch()
2885 if (spl_append_it_next_iterator(intern) != SUCCESS) { in spl_append_it_fetch()
2889 spl_dual_it_fetch(intern, 0); in spl_append_it_fetch()
2892 void spl_append_it_next(spl_dual_it_object *intern) /* {{{ */ in spl_append_it_next() argument
2894 if (spl_dual_it_valid(intern) == SUCCESS) { in spl_append_it_next()
2895 spl_dual_it_next(intern, 1); in spl_append_it_next()
2897 spl_append_it_fetch(intern); in spl_append_it_next()
2909 spl_dual_it_object *intern; in PHP_METHOD() local
2916 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2918 …if (intern->u.append.iterator->funcs->valid(intern->u.append.iterator) == SUCCESS && spl_dual_it_v… in PHP_METHOD()
2919 spl_array_iterator_append(&intern->u.append.zarrayit, it); in PHP_METHOD()
2920 intern->u.append.iterator->funcs->move_forward(intern->u.append.iterator); in PHP_METHOD()
2922 spl_array_iterator_append(&intern->u.append.zarrayit, it); in PHP_METHOD()
2925 if (!intern->inner.iterator || spl_dual_it_valid(intern) != SUCCESS) { in PHP_METHOD()
2926 if (intern->u.append.iterator->funcs->valid(intern->u.append.iterator) != SUCCESS) { in PHP_METHOD()
2927 intern->u.append.iterator->funcs->rewind(intern->u.append.iterator); in PHP_METHOD()
2930 spl_append_it_next_iterator(intern); in PHP_METHOD()
2931 } while (Z_OBJ(intern->inner.zobject) != Z_OBJ_P(it)); in PHP_METHOD()
2932 spl_append_it_fetch(intern); in PHP_METHOD()
2939 spl_dual_it_object *intern; in PHP_METHOD() local
2945 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2947 spl_dual_it_fetch(intern, 1); in PHP_METHOD()
2948 if (Z_TYPE(intern->current.data) != IS_UNDEF) { in PHP_METHOD()
2949 RETURN_COPY_DEREF(&intern->current.data); in PHP_METHOD()
2958 spl_dual_it_object *intern; in PHP_METHOD() local
2964 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2966 intern->u.append.iterator->funcs->rewind(intern->u.append.iterator); in PHP_METHOD()
2967 if (spl_append_it_next_iterator(intern) == SUCCESS) { in PHP_METHOD()
2968 spl_append_it_fetch(intern); in PHP_METHOD()
2975 spl_dual_it_object *intern; in PHP_METHOD() local
2981 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2983 RETURN_BOOL(Z_TYPE(intern->current.data) != IS_UNDEF); in PHP_METHOD()
2989 spl_dual_it_object *intern; in PHP_METHOD() local
2995 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
2997 spl_append_it_next(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 APPENDIT_CHECK_CTOR(intern); in PHP_METHOD()
3012 spl_array_iterator_key(&intern->u.append.zarrayit, return_value); in PHP_METHOD()
3018 spl_dual_it_object *intern; in PHP_METHOD() local
3025 SPL_FETCH_AND_CHECK_DUAL_IT(intern, ZEND_THIS); in PHP_METHOD()
3027 value = &intern->u.append.zarrayit; in PHP_METHOD()