]> granicus.if.org Git - php/commitdiff
- Provide const RegExIterator::USE_KEY and actually use it in the test
authorMarcus Boerger <helly@php.net>
Tue, 11 Oct 2005 00:18:32 +0000 (00:18 +0000)
committerMarcus Boerger <helly@php.net>
Tue, 11 Oct 2005 00:18:32 +0000 (00:18 +0000)
ext/spl/spl_iterators.c
ext/spl/spl_iterators.h
ext/spl/tests/iterator_029.phpt

index da9cfc4b9a459c15b353134c5dd3b2eee5056c38..a3d3623afab5f2e47c0f6b2a6202575d5be86729 100755 (executable)
@@ -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
index 0868373592892ccf7f888bb00f44f9e5d8e68667..1f3e135734edab771720668096628794526a8250 100755 (executable)
@@ -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 {
index b1643a5e3fd1246cc66f2dd723c47da3bc09502c..b853f830e4853106a8f43c717cd70db2f102f486 100755 (executable)
@@ -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===