colder Thu May 15 17:05:20 2008 UTC Modified files: /php-src/ext/spl spl_heap.c /php-src/ext/spl/tests pqueue_001.phpt Log: Implement SplPriorityQueue::getExtractFlags() http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_heap.c?r1=1.3&r2=1.4&diff_format=u Index: php-src/ext/spl/spl_heap.c diff -u php-src/ext/spl/spl_heap.c:1.3 php-src/ext/spl/spl_heap.c:1.4 --- php-src/ext/spl/spl_heap.c:1.3 Fri Feb 29 09:25:30 2008 +++ php-src/ext/spl/spl_heap.c Thu May 15 17:05:20 2008 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_heap.c,v 1.3 2008/02/29 09:25:30 colder Exp $ */ +/* $Id: spl_heap.c,v 1.4 2008/05/15 17:05:20 colder Exp $ */ #ifdef HAVE_CONFIG_H # include "config.h" @@ -737,7 +737,7 @@ } /* }}} */ -/* {{{ proto int SplPriorityQueue::setIteratorMode($flags) U +/* {{{ proto int SplPriorityQueue::setExtractFlags($flags) U Set the flags of extraction*/ SPL_METHOD(SplPriorityQueue, setExtractFlags) { @@ -755,6 +755,22 @@ RETURN_LONG(intern->flags); } /* }}} */ +/* {{{ proto int SplPriorityQueue::getExtractFlags($flags) U + Set the flags of extraction*/ +SPL_METHOD(SplPriorityQueue, getExtractFlags) +{ + long value; + spl_heap_object *intern; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "") == FAILURE) { + return; + } + + intern = (spl_heap_object*)zend_object_store_get_object(getThis() TSRMLS_CC); + + RETURN_LONG(intern->flags & SPL_PQUEUE_EXTR_MASK;); +} +/* }}} */ /* {{{ proto int SplHeap::recoverFromCorruption() U Recover from a corrupted state*/ @@ -1119,6 +1135,7 @@ SPL_ME(SplPriorityQueue, compare, arginfo_heap_compare, ZEND_ACC_PUBLIC) SPL_ME(SplPriorityQueue, insert, arginfo_pqueue_insert, ZEND_ACC_PUBLIC) SPL_ME(SplPriorityQueue, setExtractFlags, arginfo_pqueue_setflags, ZEND_ACC_PUBLIC) + SPL_ME(SplPriorityQueue, getExtractFlags, NULL, ZEND_ACC_PUBLIC) SPL_ME(SplPriorityQueue, top, NULL, ZEND_ACC_PUBLIC) SPL_ME(SplPriorityQueue, extract, NULL, ZEND_ACC_PUBLIC) SPL_ME(SplHeap, count, NULL, ZEND_ACC_PUBLIC) http://cvs.php.net/viewvc.cgi/php-src/ext/spl/tests/pqueue_001.phpt?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/spl/tests/pqueue_001.phpt diff -u php-src/ext/spl/tests/pqueue_001.phpt:1.1 php-src/ext/spl/tests/pqueue_001.phpt:1.2 --- php-src/ext/spl/tests/pqueue_001.phpt:1.1 Mon Feb 25 23:36:36 2008 +++ php-src/ext/spl/tests/pqueue_001.phpt Thu May 15 17:05:20 2008 @@ -5,6 +5,7 @@ --FILE-- <?php $pq = new SplPriorityQueue(); +echo $pq->getExtractFlags()."\n"; // errors try { @@ -25,6 +26,7 @@ $pq1 = new SplPriorityQueue(); $pq1->setExtractFlags(SplPriorityQueue::EXTR_BOTH); +echo $pq1->getExtractFlags()."\n"; $pq1->insert("a", 1); $pq1->insert("b", 2); @@ -38,6 +40,7 @@ $pq2 = new SplPriorityQueue(); $pq2->setExtractFlags(SplPriorityQueue::EXTR_DATA); +echo $pq2->getExtractFlags()."\n"; $pq2->insert("a", 1); $pq2->insert("b", 2); @@ -51,6 +54,7 @@ $pq3 = new SplPriorityQueue(); $pq3->setExtractFlags(SplPriorityQueue::EXTR_PRIORITY); +echo $pq3->getExtractFlags()."\n"; $pq3->insert("a", 1); $pq3->insert("b", 2); @@ -64,11 +68,13 @@ ===DONE=== <?php exit(0); ?> --EXPECTF-- +1 Exception: Can't extract from an empty heap 3=>b 2=>a 1=>c EXTR_BOTH +3 3=>Array ( [data] => b @@ -88,10 +94,12 @@ ) EXTR_DATA +1 3=>b 2=>a 1=>c EXTR_PRIORITY +2 3=>2 2=>1 1=>0
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php