From: Marcus Boerger <helly@php.net> Date: Tue, 11 Oct 2005 00:18:32 +0000 (+0000) Subject: - Provide const RegExIterator::USE_KEY and actually use it in the test X-Git-Tag: RELEASE_0_9_1~152 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=68f663eaf835976d2346ffd115bd01824af67fd8;p=php - Provide const RegExIterator::USE_KEY and actually use it in the test --- diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c index da9cfc4b9a..a3d3623afa 100755 --- a/ext/spl/spl_iterators.c +++ b/ext/spl/spl_iterators.c @@ -1268,7 +1268,7 @@ SPL_METHOD(RegExIterator, accept) intern = (spl_dual_it_object*)zend_object_store_get_object(getThis() TSRMLS_CC); - if (intern->u.regex.flags) { + if (intern->u.regex.flags & REGIT_USE_KEY) { if (intern->current.key_type == HASH_KEY_IS_LONG) { subject_len = snprintf(tmp, sizeof(tmp), "%ld", intern->current.int_key); subject = &tmp[0]; @@ -2434,6 +2434,7 @@ PHP_MINIT_FUNCTION(spl_iterators) REGISTER_SPL_SUB_CLASS_EX(InfiniteIterator, IteratorIterator, spl_dual_it_new, spl_funcs_InfiniteIterator); #if HAVE_PCRE || HAVE_BUNDLED_PCRE REGISTER_SPL_SUB_CLASS_EX(RegExIterator, FilterIterator, spl_dual_it_new, spl_funcs_RegExIterator); + REGISTER_SPL_CLASS_CONST_LONG(RegExIterator, "USE_KEY", REGIT_USE_KEY); REGISTER_SPL_SUB_CLASS_EX(RecursiveRegExIterator, RegExIterator, spl_dual_it_new, spl_funcs_RecursiveRegExIterator); REGISTER_SPL_IMPLEMENTS(RecursiveRegExIterator, RecursiveIterator); #else diff --git a/ext/spl/spl_iterators.h b/ext/spl/spl_iterators.h index 0868373592..1f3e135734 100755 --- a/ext/spl/spl_iterators.h +++ b/ext/spl/spl_iterators.h @@ -85,6 +85,11 @@ enum { CIT_HAS_CHILDREN = 0x00020000 }; +enum { + /* public */ + REGIT_USE_KEY = 0x00000001, +}; + typedef struct _spl_dual_it_object { zend_object std; struct { diff --git a/ext/spl/tests/iterator_029.phpt b/ext/spl/tests/iterator_029.phpt index b1643a5e3f..b853f830e4 100755 --- a/ext/spl/tests/iterator_029.phpt +++ b/ext/spl/tests/iterator_029.phpt @@ -5,7 +5,7 @@ SPL: RegExIterator $ar = array(0, "123", 123, 22 => "abc", "a2b", 22, "a2d" => 7, 42); -foreach(new RegExIterator(new ArrayIterator($ar), "/2/", 0) as $k => $v) +foreach(new RegExIterator(new ArrayIterator($ar), "/2/") as $k => $v) { echo "$k=>$v\n"; } @@ -14,7 +14,7 @@ foreach(new RegExIterator(new ArrayIterator($ar), "/2/", 0) as $k => $v) ===KEY=== <?php -foreach(new RegExIterator(new ArrayIterator($ar), "/2/", 0) as $k => $v) +foreach(new RegExIterator(new ArrayIterator($ar), "/2/", RegExIterator::USE_KEY) as $k => $v) { echo "$k=>$v\n"; } @@ -29,9 +29,10 @@ foreach(new RegExIterator(new ArrayIterator($ar), "/2/", 0) as $k => $v) 24=>22 25=>42 ===KEY=== -1=>123 2=>123 +22=>abc 23=>a2b 24=>22 +a2d=>7 25=>42 ===DONE===